Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 将二值图像转换为高斯点_Matlab_Image Processing_Convolution - Fatal编程技术网

Matlab 将二值图像转换为高斯点

Matlab 将二值图像转换为高斯点,matlab,image-processing,convolution,Matlab,Image Processing,Convolution,我有一个包含一些白点的二值图像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

我有一个包含一些白点的二值图像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高斯???

您可以尝试硬封顶

在卷积之前保存白点的位置,或者找到所有大于1的点的位置,并将其设置为1,如下所示:

B(B>1) = 1

谢谢,我会试试这个:)谢谢@Muller,我现在可以处理这个问题,但仍然不能单独处理每个像素。最终图像有许多白色批次:)