我有一个包含对象的二进制图像,如下图所示。 centerline
中描述了对象的red
。对于属于该对象的每个像素,我想用颜色重新标记它。例如,与中心线的正交距离是距中心线到物体边界的距离的一半的像素应标记为blue
,否则为green
。下面给出一个例子。有任何想法吗?
另外,我如何才能在对象gaussian
和centerline
中居中放置1D orthogonal
?
全分辨率的图片可在以下网址找到:http://imgur.com/AUK9Hs9
答案 0 :(得分:2)
以下是我们想到的(如果你有图像处理工具箱):
创建两个二进制图像,一个BWin
在红线位置有1个(真)像素,一个BWout
与白色区域相反(1 outisde < / em>区域,内部为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);