【数字图像处理】M3. 相邻处理 Neighborhood Processing (with MATLAB)
一、空域滤波器 Spatial Filters
空间域的滤波是一个卷积的过程,对于图像来说是用模板进行二维卷积。Matlab提供的基本函数是filter2(filter, image, shape),filter是使用的滤波器,image是待处理的图像,shape控制边缘的处理方式。shape可以选择‘same’、'valid'、'full',默认为‘same'。valid对最外围处理忽略,所以得到的图像比原图像要小;‘same’将最外围补0,得到的图像和原图像大小相同;'full'对图像外围也进行处理,得到的图像比实际大。通常使用默认值'same'即可,也可以自己写函数利用图像本身的循环进行外围的填充,而不是补0操作。注意filter2返回的是double类型,数据范围0到255的矩阵,直接调用imshow无法正常显示。
利用fspecial(type, parameters)可以生成滤波器,type可选参数及意义如下:
二、频域滤波器 Frequency Filters
均值滤波器就可以看做低通滤波,高通滤波模板各项相加结果为0。
三、高斯滤波器 Gaussian Filter
高斯滤波器可通过上面的fspecial函数获得,对于高斯滤波器有第三个参数σ,为高斯函数的标准差。值越大越平滑,同时也就越模糊。
四、边缘锐化 Edge Shapening
1. 边缘增强 Edge Enhancement
可以使用Unsharp Masking进行边缘的增强,基本原理就是用原图像减去均值滤波后的乘上小于1的系数后的图像。也可以用fspecial直接生成unsharp的mask,效果在第一张图中可以看到。
2. 高提升滤波 High-Boost Filtering
highboost = A(original) ? (low pass),通常A在3/5到5/6之间。
五、非线性滤波器 Non-linear Filter
nlfilter(image, size, func)提供非线性滤波,第三个参数实质上一个函数。填入max、min、median就可以实现最大、最小、中值滤波。median要求图像数据是double类型,其它两个没什么限制。