根据对象中心线和边界之间的距离重新标记像素

问题描述 投票:0回答:1

我有一个包含对象的二值图像,如下图所示。对象的

centerline
被描绘在
red
中。对于属于该对象的每个像素,我想用颜色重新标记它。例如,到中心线的正交距离是从中心线到对象边界的距离的一半的像素应该标记为
blue
,否则标记为
green
。下面给出了一个例子。有什么想法吗? 另外,我如何才能将 1D
gaussian
放在对象
centerline
orthogonal
的中心呢?

全分辨率图像可以在以下位置找到:https://i.sstatic.net/DqNkC.jpg

matlab image-processing euclidean-distance boundary mathematical-morphology
1个回答
3
投票

这是我想到的(前提是您有图像处理工具箱):

创建两张二值图像,一张

BWin
在红线位置有 1(真)像素,一张
BWout
与白色区域相反(1 outisde 该区域和 0(假)内部) ).

像这样:

BWin
BWin

BWout
BWout

然后使用

bwdist
:

对两者应用欧几里得变换
Din = bwdist(BWin);
Dout = bwdist(BWout);

您现在有两个图像,其像素强度代表到最近的非 0 像素的欧氏距离。

现在将两者相减,等距一侧的差值为正,另一侧的差值为负:

blueMask=Din-Dout>0;
greenMask=~BWout & blueMask;

然后您可以使用蒙版填充 RGB 图层:

Result=zeros(size(II));
Result(:,:,1)=BWin;
Result(:,:,2)=greenMask;
Result(:,:,3)=~blueMask & ~BWin;
imshow(Result);

Result

© www.soinside.com 2019 - 2024. All rights reserved.