2014-04-30 4 views
0

bw 경계와 같은 것을 사용하지 않고 matlab에서 이진 이미지의 경계를 찾아 추출하려고합니다.Matlab - 수동으로 객체의 경계를 추적하는 방법

어쩌면 루프를 사용하고 경계 픽셀의 색상을 변경하는 더 수동 방법이있을 수 있습니다.

도움을 주시면 감사하겠습니다.

+0

은 왜'edge'를 사용 (출처 나는 영리한 가장자리 바코드 라인으로 인해 너무 많은 가장자리를 제공하는 데 사용하기 때문에 자바에서 바코드를 포함하는 관점 변화 사각형을 검출하기위한이 기술을 사용했다)? – Divakar

답변

-1

수동 방식으로 어떤 의미인지 이해할 수 없습니다. 그것은 픽셀 또는 다른 어떤 의미입니까? 어쨌든이 예제를 시도하고 정말로 당신이 원하는 것을 당신의 질문에 완전히 설명하십시오.

d1 = double(imread('cameraman.TIF'))./255; %# Load the image, scale from 0 to 1 
subplot(2,2,1); imshow(d1); title('d1'); %# Plot the original image 
d = edge(d1,'canny',.6);     %# Perform Canny edge detection 
subplot(2,2,2); imshow(d); title('d');  %# Plot the edges 
ds = bwareaopen(d,40);      %# Remove small edge objects 
subplot(2,2,3); imshow(ds); title('ds'); %# Plot the remaining edges 
iout = d1; 
BW = ds; 
iout(:,:,1) = iout;       %# Initialize red color plane 
iout(:,:,2) = iout(:,:,1);     %# Initialize green color plane 
iout(:,:,3) = iout(:,:,1);     %# Initialize blue color plane 
iout(:,:,2) = min(iout(:,:,2) + BW, 1.0);  %# Add edges to green color plane 
iout(:,:,3) = min(iout(:,:,3) + BW, 1.0);  %# Add edges to blue color plane 
subplot(2,2,4); imshow(iout); title('iout'); %# Plot the resulting image 

Blob 메서드를 사용하여 경계를 추적 할 수도 있지만 요구 사항에 따라 다릅니다.

0

2 진수이므로 2 개의 루프 쌍을 사용할 수 있습니다.

높이에 대한 제 1 루프 쌍 -use

폭 하나 (단 경우는 스케일 임계 그 것이다). 그 화상 이진 보장 화소는 흑색이고 만약 어떤 변화, 즉 추적 - 첫 다음 픽셀은 새로운 매트 위로 향하는 흰색 그리기입니다 (예 : 255 또는 원하는 색상으로 표시).

- 너비와 높이가 같고 다른 매트에 저장하십시오.

- 그런 다음 매트를 모두 추가하고 결과를 평균합니다.

이것은 수동 방법이며 효율적이지 않을 수 있습니다. 그러나 정확한 가장자리를 얻기 위해 프로세스를 수정하는 데 도움이됩니다.

:

+0

루프 쌍을 사용하여 너비와 높이를 사용하여 각 픽셀을 순환 시키지만 두 번째 루프 쌍은 무엇을 의미하는지 이해합니다. 정확히 매트를 추가하고 매트를 평균하는 것은 정확히 무엇입니까? – user3461851

+0

첫 번째 루프는 u가 직사각형을 사용하는 경우 세로 가장자리 픽셀 만 감지합니다. 예를 들어 가로 픽셀은 감지되지 않습니다. 하지만 다음 쌍의 너비와 높이를 전환하면 u는 가로 가장자리 픽셀 만 감지 할 수 있습니다. 그래서 그들을 둘 다 발견하고 그들을 추가하면 정확한 rectangle.it 얻을 것이다 그것은 마름모 그림의 가장자리를 두껍게하므로 잘 작동합니다. –

+0

스택 오버플로가 낮은 rep.otherwise로 인해 이미지 나 링크를 게시 할 수 없습니다. 결과. –