2011-03-26 7 views
0

최근에 boost :: graph를 발견했습니다. 나는 부스트 그래프로 어떻게 다음 문제를 해결할 지 궁금해하기 전에 그래프 이론을 사용한 적이 없기 때문에.부스트 그래프로 이미지 분할

간단히 말해서 (회색 음영) 2D 이미지가 있고 특정 기준을 충족하는 영역을 추출하고 싶습니다. 픽셀 값> 임계 값. 위는 흰색, 아래는 검은 색입니다.

어떻게 구현하나요?

첫 번째 단서는 이미지의 모든 픽셀에 대해 하나의 단일 정점을 그래프에 추가하는 것이 었습니다. 그런 다음 모든 픽셀 Vertex를 동일한 색상 (흰색/검정색)의 이웃으로 연결하십시오. 그리고 나서 connected_components() 함수로 영역을 추출 할 수있었습니다.

인접한 모든 픽셀을 연결하고 경계 정보를 경계 (경계선, 경계가 아닌 경계)로 인코딩하는 것이 더 효과적입니까?

답변

3

실제로 그래프 컷 세그먼트 화라고하는 흥미로운 그래프 이론 기반의 세분화 알고리즘이 있습니다. 이들은 인접한 픽셀 사이의 차등 정보를 인코딩하기 위해 컬러 가장자리를 사용합니다.

아주 단순한 분류의 경우 그래프를 사용하는 것이 지나치게 잔인합니다.

0

저는 각 픽셀마다 버텍스를 만든 후 자신의 기준을 공유하는 픽셀 (또는 수행하려는 대상에 따라 인접한 픽셀)을 연결합니다. 그렇게하면 특정 기준을 충족하는 이미지 (또는 적어도 인접한 영역)의 모든 영역을 찾기 위해 "픽셀 워크"를 수행 할 수 있습니다.

걷기 순서를 시작하기 위해 기준에 맞는 첫 번째 픽셀을 찾으려면 사용할 수있는 몇 가지 방법이 있습니다. 1) 이미지에서 임의의 픽셀 선택, 2) 각 조건에 맞는 픽셀에 대한 목록 포인터 저장 (각 조건마다 하나의 픽셀 만 필요함) 또는 3) 이미지에 그라디언트 정보 유형을 저장하여 이미지에서 하나의 픽셀 만 선택하면 그라디언트 흐름을 따라 찾고있는 픽셀을 찾을 수 있습니다 (즉, 그라디언트는 원하는 픽셀에 근접하기 위해 다음 픽셀을 선택해야하는 위치에 대한 방향 정보를 제공합니다). 당신이 찾고있는 기준). 선택 1 또는 2를 구현하는 것이 가장 쉽다고 생각합니다. 이 도움이

희망,

제이슨

관련 문제