|
네이x 검색창에 RGB YCbCr 색 변환 을 찾아보면
아래if 문 범위를 달리 해야 하는걸 알수있습니다.
YCbCr 에서 아래 if문 범위가 살색에 해당하는 임이의 값입니다. (아시는내용이신듯? ^^)
눈으로 간단하게 확인하는방법은 Y V Cb Cr의 변수들을 지정할수있게 만들고
예를들어 edit 창 을두개씩 만들어서 Y의 Min,Max 를 지정 할수잇게 하고
RGB 색 공간모형 사진을 불러와서 지정한 값들이 어떻게 RGB에서 필터링 되는지 관찰해보심은?????
초짜라 많은 정보가 없네요 ㅎㅎ
예전에 저도 많이 고생한 터라.... ㅎㅎ
공식을 밑에 적어 두셧으니...
그공식을 변환해서 B 범위를 찾아 보시는건 어떠신가요
성공을 기원합니다.
니라카 님이 쓰신 글 :
: Cb =int(-0.16874*double(R) -0.33126*double(G) +0.50000*double(B)); // 푸른색의 강도를 나타냄
:
: Cr =int( 0.50000*double(R) -0.41869*double(G) -0.08131*double(B)); // 붉은색의 강도를 나타냄
:
: Cb = Cb + 127; // 최소값이 -127 때문에 +127을 해준다
: Cr = Cr + 127;
:
: // 사람의 눈이 색상보다 밝기에 민감하다는 사실에 착안한 방식
: // Y : 휘도 신호, V : 휘도 신호와 청색 성분의 차
: Y = 0.3*R + 0.59*G + 0.11*B;// Y >= 80 눈 코 잎 잘 잡힘
: V = (R-Y) * 0.877; // V >= 100 눈 코 잎 잘 잡힘
:
: //위의 영상을 나타내주고 아래 화면의 살색 계열의 색상을 픽셀단위로 뿌려주기
: // 작업입니다.
: if(Y >= 80 && V > 6)
: {
: if(Cb > 76 && Cb < 128) // 살색을 잡는 Cb 값의 최적의 조건을 검사
: {
: if(Cr > 132 && Cr < 174) // 살색을 잡는 Cr 값의 최적의 조건을 검사
: {
: Face->Canvas->Pixels[x][y] = clWhite; // 살색 계열 이라면 cl White 를 통하여 흰색을 나타내줍니다.
: }
: else Face->Canvas->Pixels[x][y] = clBlack; //나머지색은 모두 블랙처리하여 살색을 제외한 나머지 색상들은 모두 블랙처리합니다.
: }
: else Face->Canvas->Pixels[x][y] = clBlack; //아래 과정은 위의 과정과 동일합니다.
: }
: else Face->Canvas->Pixels[x][y] = clBlack;
: }
: }
:
: 이것이 사람의 살색을 인식하는 코드인데
:
: 혹시 파란색 을 인식하게할려면 어디를 고쳐야하나요?
|