我有一个包含对象的二进制图像,如下图所示。对象的centerline
描述在 中red
。对于属于对象的每个像素,我想用颜色重新标记它。例如,到中心线的正交距离是从中心线到对象边界距离的一半的像素,应标记为blue
,否则为green
。下面给出一个说明。有任何想法吗?另外,我怎么能适应一个gaussian
以对象为中心的一维对象centerline
呢orthogonal
?

全分辨率的图像可以在以下位置找到:http: //imgur.com/AUK9Hs9
我有一个包含对象的二进制图像,如下图所示。对象的centerline
描述在 中red
。对于属于对象的每个像素,我想用颜色重新标记它。例如,到中心线的正交距离是从中心线到对象边界距离的一半的像素,应标记为blue
,否则为green
。下面给出一个说明。有任何想法吗?另外,我怎么能适应一个gaussian
以对象为中心的一维对象centerline
呢orthogonal
?
全分辨率的图像可以在以下位置找到:http: //imgur.com/AUK9Hs9
这是我想到的(假设您有图像处理工具箱):
创建两张二值图像,一张BWin
在红线位置有 1(真)像素,BWout
另一张在白色区域的对面(1在区域外,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);