1.对数变换
图像的对数变换主要的作用是压缩动态范围,原因是对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率较小,所以图像经过对数变换后,较暗区域的对比度将有所提升,所以就可以增强图像的暗部细节。
其中, c c c是一个常数, f f f是浮点数。对数变换可以将图像的低灰度值部分扩展,显示出低灰度部分更多的细节,将其高灰度值部分压缩,减少高灰度值部分的细节,从而达到图像偏暗的图像增强的目的,其逆变换可以强调高灰度。底数越大,对低灰度部分的强调就越强,对高灰度部分的压缩也就越强。相反的,如果想强调高灰度部分,则用反对数函数就可以了。
MATLAB代码实现:
f=imread('lowlight_2.jpg');
g=im2uint8(mat2gray(log(1+double(f)))); %灰度变化
%画图
subplot(1,2,1),imshow(f);title('原图');
subplot(1,2,2),imshow(g);title('对数变换后的图像');
为了使压缩的值出现在显示的完整范围,使用函数mat2gray会将值限定再[0,1]范围内,使用函数im2uint8会将值限定在[0,225]范围内,把图像转化为uint8类。
可以看出,图像对低灰度值部分扩展,增强了低灰度部分,显示出低灰度部分更多的细节。
2.伽马变换
伽马变换主要用于图像的校正,将漂白的图片或者是过黑的图片,进行修正。伽马变换也常常用于显示屏的校正,这是一个非常常用的变换。与对数变换相似,Gamma变换属于非线性操作,非线性变换的主要目的是通过灰度值映射增强目标域数据分布,达到对比度增强的目的。Gamma变换可以根据参数变换的更加灵活,其灰度变换函数定义如下:
MATLAB代码利用Gamma函数实现:
f = imread('office_1.jpg');
g1=imadjust(f,[],[],1);
g2=imadjust(f,[],[],0.3);
g3=imadjust(f,[],[],2);
subplot(2,2,1),imshow(f);title('原图');
subplot(2,2,2),imshow(g1);title('gamma=1');
subplot(2,2,3),imshow(g2);title('gamma=0.3');
subplot(2,2,4),imshow(g3);title('gamma=2');
当
g
a
m
m
a
=
1
gamma = 1
gamma=1 的时候,输出值等于输入值,只会有原图的显示效果
当
g
a
m
m
a
>
1
gamma >1
gamma>1 的时候,低灰度区域的动态值变小,高灰度区域的动态值变大,降低了低灰度区域图像的对比度,提高了高灰度值区域图像的对比度, 图像整体变暗。
当
g
a
m
m
a
<
1
gamma <1
gamma<1 的时候,低灰度区域的动态值变大,进而图像对比度增强,高灰度值区域,动态值变小,图像整体变亮。文章来源:https://www.toymoban.com/news/detail-465367.html
参考链接:
https://blog.csdn.net/m0_56838271/article/details/127462598文章来源地址https://www.toymoban.com/news/detail-465367.html
到了这里,关于数字图像处理中对数变换与Gamma变换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!