数字图像处理-亮度变换与空间滤波

亮度变换函数

函数imadjust

imadjust是对灰度图像进行亮度变换的基本IPT工具,语法为
g = imadjust(f, [low_in high_in], [low_out high_out], gamma)
此函数将low_in至high_in之间的值映射带low_out至high_out,而在low_in或high_in之外的值都被直接变换为low_out或high_out。输入应为unit8、unit16或double类,输出与输入相同。除图像f外,此函数的所有输入均指定在[0,1]范围。 若high_out小于low_out,则输出亮度会反转。
gamma小于1,则映射被加权至更高(更亮)的输出值,反之亦反。
一幅图像的负片也可以使用以下函数得到,
g = imcomplement(f)

对数和对比度拉升变换

对数变换g = c * log(1 + double(f)) 的主要应用是压缩动态范围
对比度拉伸变换函数g = 1./ (1 + (m ./ (double(f) + eps)) .^ E) 其中E控制图像斜率。
数字图像处理-亮度变换与空间滤波_第1张图片

亮度标度的M函数

gscale.
其语法为
g = gscale(f, method, low, high)

直方图处理与函数绘图

生成并绘制图像的直方图

使用h = imhist(f, b) 函数是最简单的方法,其中f是图像,b是平均分的竖条个数。对于uint8默认为256个。
数字图像处理-亮度变换与空间滤波_第2张图片
另外还有函数bar(horz, v, width)
其中v是一个行向量,包含将被绘制的点,horz是一个与v有着相同维数的向量,它包含水平标度值的增量,width是一个值在0和1之间的数,用来控制竖条的宽度。
数字图像处理-亮度变换与空间滤波_第3张图片

直方图均衡化

对于在[0,1]内的连续灰度级,其概率密度函数是均匀的。灰度级均衡化处理的最终结果是一幅扩展了动态范围的图像,其具有较高的对比度。 而在使用直方图均衡化处理离散灰度级时,由于其离散性,处理后的直方图将不再均匀。
F = histeq(f)
直方图均衡化生成了自适应的变换函数,然而一幅图像的变换函数一旦计算完毕就将不再改动,除非直方图有变动。

直方图匹配

生成具有指定直方图的图像的方法叫做直方图匹配(拿着直方图找图像)。
使用函数histeq的如下形式实现直方图匹配
g = histeq(f, hspec)
其中f为输入图像,hspec为指定的直方图(一个由指定值构成的行向量),g为输出图像,其直方图近似于指定的直方图hspec。

线性空间滤波

线性空间滤波函数
g = imfilter(f, w, filtering_mode, boundary_options, size_options)
f是输入图像,w为滤波掩模,g为滤波结果。filtering_mode用于指定在滤波过程中是使用“相关”(‘corr’)还是“卷积”(‘conv’)。boundary_options用于处理边界充零问题,具体见图,边界的大小由滤波器的大小决定。size_options可以是’same’或’full’。
数字图像处理-亮度变换与空间滤波_第4张图片对旋转过的滤波器执行相关操作与对原始滤波器执行卷积操作的结果是相同的。旋转的语法是rot90(w,2) 可以将w旋转180度。
在滤波时,图像中的每个元素使用双精度浮点算术进行计算,但是imfilter函数仍会返回与原图相同的类。因此在使用整形数据的时候要注意截断和舍入。
解决办法可以是对掩模系数归一化,使其和为1,或者使用double类的数据作为输入。

非线性空间滤波

函数有nlfilter和colfilt
g = colfilt(f, [m n], ‘sliding’, @fun, parameters)
m和n也是滤波区域的维数,'sliding’表示处理过程是在输入图像f中逐个像素地滑动该m * n区域,@fun引用一个函数,parameters表示fun可能需要的参数。fun的执行结果为1 * MN的向量v。
coltilt函数应用前 f 必须经过填充,对于二维函数,使用padarray函数
== fp = padarray(f, [r c], method, direction)==
r和c用于给出填充 f 的行数和列数,method和direction的意义见表。method默认用0填充。
数字图像处理-亮度变换与空间滤波_第5张图片大小为m*n的邻域中的几何平均是邻域内亮度值的乘积的1/mn次幂,使用的函数是gmean

在IPT工具箱中,可以使用fspecial函数调用一些预定的二维线性滤波。
w = fspecial(‘type’, parameters)
其中type表示滤波器类型。
数字图像处理-亮度变换与空间滤波_第6张图片
拉普拉斯算子

IPT中的ordfilt2函数是一个可以生成统计排序的非线性滤波器,也称为排序滤波器。其相应基于对图像领域中所包含的像素进行排序,然后使用排序结果来替换中心像素的值。
g = ordfilt2(f, order, domain)
order为排序后中意的位置,用此位置的值做替换。domain生成一个元素为0和1的大小为m * n的掩模,在滤波过程中,所有不为0位置上的像素参与排序。
最小滤波器
g = ordfilt2(f, 1, ones(m,n))
最大滤波器
g = ordfilt2(f, mn, ones(m,n))
中值滤波器
g = ordfilt2(f, median(1:m
n), ones(m,n))
还有另一种形式为
g = medfilt2(f)
它使用大小为3*3的掩模,并用0来填充图像边界。
例子

你可能感兴趣的:(笔记,数字图像处理)