<div>항상 코딩할때마다 막혀서 질문하러와서 많이 배워가니 너무 나쁘게만 보지 말아주세요 ㅠㅠ</div> <div> </div> <div>다름아니라 이번 기회에 OpenCv를 배우게 되는데요...</div> <div> </div> <div>RGB 를 YCrCb 로 변환하는 것입니다.</div> <div> </div> <div>나머지는 제외하고 핵심적인 부분만 긁어왔습니다.</div> <div> </div> <div>void CConvertColorModel::RGB_TO_YCbCr(IplImage* img_in ,IplImage* img_Y ,IplImage* img_Cb ,IplImage* img_Cr)<br>{</div> <div> /*<br> img_in = cvCreateImage(cvSize(img_in->width,img_in->height),8,3);<br> img_Y = cvCreateImage(cvSize(img_in->width,img_in->height),8,1);<br> img_Cb = cvCreateImage(cvSize(img_in->width/2,img_in->height/2),8,1);<br> img_Cr = cvCreateImage(cvSize(img_in->width/2,img_in->height/2),8,1);<br> */ <strong>이런형태로 이미지를 받아옵니다.</strong><br> for(int i=0 ; i<img_in->height ; i=i+1)<br> {<br> for(int j=0 ; j<img_in->widthStep ;j=j+3)<br> {<br> unsigned char R,G,B,Y,Cb,Cr;<br> //RGB 입력<br> <br> B = limit((unsigned char)img_in->imageData[ i*img_in->widthStep + j ]); <br> G = limit((unsigned char)img_in->imageData[ i*img_in->widthStep + j+1 ]); <br> R = limit((unsigned char)img_in->imageData[ i*img_in->widthStep + j+2 ]); </div> <div> <br><strong> //여기까지 칼라사진의 RGB값을 받아왔습니다.</strong><br> <br> Y= 0.299*R+0.587*G+0.114*B+0;<br> Cb= (-0.169)*R+(-0.331)*G+(0.5)*B+128;<br> Cr= (0.5)*R+(-0.419)*G+(-0.081)*B+128;<br> <br><strong> //RGB를 Y , Cb, Cr로 변환하였습니다.</strong><br> /*<br> Cb = limit((unsigned char)img_in->imageData[ R*(-0.169)+G*(-0.331)+B*0.5+128 ]) ;<br> Cr = limit((unsigned char)img_in->imageData[ R*(0.5)+G*(-0.419)+B*(-0.081)+128 ]) ; ;<br> */<br> <br> /*Y Cb Cr Subsampling 4:2:0 (이미지 사이즈를 고려하여 subsampling이 가능하도록 변경) <br> */<br> <br> img_Y->imageData[i*img_Y->widthStep+(j+3)/3+2]=Y;</div> <div> </div> <div><br> <strong> <br> //문제이는 이곳인데, 일단 Y영상까지는 무난하게 출력되었습니다. 4:2:0으로 샘플링하라하여 widthstep인 j를 2칸에 한번꼴로 샘플링하도록 하였습니다.. 사실 이게 맞는지도 의문이 가더군요.. 어찌어찌 Y영상은 잘 출력되긴하는데..</strong></div> <div><strong></strong> </div> <div>다음은 img_Cr 을 띄워야하는데 위에 보시면 아시겠지만 사이즈가 원래 이미지의 1/4로 줄었습니다. ㅠㅠ 여기서 떡 막히더군요.. opecv 책도 찾아가며 해봤는데 도저히 감이 안잡혀서 여기에 여쭙습니다... ㅠㅠ</div> <div> </div> <div> </div> <div><br> <br> </div> <div> }<br> }<br>}</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.