MATLAB:将滤镜应用于ROI或掩模在灰度图像中

时间:2015-12-28 18:38:18

标签: matlab filter binary mask roi

我有一个灰度图像(I),并希望在matlab(R2015b)(随机和不规则形状区域)中对该图像的不同区域应用不同的滤镜。我有一个二进制版本,我希望第一个过滤器应用于(附加)。我不确定制作掩码的最佳方法......我可以加载这个二进制图像并使用bwconncomp来定位连接的组件并将它们定义为单向量,这对于poly2mask不起作用。有关A.如何从这个二进制图像中获取掩码的任何建议,以及B.如何使用此掩码将滤镜应用于灰度图像的那一部分?

提前致谢!

MASK=imread('/Users/bk/Desktop/FIJI_image/mask4.tif');
BACK=imcomplement(MASK);
I=imread('/Users/bk/Desktop/FIJI_image/Orig.tif');
I(~MASK)=0;
SE=ones(13,13);

A=stdfilt(I, SE);

minZ=min(min(A));
maxZ=max(max(A));
Low_High=[minZ maxZ];

var5=255/maxZ;
B=uint8(A*var5);

C=(imadjust(B,stretchlim(B),[]));
imtool(C);

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

二进制图像 是一个掩码。

给定灰度图像I相同尺寸的二进制图像M,您可以获得由掩码{{1}过滤的图像I使用:

M

这只是掩盖。对于过滤,您可以在J = I; J(~M) = 0; 上使用I或任何其他MATLAB过滤函数应用过滤器。例如:

imfilter

现在,您可以获取不在h = fspecial('motion', 50, 45); K = imfilter(I, h); 中的像素的原始值:

M

所以现在K(~M) = I(~M); 已经过滤了K为真的位置的像素,以及M为假的位置的未经过回放的像素。

您添加的示例的代码:

M

输出: Output for example