小白学冈萨雷斯数字图像处理——第三章:亮度变换与空间滤波

此博客旨在记录自学过程,文中代码均为MATLAB。

1.亮度变换函数

1.1函数imadjust

g = imadjust(f,[low_in high_in],[low_out high_out],gamma)

函数作用为:将f中low_in到high_in 之间的值映射到 g中low_out 到 high_out之间,其中,输入图像应为uint8 uint16 double类。gamma为映射后的曲线类型。gamma<1 斜率递减曲线 gamma=1 直线 gamma>1 斜率递增曲线

函数输出的值均为0到1之间。若为uint8类,则255恢复原值;若为uint16,则65535恢复原值。

应用

(1)亮度翻转

g = imadjust(f,[0 1],[1,0])

在这里插入图片描述

(2)突出感兴趣带

g = imadjust(f,[0.5,0.75],[0,1])

将0.5到0.75区间映射到整个区间。

1.2 对数和对比度拉伸变换

g = c*log(1 + double(f))

应用

(1)压缩动态范围

g = im2uint8(mat2gray(log(1 + double(f)))))

傅里叶频谱范围为[0 10^6]或者更高。当其显示于已经线性缩放至8比特的监视器上时,高值部分占优,从而导致频谱中低亮度值的可视细节丢失。通过计算对数,10的六次方左右的动态范围会降至14左右,便于操作。

在这里插入图片描述

2. 直方图处理与函数绘图

2.1 生成并绘制图像的直方图

常用:imhist

h = imhist(f,b)
imshow(h)

#或者直接 imhist(f,b)

b为灰度级数,默认为256.(uint8有256 uint16有65536)

其他常用:

bar(horz,v,width) #绘制条形图
stem(horz,h1,'fill') #绘制散点图
plot() 

在这里插入图片描述

2.2 直方图均衡化(增强对比度)

g = histeq(f)
imhist(g)

在这里插入图片描述

3.3 直方图规定化

g = histeq(f,hgram) #hgram为给定直方图
imhist(g)

3.空间滤波

3.1 线性空间滤波

矩阵卷积运算:https://blog.csdn.net/qq_32846595/article/details/79053277

此处参考 @寰宇的行者

g = imfilter(f,w,'filtering_mode','boundary_options','size_options')

f是输入图像,w是滤波掩模(模板矩阵),filtering_mode为滤波类型(相关:‘corr’ 卷积:‘conv’),boundary_options为边界选项(P,replicate,symmetric,circular 详见MATLAB工具箱),size_options(大小选项 full:与被扩展图像大小相同 same:与输入图像大小相同)

3.2 非线性空间滤波

处理方法同线性滤波(沿中心移位)

处理函数:nlfilter()与colfilt() 见matlab文件

4.常用滤波器函数

4.1 线性空间滤波器

用如下代码来生成滤波掩模w的函数fspecial()

w = fspecial('type',parameters)

type表示滤波器类型,parameters进一步定义了指定滤波器(详见MATLAB help)

4.2 非线性空间滤波器

最常用函数如下,该函数生成一个排序滤波器

g = ordfilt2(f,order,domain)

最常用的排序滤波器为中值滤波器,生成函数如下:

g = ordfilt2(f,median(1:m*n),ones(m,n))

其中,median计算1:m*n的中值。

实际应用中,提供了一个二维中值滤波器

g = medfilt2(f,{m,n},padopt)

[m,n]定义一个邻域,中值就在该邻域计算;padopt指定了三个可能的边界填充选项:
‘zeros’(默认值)
‘symmetric’(f按照镜像翻转的方式对称地沿其边界扩展。默认方式可能会产生黑色边界效应,即边界出现黑色斑点,用此选项可能能消除。)
‘indexed’(若f是double类,则用1填充,否则用0填充)

猜你喜欢

转载自blog.csdn.net/weixin_44487378/article/details/105999025