我有一个二值图像,包含一些白点。现在我想要一个图像B,对于A中的每一个白点,强度被扩展到它的邻域,所以这些点的值是1,它周围的值会减小。因此,最终图像B的值范围为0 1,其中1发生在my白点。
我的方法:
我使用以下代码将图像转换为高斯函数:
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。
有什么方法可以把光的强度分散开来(把每个点当作一个源,而不管它的近邻),最后的图像是这个运算的最大值,这样在两个白点的位置,两个点的数值是1,而它们的邻居有最大的2高斯值吗?


发布于 2014-11-22 16:33:20
你可以试试硬帽子。
要么在卷积之前保存白点的位置,要么查找所有点的位置>1,并将它们设置为1,如下所示:
B(B>1) = 1https://stackoverflow.com/questions/27078120
复制相似问题