2014-11-22 167 views
1

我有一个二进制图像A包含一些白点。现在我想要一张图片B其中对于A中的每个白色点,强度都会传播到其邻居,以使这些点的值为1,并且其值会减小。因此最终图像B的值范围为[0 1],其中1发生在我的白点处。将二进制图像转换为古斯点

我的方法:

我使用此代码卷积的图像与高斯函数:

x=-ceil(siz/2):ceil(siz/2); 
H = exp(-(x.^2/(2*sigma^2))); 
H = H/sum(H(:));%normalize the kernel 
Hx=reshape(H,[length(H) 1]); 
Hy=reshape(H,[1 length(H)]); 
I=imfilter(imfilter(I,Hx, 'same' ,'replicate'),Hy, 'same' ,'replicate'); 

问题: 当我这样做是为了整体形象,我面临的一个问题,当我有两个连续的白色邻居,这些点的卷积具有很高的值,因此,当正常化B最大值发生在这个位置,并且我原来的白色点具有小于1的值。

有没有什么方法可以单独传播强度(将每个点视为源而不考虑其邻居),并且最终图像是此操作的最大值,以便在2个白色点的位置处,这两个点具有值1和他们的邻居最多有2个高斯? enter image description hereenter image description here

回答

1

你可以尝试一个硬帽。

无论是卷积之前保存的白点的位置或找到的所有点> 1的位置,并将其设置为1,这样的:

B(B>1) = 1 
+0

谢谢你,我会尝试这个:) – 2014-11-23 18:58:15

+0

@SaraS。它有用吗? – YinglaiYang 2014-11-27 16:52:05

+0

感谢@Muller现在我可以处理这个问题,但仍然无法单独处理每个像素。最后的图像有很多白色的批次:) – 2014-12-05 02:56:13

相关问题