2

아래 그림과 같이 객체가 포함 된 이진 이미지가 있습니다. 대상의 centerlinered으로 표시됩니다. 객체에 속하는 각 픽셀에 대해 색상으로 레이블을 다시 지정하고 싶습니다. 예를 들어, 중심선과의 직각 거리가 중심선에서 객체 경계까지의 거리의 절반 인 픽셀은 blue으로 지정하고, 그렇지 않으면 green으로 지정해야합니다. 아래에 그림이 나와 있습니다. 어떤 아이디어? 또한 어떻게 객체 centerlineorthogonal에 1D gaussian을 중심으로 맞출 수 있습니까?객체의 중심선과 경계 사이의 거리를 기준으로 픽셀을 재 레이블링합니다.

전체 해상도의 이미지에서 찾을 수 있습니다 :

두 이진 이미지를 만듭니다 http://imgur.com/AUK9Hs9 여기

+0

첫째, 당신의 중심선이 어떻게 그 중심선을 작성, 당신을 위해 정의입니까? 당신은 그것의 일부 분야가 수직인데, 이것은 이상하게 보입니다. 또한 두 개의 다른 선이 중심선에서 멀리 떨어져 있음을 보여줍니다. 그들은 수평과 다른 각을 가지고 있습니다. 그래서 제 다음 질문은 당신이 착색을 원할 때 blob의 가장자리에 닿는 각도에 상관없이 중심선에 수직을 찾고 있습니까? – trumpetlicks

+0

수직선은 색상을 배포하는 방법을 보여주기위한 것일뿐입니다. – Jonas

+0

@trumpetlicks,'centerline'에서 움직이는 2 개의 다른 라인은 단지 설명을 목적으로 한 것입니다 ;-) @Jonas는 라인의 픽셀에 대해 어떻게 레이블링을해야하는지에 대해 언급했습니다. 직각 거리에 관해서는, blob의 가장자리에서부터 '중심선'쪽이 더 좋을지 모르지만, 다른 방향으로도 설명 할 수 있다면, 정말 도움이 될 것이라고 생각합니다.) – Tin

답변

2

가 마음에 오는 것입니다 (당신은 이미지 처리 도구를 제공) , 빨간 선의 위치에 1 (참) 픽셀을 가진 하나의 BWin 및 흰색 영역의 반대편에있는 하나의 BWout (1 outisde 영역과 0 (거짓) 내부). 이처럼

:

BWin : BWin

BWout :

Din = bwdist(BWin); 
Dout = bwdist(BWout); 

을 이제 두 개의 이미지가 있습니다 BWout

그런 다음 유클리드가 bwdist를 사용하여 두 변환을 적용 픽셀 int 가장 가까운 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

+0

감사합니다.그러나 물건을 분명히하기 위해서, 나의 원래의 이미지로부터의 2 개의 '색깔의'선은 삽화의 목적만을위한 것이다 (그들은 실제로 물건에 속하지 않는다). 그들은 단지 그 라인의 픽셀이 어떻게 재 명명되어야 하는지를 보여주기 위해 사용되었습니다. – Tin

+0

@ Jigg 코드를 보내 주셔서 감사합니다! 궁금 해서요, 해결책을 더 일반적인 것으로 만들 수 있습니까? 예를 들어, 픽셀을 거리 대신에 2를 기준으로하여 '3'영역으로 나눌 필요가있는 경우, 예를 들어, 거리의 처음 1/3 사이의 픽셀, 두 번째 세 번째 다른 색, 마지막 세 번째 다른 색의 픽셀. – Tin