게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
opencv 질문드려요!!
게시물ID : programmer_5664짧은주소 복사하기
작성자 : LUminary
추천 : 0
조회수 : 1267회
댓글수 : 3개
등록시간 : 2014/09/27 21:55:56
옵션
  • 본인삭제금지
여기서 어려울때 조언받고 많이 배워가니 너무 뭐라하지 않으셨으면 좋겠습니다. ㅠㅠ
 
RGB이미지를 Y, Cr, Cb로 변환하는 건데요 핵심코드만 긁어왔습니다.
 
 
void CConvertColorModel::RGB_TO_YCbCr(IplImage* img_in ,IplImage* img_Y ,IplImage* img_Cb ,IplImage* img_Cr)
{
 /*
 img_in = cvCreateImage(cvSize(img_in->width,img_in->height),8,3);
 img_Y = cvCreateImage(cvSize(img_in->width,img_in->height),8,1);
 img_Cb = cvCreateImage(cvSize(img_in->width/2,img_in->height/2),8,1);
 img_Cr = cvCreateImage(cvSize(img_in->width/2,img_in->height/2),8,1);

 */ 이러한 이미지 타입을 받아옵니다.
 for(int i=0 ; i<img_in->height ; i=i+1)
 {
  for(int j=0 ; j<img_in->widthStep ;j=j+3)
  {
   unsigned char R,G,B,Y,Cb,Cr;

   B = limit((unsigned char)img_in->imageData[ i*img_in->widthStep + j ]);
   G = limit((unsigned char)img_in->imageData[ i*img_in->widthStep + j+1 ]);
   R = limit((unsigned char)img_in->imageData[ i*img_in->widthStep + j+2 ]);
  //B,G,R 값을 받아왔습니다.(컬러영상)
   
   /*RGB to YCbCr 변환 아래 변환식 사용
   ┌Y ┐      ┌   0.299   0.587  0.114 ┐   ┌ R ┐    ┌  0  ┐
   │Cb│  = │  -0.169  -0.331  0.500 │ │ G │  + │ 128 │
   └Cr┘     └   0.500  -0.419 -0.081 ┘  └ B ┘    └ 128 ┘
   */

      
   Y= 0.299*R+0.587*G+0.114*B+0;
   Cb= (-0.169)*R+(-0.331)*G+(0.5)*B+128;
   Cr= (0.5)*R+(-0.419)*G+(-0.081)*B+128;
   

   
 
   
   /*Y Cb Cr Subsampling 4:2:0 (이미지 사이즈를 고려하여 subsampling이 가능하도록 변경)*/
  
   img_Y->imageData[i*img_Y->widthStep+(j+3)/3+2]=Y; //4:2:0으로 하여 나름 생각하여 해봤는데 맞는지는 모르겠더군요.. ㅠㅠ 확실히Y영상은 뜨긴 뜨더군요. 이 3문장을 해결해야합니다 ㅠㅠ
   img_Cb->imageData[] = Cb ; //Cb, Cr영상은 사이즈가 1/4크기로 줄여야 하더군요.. ㅠㅠ
   img_Cr->imageData[] = Cr ;
 
   
  }
 }
}
 
나름 많이 생각해봤는데 너무 생각이 안나서 오유에 여쭙습니다... ㅠㅠ 조그만한 힌트라도 주시면 감사하겠습니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호