레이블이 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가지 색상을 합칠 경우 흰색이 나온다.


RGB값을  이용하여 LCD 에 Display 할 경우 위와 같이 동작을 할것이며, 이를 적용하여 나온 것이며,

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는 사람이 색을 어떻게 감지하는지에 대해서 힌트를 얻어 만들어낸 접근방식이다.


2.1 인간의 색 인식 방법 

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

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


  • 간상세포(막대세포)

사람마다 다르겠지만, 대체적으로 약 1억 3천만개의 간상세포을 가지고 있다고 한다.
빛에 대한 감도는 원추세포보다는 간상세포가 더 뛰어나기때문에 물체의 명암을 구별을 해주고 빛에 민감하다고 한다.
 
  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









  • 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




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



YCbCr 관련 사항 Link
  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


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

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

  http://www.avsforum.com/forum/149-blu-ray-players/2762609-official-sony-ubp-x800-owners-thread-no-price-talk-69.html




  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를 걸어두고 추후 정리

1.1 double buffering


1.2 triple buffering

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

  https://commons.wikimedia.org/wiki/File:Comparison_double_triple_buffering.svg

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

  http://blog.naver.com/ahyuo

  https://ko.wikipedia.org/wiki/%EC%8A%A4%EC%BC%80%EC%9D%BC%EB%9F%AC%EB%B8%94_%EB%B2%A1%ED%84%B0_%EA%B7%B8%EB%9E%98%ED%94%BD%EC%8A%A4

  https://msdn.microsoft.com/en-us/library/windows/hardware/ff570099(v=vs.85).aspx

  http://www.tweakguides.com/Graphics_10.html


Frame buffer

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

  https://www.kernel.org/doc/Documentation/fb/framebuffer.txt

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


OpenGl

  https://www.opengl.org/wiki/Framebuffer

흔들림보정

  https://en.wikipedia.org/wiki/Vibration_isolation
  https://en.wikipedia.org/wiki/Image_stabilization
  https://ko.wikipedia.org/wiki/%EC%98%81%EC%83%81_%ED%9D%94%EB%93%A4%EB%A6%BC_%EB%B0%A9%EC%A7%80

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