matlab - 在圆形图像区域应用二维高斯滤波器 - Matlab

标签 matlab image-processing filtering

有没有一种简单的方法可以在圆形图像区域中应用二维高斯滤波器(简单是指准备好的 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)

示例结果:

filtered lion

注意: 1. 将类 uint8 更改为原始图像的适当类。 2. 示例图片属于公共(public)领域,来源:en.wikipedia.org/wiki/File:Phase_correlation.png。

关于matlab - 在圆形图像区域应用二维高斯滤波器 - Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22910326/

相关文章:

matlab symfun 与匿名函数

ruby-on-rails - 回形针更改默认路径和 HashMap 像名称

java - Java中半结构化数据的贝叶斯分类

matlab - 如何让 fmincon 在每一步都遵守约束?

java - 在 MATLAB 中遇到 Java 错误 "java.awt.IllegalComponentStateException"

matlab - 如何在 MATLAB 中从网格中创建字符串单元格?

c++ - 通过更改代码格式计算结构 vector 中包含的双变量的平均值的不同结果?

matlab - 在 MATLAB 中使用 SVD 压缩图像

python - 按日期过滤 Pandas 数据框不起作用

r - 按每组中的最大值过滤数据框