2013-03-20 2 views
1

약간의 문제가 있습니다. openCV와 C++을 사용하여 BW 이미지의 보로 노이 다이어그램을 만들 필요가 있습니다. 나는 Matlab 함수 voronoin의 출력과 같은 것을 가져야한다.openCv 및 C++로 보로 노이 다이어그램 만들기

목표는 다이어그램의 각 영역에 대한 마스크를 만드는 것입니다.

matlab voronoi diagram

그래서, 각 지역의 내가 마스크를 작성해야하거나 다른 색을 가지고 :

내가 matlab에에서 만든 예이다. 나는 voronoi 레이블을 얻기 위해 distanceCollection 함수를 시도했다.

Mat bwCoresGoodInv = 255 - bwCoresGood; 
distanceTransform(bwCoresGoodInv, distTr,voronoiLabels, CV_DIST_L2, CV_DIST_MASK_PRECISE, DIST_LABEL_PIXEL); 

namedWindow("voronoiDistLab", CV_WINDOW_AUTOSIZE); 
voronoiLabels = voronoiLabels*5; 
imshow("voronoiDistLab", voronoiLabels); 

결과는 다음과 같은 이미지 : voronoi labels openCV

당신은 색상 (특히 셀에 대응 무언가가)이 할 수있는 방법이 differents의가 각 지역에서 볼 수 있듯이 그냥 색깔? 미리 감사드립니다.

답변

0

레이블을 표시하여 제공된 그레이 스케일 값과 다른 색상을 얻는 방법을 묻는 경우 가장 효과적이지는 않은 접근법은 가장자리 감지 이미지에서 cv::findContours을 실행하는 것입니다. 라벨 이미지를 찾은 다음 발견 된 각 컨투어를 반복하고 새 이미지에 그려 넣으면 채우거나 윤곽을 그릴 수 있습니다. 그것은 매우 정확하지 않고 간격을 남길 수 있습니다. 가장자리 이미지에 약간의 팽창이 필요할 수 있습니다.

distanceTransform이 레이블 이미지의 강도 값 범위를 해당 값을 가진 모든 픽셀에 매핑 한 데이터 구조를 반환하면 아주 좋을 것입니다. 벡터의 n 번째 이미지가 고립 된 n 번째 레이블 region-와 바이너리 마스크하지만 지금은 사용자가해야 할 것이라고 생각합니다.

관련 문제