레이블이 Video인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Video인 게시물을 표시합니다. 모든 게시물 표시

11/25/2015

RGB , YCbCr, YUV 및 영상 Format 정리

매번 영상관련부분을 할때 마다 관련부분을 까먹어서 아래와 같이 간단히 정리한다.


1. RGB (Red , Green, Blue)

일반적으로 RGB Color의 정확한 이해부터 해보도록 해보자.
어렸을 때 흔히 빛의 3원색과 색의 3원색을  배웠던 기억이 있을 것이다.
우선 RGB를 이해하기위해서는 빛의 3원색의 이해가 중요하다.
색의 3원색은 우리가 물감을 이용할때가 필요 할때이며, 빛의 3원색과 성질이 다르다.

1.1 빛의 3원색 

이 세상에는 다양한 색이 존재하고 인간은 이를 많은 색상을 구분하는 것이 가능하다. (사람이 모든 색상을 완벽하게 구분을 하는 것은 아니지만)

색상의 기본적인 이해부터 해보도록 해보자. 일단 빛이 있어야 사람은 색상을 구분한다.
흔히 예전에 빛의 R, G, B로 색을 기본으로 합칠 경우 거의 모든색상이 표현이 되는데, 이를 빛의 3원색이다. 그리고, 이것이 RGB 이다.
기본적으로 존재하는 색상은 3가지 색상이며 이를 혼합하여 다른색상을 표현을 하는 것이 기본원리이다.
흔히 말하는 빛의 3원색이라고 한다. 빛의 경우 3가지 색상을 합칠 경우 흰색이 나온다.




1.2 빛의 이론과 성질 

빛의 이론으로 들어가면 빛도 일종의 파장과 진동수가 존재하며 이를 깊게 파고 들고자 한다면 (예전부터 과학동아 많이 봐왔기에 이 부분을 간단히 정리하겠다 )
빛은 파동설과 입자설 존재하며, 이 부분은 거의 정설로 되어져 있다. (이 부분까지 들어가며 설명이 길어질 것 같다, 사실 나도 자세히 모르겠다.)

간단히 설명하면, 빛도 일종의 파장을 가지고 있으며, 주파수를 가지고 있다고 하는 것이 기본 정설이다. 그래서 일종의 주파수 개념이라고 생각을 파면되겠다. 거기에 입자설까지 나왔는데, 그 부분은 나도 오래되어서 까먹었다. (추후 공부하겠지만, 현재부분과 별로 관계가 없다)
관련부분이 궁금하다면, 직접 검색을 추천 (이 부분은 이전에 과학동아에서 우주관련부분에서 많이 설명이 나왔다.)

그래서 결론적으로 RGB의 즉 빛은 3원색에서 각 색상에는 특정 파장(Wavelength) 과 진동수(Frequency ,Hz) 도 존재한다는 것이다.

일단 차근차근 살펴보자. 인간이 볼수 있는 가시광선부터 살펴보자.
아래의 그림처럼 Wavelength와 Frequency를 나타내어주고 있으며,  빨간색으로 갈수록 점점 Low Frequency 와 Wavelength가는 것을 볼수 있다. .  
빛을 파동설로 보기때문에 이를 Microwave와 Radio 까지 연결시켜 볼수 있다.
빛을 일종의 전자파 개념으로 보는 것이다.


  • 파동-입자설 
 https://ko.wikipedia.org/wiki/%EB%B9%9B
 https://ko.wikipedia.org/wiki/%ED%8C%8C%EB%8F%99-%EC%9E%85%EC%9E%90_%EC%9D%B4%EC%A4%91%EC%84%B1


사람은 가시광선의 빛을 보고 색을 감지하기 때문에 이부분에 대해서 좀 더 자세히 알아보자.


RGB 색상혼합
  http://yjh-phys.tistory.com/35
  https://ko.wikipedia.org/wiki/RGB_%EA%B0%80%EC%82%B0%ED%98%BC%ED%95%A9


sRGB관련사항
  https://en.wikipedia.org/wiki/SRGB
  https://ko.wikipedia.org/wiki/SRGB



1.3 RGB의 표현 


  • RGB16  (5:6:5) 
Red,Blue에 5Bit를 할당하고, Green에 6bit에 할당하며, 이유는 Green 값이 Gamma 값과 밀접하기때문에 이곳에 더 할당값을 더 주었다.

그리고, 2Byte로 쉽게 표현이 가능하기에 , 이전에는 Video 영상보다는 거의 OSD에서 많이 사용되어져 왔으며 사용되었다.


  • RGB24  (8:8:8) 
각각 8bit씩 할당하며, 이 값은 LCD에도 전달하기에도 편하고 많이 사용되어지고 있다.
흔히 True Color 라고 하며, RGB888이라고 한다.


  • RGBA 
상위 RGB24와 거의 동일하지만, A 즉, 알파,Alpha 값 즉 투명값을 두어 32bit로 만들어 이를 사용하고 있다.



2. YUV 


