基于物体中心线和边界之间的距离重新标记像素

时间:2014-03-01 15:12:52

标签: matlab image-processing euclidean-distance boundary morphological-analysis

我有一个包含对象的二进制图像,如下图所示。 centerline中描述了对象的red。对于属于该对象的每个像素,我想用颜色重新标记它。例如,与中心线的正交距离是距中心线到物体边界的距离的一半的像素应标记为blue,否则为green。下面给出一个例子。有任何想法吗? 另外,我如何才能在对象gaussiancenterline中居中放置1D orthogonal

 

全分辨率的图片可在以下网址找到:http://imgur.com/AUK9Hs9

1 个答案:

答案 0 :(得分:2)

以下是我们想到的(如果你有图像处理工具箱):

创建两个二进制图像,一个BWin在红线位置有1个(真)像素,一个BWout与白色区域相反(1 outisde < / em>区域,内部为0(假)。

像这样:

BWinBWin

BWoutBWout

然后使用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