MATLAB中滤波相关的函数主要为imfilter()和fspecial()。
%imfilter()滤波操作
img=imread(‘sophie.jpg’);
w=[1 1 1;1 1 1;1 1 1]/9;
g1=imfilter(img,w,’conv’,’replicate’);
g2=imfilter(img,w,’conv’,’symmetric’);
g3=imfilter(img,w,’conv’,’circular’,’same’);
figure;
subplot(2,2,1),subimage(img);
title(‘image0’);
subplot(2,2,2),subimage(g1);
title(‘image1’);
subplot(2,2,3),subimage(g2);
title(‘image2’);
subplot(2,2,4),subimage(g3);
title(‘image3’);
函数原型:g=imfilter(f,w,option1,option2,…)
f为要进行滤波操作的图像;
w为滤波操作要使用的模板(二维数组);
‘corr’表示滤波过程为相关;
‘conv’表示滤波过程为卷积;
处理结果如图:
%fspecial()滤波操作
img=imread(‘sophie.jpg’);
h=fspecial(‘sobel’);
img1=imfilter(img,h,’replicate’);
h=fspecial(‘average’);
img2=imfilter(img,h,’replicate’);
h=fspecial(‘disk’);
img3=imfilter(img,h,’replicate’);
h=fspecial(‘gaussian’);
img4=imfilter(img,h,’replicate’);
h=fspecial(‘log’);
img5=imfilter(img,h,’replicate’);
figure;
subplot(2,3,1),subimage(img);
title(‘image’);
subplot(2,3,2),subimage(img1);
title(‘sobel’);
subplot(2,3,3),subimage(img2);
title(‘average’);
subplot(2,3,4),subimage(img3);
title(‘disk’);
subplot(2,3,5),subimage(img4);
title(‘gaussian’);
subplot(2,3,6),subimage(img5);
title(‘log’);
‘average’为平均滤波;
‘disk’为圆形邻域的平均滤波;
‘gaussian’高斯模板;
‘laplace’拉普拉斯模板;
‘log’高斯-拉普拉斯模板;
‘sobel’sobel水平边缘检测算子;
处理结果如图:
|
请发表评论