【发布时间】:2015-01-20 14:07:00
【问题描述】:
我有一个包含一些白点的二值图像 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 个高斯 ??
【问题讨论】:
标签: matlab image-processing convolution