【问题标题】:Convert binary image to a Gussian points将二值图像转换为高斯点
【发布时间】: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


    【解决方案1】:

    你可以试试硬顶。

    要么保存卷积前白点的位置,要么找到所有> 1的点的位置并将它们设置为1,如下所示:

    B(B>1) = 1
    

    【讨论】:

    • 谢谢你,我会试试这个:)
    • 感谢@Muller 我现在可以处理这个问题,但仍然不能单独处理每个像素。最终的图像有很多白色批次:)
    猜你喜欢
    • 2021-09-23
    • 2021-12-20
    • 2018-01-03
    • 2012-02-07
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多