我有一个包含对象的二值图像,如下图所示。对象的
centerline
被描绘在 red
中。对于属于该对象的每个像素,我想用颜色重新标记它。例如,到中心线的正交距离是从中心线到对象边界的距离的一半的像素应该标记为blue
,否则标记为green
。下面给出了一个例子。有什么想法吗?
另外,我如何才能将 1D gaussian
放在对象 centerline
和 orthogonal
的中心呢?
全分辨率图像可以在以下位置找到:https://i.sstatic.net/DqNkC.jpg
这是我想到的(前提是您有图像处理工具箱):
创建两张二值图像,一张
BWin
在红线位置有 1(真)像素,一张 BWout
与白色区域相反(1 outisde 该区域和 0(假)内部) ).
像这样:
BWin
:
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);