YUV를 논하기 전에 사람의 색상을 인식하는 방법에 대해서 좀 알아보도록하자.
인간은 어떻게 색을 구분하는지에 대해서 원리를 알아야 YUV에 대한 기본접근이 가능하기 때문이다.

상위 RGB는 물리적인 접근이라면, YUV는 사람이 색을 어떻게 감지하는지에 대해서 힌트를 얻어 만들어낸 접근방식이라고 한다.
그리고, Analog TV, NTSC 와 PAL에서 이를 주로 사용했으며, Codec에서 주로 사용한다.



2.1 인간의 색 인식 방법 

인간은 망막을 가지고 있으며,  망막에는 망막에 상이 맺히며, 이 상을 시세포가 인지하여 색을 구분을 한다.
시세포는 다시 2가지로 구분이 되는데, 이 것이 간상세포와 원추세포이다.

각 세포의 역할을 살펴보면 다음과 같다.


  • 간상세포(막대세포)
사람마다 다르겠지만, 대체적으로 약 1억 3천만개의 간상세포을 가지고 있다고 한다.
빛에 대한 감도는 원추세포보다는 간상세포가 더 뛰어나기때문에 물체의 명암을 구별을 해주고 빛에 민감하다고 한다.
이 값이 Y값이며, 그래서, YUV 개념이 나왔다고 한다. 
 
  https://ko.wikipedia.org/wiki/%EA%B0%84%EC%83%81%EC%84%B8%ED%8F%AC
  https://en.wikipedia.org/wiki/Rod_cell


  • 원추세포(원뿔세포)
사람마다 다르지만, 약 7백만개 정도를 가지고 있다고 하며, 원추세포의 역할은 자세한 모양과 색을 구별을 해주는 역할이다.
상위에서 RGB에서 배웠듯이 빛의 3원색에 각 빛에는 파장이 존재하며, 각 원추세포는 16개 정도의 원추세포가 존재하는 것으로 알려져있다.
대략 아래와 같이 3가지색으로 구분해보고 그 비율을 보면 아래와 같다.

  1. 장파장 L 원추세포인 로우(ρ)세포 (빨간영역)
  2. 중파장 M 원추세포인 감마(γ)세포 (초록색 과 노랑색 부분)
  3. 단파장 S 원추세포인 베타(β)세포 (파란색)

  https://en.wikipedia.org/wiki/Cone_cell
  https://ko.wikipedia.org/wiki/%EC%9B%90%EC%B6%94%EC%84%B8%ED%8F%AC


  • 사람의 색 인지방법 
  http://yjh-phys.tistory.com/35
  http://lovescience.pe.kr/ms/chapter2/color.htm



2.2 YUV 값의 사용 


  • YUV 값의 사용 
YUV에서 가장 중요한 것은 Y값이며, Y 값만 전송하면, 흑백 TV가 되어진다.
물리적으로는 YUV는 존재하지는 않지만, 주로 전송을 위해 혹은 Codec, 영상처리를 위해서 사용하는 것으로 보인다.

  • YUV의 주파수 개념도입 
생소할지는 모르지만, 보통 영상처리 혹은 Codec에서 많이 사용되어지며, 영상의 한 장면 2D로 나타낼 경우, 
이를 공간주파수? 개념으로 생각하면된다. (정확히 말해 주파수가 아님,주파수는 시간기반임)
예를들면, 사진의 경우 Y값을 간단히 생각을 해보면, 사진 속의 물체 or 사람있다고 하면 그 주변의 Y값은 각 그라데이션 형식으로 윤곽을 나타낸다.
이 때 이 Y값 변화율을 공간주파수?로 도입하여, 2D FFT or DCT 기반으로 사용해서 주파수 대역을 파악 후 각 윤곽(높은 공간변화?) 파악이 가능하다.
그리고, 영상(사진에 Time 축 추가)의 경우, Time 축을 추가되면서 더 재미었지며, 특정영역의 시간변화율 측정에도 주파수 개념을 넣어 또 측정 가능하다.
즉, 3D FFT or DCT 도 가능하며, 이를 사용하는 것이 Codec 과 영상처리인 걸로 기억한다.

  • YUV 사용 
YUV도 좀 깊게 들어가면, Analog 와 Digtal이 존재하며, 이제 거의 Analog를 사용안하니, Digtal 만 알아두자 
YPbPr : Analog 방식으로 Y 값 과 UV 값을 각 주파수에 할당해서 전송하는 것으로 기억하며 Bandwith가 다름(Component Cable) (정확히 기억이 안남?) 
동축 Cable 기반으로도 가능하며, 여러 Channel을 합쳐서 FDM 형식으로 보낼수도 있다. (1 Channel 당 각 Y Bandwith, UV Bandwith가 존재하며,이를 각 Channel 할당하여 전송)
YCbCr : Digtal 에서 Codec or Video 영상처리에서 주로 사용되어진다.
  https://en.wikipedia.org/wiki/YUV

  • YCbCr 관련 사항 Link
