2017-10-08 10 views
0

저는 2D로 RGB 이미지를 가지고 있습니다.Neighborhood-를 사용하여 모든 채널을 사용하는 방법?

같은 색상 (RGB 값)을 가진 픽셀 그룹을 만들고 싶습니다. 그들은 왼쪽에서 오른쪽으로 읽은 다음 위에서 아래로 읽습니다.

현재 픽셀의 RGB 값이 이전과 다른 경우 그룹 (이전 픽셀을 포함)을 발견했다는 의미입니다.

나는 CImg 함수가 CImg_for2x2(img,x,y,z,c,I,T) 인 것을 알고 있지만 문제는 채널 값이 c인데 RGB 값에 관심이 있다는 것입니다. Doc : http://cimg.eu/reference/group__cimg__loops.html#lo6

"CImg"에게 내가 빨강 값뿐 아니라 RGB 값으로도 작업한다는 것을 이해하는 것이 가능한지 알고 계십니까?

답변

1

그것은 귀하의 질문에서 말씀 어렵다,하지만 난 당신이 "연결됨 성분 분석", 또는 "라벨"을 찾고있다 생각합니다.

CImg 해당 도구는 label()입니다. 당신이 3 개 흰색 모양을 가지고이 이미지에 시작하는 경우

그래서 :

enter image description here

다음이 실행

#include <iostream> 
#include "CImg.h" 
using namespace std; 
using namespace cimg_library; 

int main(int argc, char** const argv) 
{ 
    CImg<int> img("input.png"); 
    img.label(0,0); 
    img.save_png("result.png"); 
} 

을 그 것이다 "라벨" 모든 구별을 고유 번호가있는 이미지의 얼룩, 예 :

enter image description here

+0

검정색 부분도 식별 되었습니까? –

+1

모든 검정색 픽셀이 0으로 분류되어 표시됩니다 (즉, 색상이 지정됨). 따라서 검정색이됩니다. 왼쪽 상단의 얼룩에있는 모든 픽셀이 라벨 (즉, 색상) 1로 나옵니다. 오른쪽에있는 큰 막대의 모든 픽셀이 밖으로 나왔습니다 2. 큰 사각형의 모든 픽셀이 3이라는 레이블이 붙었습니다. 'normalized()'(즉, 0-255의 풀 스케일로 값을 퍼뜨린다) 1이 85가되고 2가 170이되고 3이 255가되도록하는 이미지. –