OpenCV/미분류

Video for Linux Two & YUV422 to BGR888

webnautes 2010. 8. 24. 08:21
반응형
버전1에 비해 방대해진 양에 질려서 예제 코드를 보며 공부하기 시작했다. 
이것도 만만치 않음....


웹캠에서 YUV  데이터를 얻게되는데 어떻게 제대로 나오는지 확인할까 고민하다가 
Y의 이미지 크기는 웸캠에서 얻는 영상의 크기와 동일하다는 생각이 들어서 
opencv로 출력하도록 했다. 

컬러로 바꾸는 것은 API 스펙에 나온 내용과  http://v4l2spec.bytesex.org/spec/r4339.htm
YUV2BGR 변환식만 있으면 만들 수 있을듯 싶음.http://www.fourcc.org/fccyvrgb.php

V4L2_PIX_FMT_YUYV ('YUYV')

Name

V4L2_PIX_FMT_YUYV -- Packed format with ½ horizontal chroma resolution, also known as YUV 4:2:2

Description

In this format each four bytes is two pixels. Each four bytes is two Y's, a Cb and a Cr. Each Y goes to one of the pixels, and the Cb and Cr belong to both pixels. As you can see, the Cr and Cb components have half the horizontal resolution of the Y component.V4L2_PIX_FMT_YUYV is known in the Windows environment as YUY2.

Example 2-1. V4L2_PIX_FMT_YUYV 4 × 4 pixel image

Byte Order. Each cell is one byte.

start + 0: Y'00 Cb00 Y'01 Cr00 Y'02 Cb01 Y'03 Cr01
start + 8: Y'10 Cb10 Y'11 Cr10 Y'12 Cb11 Y'13 Cr11
start + 16: Y'20 Cb20 Y'21 Cr20 Y'22 Cb21 Y'23 Cr21
start + 24: Y'30 Cb30 Y'31 Cr30 Y'32 Cb31 Y'33 Cr31

Color Sample Location.


인접 두 바이트의 Y성분이 Cb, Cr을 공유해서 사용하는 개념인데..다시말하면 변환 공식에 집어넣을때  아래 한 블럭으로 BGR 두 개의 필셀이 결정된다. 

Y'00 Cb00
Cr00
Y'01

풀어 적으면

Y'00 , Cb00, Cr00  -> R0, G0, B0  
Y'01 , Cb00, Cr00  -> R1, G1, B1


좀 더  이해하기 쉬운 그림 http://daigouji-gai.tripod.com/documents/document07.html



Cb, Cr 영상을 얻으려면..
    0        1       2         3

0 Cb00
Cr00


Cb00
Cr00

Cb01
Cr01
Cb01
Cr01

1 Cb10
Cr10

Cb10
Cr10

Cb11
Cr11

Cb11
Cr11


2 Cb20
Cr20

Cb20
Cr20

Cb21
Cr21

Cb21
Cr21


3    Cb30
Cr30

Cb30
Cr30

Cb31
Cr31

Cb31
Cr31

YUV to RGB Conversion
B = 1.164(Y - 16)                   + 2.018(U - 128)

G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)

R = 1.164(Y - 16) + 1.596(V - 128)




반응형

천천히 하지만 꾸준히 공부한 내용을 블로그에 공유하는 것이 제 취미생활입니다.
블로그를 시작하게 된 계기는 내가 알게된 내용을 정리하려고 였는데 이왕이면 다른 사람에게도 공유하자였지요.

다루어 주었으면 하는 분야나 궁금한 점이 있으면 댓글로 남겨주세요. 최대한 노력해볼게요.

블로그 내용을 진행해보다가 문제 발생시 지나치지 말고 댓글로 알려주세요. 그래야 다음에 해당 글을 읽는 분에게 도움이 됩니다.

해본 결과를 바탕으로 포스트를 작성하지만 시간이 경과하면
똑같이해도 동작안할 수 있습니다.



글이 많이 유익하셨다면 토스아이디로 후원해주세요. 토스아이디



제가 쓴 책도 한번 검토해보세요 ^^