2

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

全分辨率的图像可以在以下位置找到:http: //imgur.com/AUK9Hs9

4

1 回答 1

2

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

创建两张二值图像,一张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);

结果

于 2014-03-01T19:20:49.653 回答