有没有一种简单的方法可以在圆形图像区域中应用二维高斯滤波器(简单是指准备好的 matlab 函数),还是必须自己实现这个??
最佳答案
如果您想对图像的选定部分应用任何滤镜,一种选择是使用二进制蒙版。
让img
成为您的图像,设置圆形 mask 的位置和半径以及滤镜的尺寸:
centre=[50 50];
radius=20;
n=5;
然后创建 mask :
Mask=zeros(size(img));
Disk = fspecial('disk',radius)==0;
Mask(centre(1)-radius:centre(1)-radius+size(Disk,1)-1, centre(2)-radius:centre(2)-radius+size(Disk,2)-1)=double(~Disk);
按照@Gacek 的建议应用过滤:
h = fspecial('gaussian', n);
Filtered=filter2(h, img);
将过滤后的区域与原图结合并显示结果:
Result=img.*uint8(~Mask)+uint8(Filtered.*Mask);
imshow(Result)
示例结果:
注意: 1. 将类 uint8
更改为原始图像的适当类。 2. 示例图片属于公共(public)领域,来源:en.wikipedia.org/wiki/File:Phase_correlation.png。
关于matlab - 在圆形图像区域应用二维高斯滤波器 - Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22910326/