마칭 사각형 : 하나의 소스 필드에서 여러 개의 윤곽선을 찾으십니까?


9

원칙적으로 이것은 실제 문제에 적용하지 않는 알고리즘에 관한 것이지만 몇 주 전의 문제에 대한 후속 질문 입니다.

이 알고리즘은 기본적으로 왼쪽 상단부터 시작하여 경계선 인 픽셀을 찾을 때까지 그림의 모든 라인을 검색합니다. 의사 C ++에서 :

int start = 0;
for(int i=0; i<amount_of_pixels; ++i)
{
   if(pixels[i] == border)
   {
      start = i;
      break;
   }
} 

하나를 찾으면 행진 사각형 알고리즘을 시작하고 픽셀이 속한 모든 객체의 윤곽을 찾습니다.

다음과 같은 것이 있다고 가정 해 봅시다.

여기에 이미지 설명을 입력하십시오

흰색을 제외한 모든 것이 경계인 곳.

첫 번째 얼룩의 윤곽 점을 찾았습니다.

여기에 이미지 설명을 입력하십시오

일반적인 알고리즘은 끝났습니다. 윤곽을 찾아서 작업을 완료했습니다. 다른 두 얼룩으로 이동하여 윤곽선을 찾으려면 어떻게해야합니까?


도움이 필요하시면이 stackoverflow.com/questions/17232672/…

답변:


7

배경색으로 그려서 찾은 다각형을 지우고 아무 것도 남지 않을 때까지 반복 할 수 있습니까?


1
그렇게해야합니다. 발견 된 요소를 배경 (또는 다른 색)으로
플러딩

오 와우. 홍수 채움에 대해서는 몰랐습니다. 감사.
TravisG


1

Blob 정보를 다른 배열에 저장하고 새로 찾은 픽셀이 이전 Blob의 경계 상자에 들어 가지 않는 이유는 무엇입니까? 이전 블롭의 중심 아래에 있고 경계 상자 내에있는 블롭을 처리하려면 약간의 조작이 필요합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.