1.加噪声
使用imnoise对原始图像进行添加噪声,用法如下。
![](https://i-blog.csdnimg.cn/blog_migrate/40e664e87fb57ba13672bef163a8289d.png)
2.空间滤波器
2.1线性空间滤波器
matlab中可通过fspecial得到一个滤波器w
w = fspecial('type',parameters);
% type 规定滤波器的类型,parameters进一步定义
常见类型如下:
平均滤波器:
% 规定一个大小为r*c的平均滤波器,默认为3*3,可用单个数替代r*c
w = fspecial('average',[r c]);
高斯滤波器:
% 规定一个大小为r*c,标准差为sig的高斯低通滤波器,默认值为3*3和0.5
w = fspecial('gaussian',[r c],sig)
高斯滤波器是通过离散化的高斯函数计算得到的。σ越大,数据分布越分散,滤波器越平缓,σ越小,数据分布越集中,滤波器越陡峭。根据高斯曲线分布,可以计算出模板,进行滤波。标准差越大,分布的峰值越宽,曲线越扁平;标准差越小,分布的峰值越窄,曲线越尖锐。标准差是一组数据平均值分散程度的一种度量。一个较大的标准差,代表大部分数值和其平均值之间差异较大;一个较小的标准差,代表这些数值较接近平均值。
gau1 = fspecial('gaussian',[3,3],1);
gau2 = fspecial('gaussian',[3,3],10);
拉普拉斯滤波器:
% 根据alpha值得到拉普拉斯模板,模板大小为3*3,alpha取[0,1],默认为0.2
w = fspecial('laplacian',alpha);
拉普拉斯滤波器可用于图像增强,一般使用时需用原图减滤波后图像以得到质量更高的图像。
LoG滤波器(高斯-拉普拉斯滤波器):
% 默认值为5*5和0.5
w = fspecial('log',[r c],sig);
噪声会影响拉普拉斯滤波,可以先进行高斯滤波。
由于卷积操作具有结合律,可以先将高斯平滑滤波器与拉普拉斯滤波器进行卷积,然后利用得到的滤波器去对图片进行滤波。
2.2非线性空间滤波
排序统计滤波器:
% 将 A 中的每个元素替换为由 domain 中的非零元素指定的A中相邻元素的有序集中的第 order 个元素
B = ordfilt2(A,order,domain)
基于此可实现中值滤波器
g = ordfilt2(f,(m*n+1)/2,ones(m,n));
% matlab中给出了专用实现,padopt指定边界填充选项,zeros(默认),symmetric,indexed
g = medfilt2(f,[m n],padopt)
滤波实现
所谓滤波,可用imfilter实现,可分为相关和卷积两种,卷积可理解为卷积核旋转180°再进行相关(此处旋转,顺时针or逆时针得到的矩阵是相同的)。
Fimage =imfilter(image,w); % w为卷积核,默认为相关,填充0,输出和输入大小相同。
Fimage =imfilter(image,w,'conv',boundary_options,'full'); % boundary_options边界扩展选项
问题
在使用imfilter滤波时发现,三维RGB图像可以用二维矩阵进行滤波。
但ordfilt2,仅可对灰度图像,即二维图像进行处理(rgb2gray进行转化)。但对于中值滤波,存在方法medfilt3进行滤波。