간단히 정리하면, 각 Y 값 기반으로 UV를 몇개 넣어 구성하는 구조로 아래와 나뉜다.
YUV 4:4:4 / YUV 4:2:2 / YUV 4:2:0 / YUV 4:1:1
  https://en.wikipedia.org/wiki/Chroma_subsampling
  https://ko.wikipedia.org/wiki/%ED%81%AC%EB%A1%9C%EB%A7%88_%EC%84%9C%EB%B8%8C%EC%83%98%ED%94%8C%EB%A7%81


  • CIE-1931 Color Space 
아래와 같이 각 빛의 Wavelength를 알아보자. (nm, Wavelength라고 보면되겠다)
X 축 Cb
Y 축 Cr


  https://en.wikipedia.org/wiki/Chromaticity
  https://en.wikipedia.org/wiki/CIE_1931_color_space

   https://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_xy_chromaticity_diagram_and_the_CIE_xyY_color_space

  http://www.fourcc.org/yuv.php
  http://ryan.tistory.com/129
  https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb970578(v=vs.85).aspx

9/18/2015

Video 관련글 (추후 정리)

1. 비디오 개념


2. NTSC 와 PAL 소개


3. Interlace 와 Progressive

4. Deinterlacing 기능


4. 비디오 버퍼링


5. Frame buffer

6. Frame buffer 성능 DirectFB 기능

APP들

한계


6. MPEG4와 H.264소개

7. Frame 소개


9/10/2015

Frame Buffer

1. Video 기본이해

원래는 길게 설명하려고 했으나, 시간이 없어 간단히만 링크로 하며, 추후 시간이 있을 때 정리하도록 하자.


1.1 SD TV의 해상도와 DeInterlace

일단 SDTV의 해상도 와 Deinterlacing 정도 이해하고 이를 보정하는 기술을 알아두면 되겠다.
이전에 많이 겪어지만, 까먹고 하기에 Link만 걸어둔다.

  https://ko.wikipedia.org/wiki/NTSC
  https://ko.wikipedia.org/wiki/PAL

  https://en.wikipedia.org/wiki/NTSC
  https://en.wikipedia.org/wiki/PAL


  https://en.wikipedia.org/wiki/Screen_tearing
  https://en.wikipedia.org/wiki/Flicker_(screen)

  https://en.wikipedia.org/wiki/Deinterlacing
  https://books.google.co.kr/books?id=MyDoAwAAQBAJ&pg=PA17&lpg=PA17&dq=video+Ghost+%ED%98%84%EC%83%81&source=bl&ots=Z0vEsRUMGU&sig=EnHwwWMpObzJOS0xCGGvD63N6BM&hl=ko&sa=X&ved=0CFAQ6AEwC2oVChMI96mfvbPsxwIVkJGOCh1bLQta#v=onepage&q=video%20Ghost%20%ED%98%84%EC%83%81&f=false


Weaving 



  https://en.wikipedia.org/wiki/Interlaced_video

Interlace

고스트현상(이중화면)


480i
  https://en.wikipedia.org/wiki/Vertical_blanking_interval
  https://en.wikipedia.org/wiki/Screen_tearing 
(스크린 짤림)

비디오 코덱과 동영상 포맷(책)
  https://en.wikipedia.org/wiki/Vertical_Roll
  http://www.samsungsvc.co.kr/online/diagnosisgoVw.do?domainId=NODE0000033866&node_Id=NODE0000125027&kb_Id=KNOW0000019799&pageNo=642

관련용어

50Hz   = 20ms
60Hz   = 16ms
30Hz   = 33ms
25Hz   = 40ms


사실 요즘 Video Frambuffer Driver를 다시 만들고 하면 좋겠지만, 그럴 일이 거의 없거니와,
그래도, 기술은 까먹지 말아야 할 것 같아 아래에 Link를 걸어두고 추후 정리

  • double buffering
보통 OSD에서 2개의 Frambuffer 사용 TI Davinchi가 이렇게 사용 

  • triple buffering
보통 Video에서 사용하며, 그 이상도 사용가능하며, TI Davinchi가 이렇게 사용  

10/28/2014

i p b frame

http://blueheartscabin.blogspot.kr/2013/08/ipb.html

http://www.streaminglearningcenter.com/articles/producing-h264-video-for-flash-an-overview.html?page=4

http://www.axis.co.kr/img/product/brochure/wp_h264_kor_lo.pdf

http://www.programering.com/a/MjNwcTMwATg.html

http://www.mathcs.emory.edu/~cheung/Courses/558a/Syllabus/2-video/mpeg2.html

I frame : key frame

P - frame : 이전 I frame or 이전의 P frame을 정보를 사용하며 ,  P Frame은  전체 이미지가  바뀌는 것이 아니라, 이지지의 블럭들이 옆으로 이동하는 것을 움직이것을 것을 생각하여, 차이 값을  부호화 하여 기록 .


B - Frame :  이전, 이후의 I- Frame 과 P Frame을 모두 사용  , P frame과의 차이는 단 반향 혹은 양방향이냐의 차이 .



http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC




http://microdev.tistory.com/109
http://microdev.tistory.com/110