[Study]/[Image Processing]2009. 10. 12. 13:26

우연히 인터넷 검색중에 YUV포멧 종류에 대한 설명이 너무나도 자세하게 설명된 사이트를 찾아서 퍼왔음
http://cafe.naver.com/linuxkernel26 의 DMB쪽 보면 H.264에 대한 정보들이 많이 있음

1. YUV 4:1:1

 콤포넌트 비디오의 휘도신호(Y)와 색차신호(R-Y, B-Y)를 디지털화하는데 사용되는 표본화 주파수의 비율. Y신호는 13.5MHz, 색차신호 R-Y와 B-Y는 각각 3.37MHz로 표본화된다.
TV화면 등의 주사선에 포함되는 정보신호 중 휘도 정보(Y)와 색차 정보(Cb, Cr)의 성분비율은 보통 : : 으로 표시되는데 이러한 표시는 휘도 신호(Y)와 두 개의 색차 Cb, Cr 신호의 표본화 주파수의 비율을 나타낸다. 여기서 4:1:1의 비율이란 휘도 신호 Y의 표본화 주파수 13.5㎒를 4로 할 때 색차 신호 R-Y, B-Y는 각각 1이기 때문에 휘도 신호의 표본화 주파수 13.5㎒의 1/4이 되므로 색차 신호 R-Y와 B-Y는 각각 3.37㎒가 된다. 또한 4:1:1의 신호처리 기법은 4:2:2의 신호처리 기법 등에 비해서 해상도 등이 다소 떨어지는 단점이 있으나 비교적 적은 데이터 비율로 디지털 영상신호를 기록 수 있다는 점에서 경제성이 우수하며 이러한 포맷은 가정용 DVTR(Digital VTR)의 세계 통일 규격인 DV(DVC)와 업무 및 방송용 포맷으로 널리 이용되는 DVCAM과 DVCPRO(25Mbps 규격) 등에 제한적으로 이용되고 있다.
참조 : 4:2:2

 2. YUV 4:2:0

 Y신호가 매 라인마다 13.5MHz로 표본화될 때 R-Y와 B-Y는 한 라인을 건너뛰어 6.75MHz로 표본화되는 (즉, 한 라인은 4:0:0으로 다음 라인은 4:2:2로 표본화) 휘도와 색차신호의 표본화 주파수 비율.
4:2:2 표본화에서는 수직라인의 색해상도가 수평라인 해상도의 1/2인 반면, 4:2:0 표본화에서는 수평과 수직해상도가 같다.
TV화면 등의 주사선에 포함되는 정보신호 중 휘도 신호 Y의 표본화 주파수 13.5㎒를 4로 할 때 두 개의 색차 신호 Cb, Cr의 종 방향 및 횡 방향 모두를 Y의 표본화 주파수에 대해 1/2로 표본화하는 신호처리 기법이다. 즉 라인마다 Y의 13.5㎒에 대해 R-Y를 Y신호의 1/2인 6.75㎒로 표본화하는 동시에 B-Y는 6.75㎒로 표본화하지 않고, 이와 반대로 Y의 13.5㎒에 대해 R-Y를 6.75㎒로 표본화하지 않는 동시에 B-Y는 6.75㎒로 표본화하는 상태를 교대로 되풀이하는 것을 말하는데 이것을 비율로 나타내는 경우 4:2:0과 4:0:2로 반복이 된다. 따라서 이러한 포맷으로 표현되는 표본화 주파수비율을 일반적으로 4:2:0으로 나타내고 있다.
참조 : 4:2:2, DVC

 3. YUV 4:2:2

콤포넌트 비디오의 휘도(Y)와 색차신호(R-Y, B-Y)를 디지털화하는데 사용되는 표본화 주파수의 비율. 4:2:2라는 용어는 Y가 4번 표본화될 때 R-Y와 B-Y는 2번 표본화되는 것을 의미하는데, 이는 4:1:1에 비하여 휘도에 대한 색도대역폭을 더 많이 할당한 것이다. CCIR 601에서 4:2:2 표본화는 디지털 스튜디오 장비의 표준으로서, 4:2:2와 CCIR 601이라는 두 용어가 일반적으로 동의어로 사용되지만 기술적으로 정확히 같은 의미는 아니다.
Y의 표본화 주파수는 13.5MHz이고, R-Y와 B-Y는 각각 6.75MHz로서 고품질 크로마키에 적합한 3.37MHz의 최대 가능 색대역폭을 제공한다.
TV화면 등의 주사선에 포함되는 정보신호 중 휘도 신호 Y의 표본화 주파수 13.5㎒를 4로 할 때 두 개의 색차 신호 Cb, Cr를 횡 방향으로 Y의 표본화 주파수에 대해 1/2로 표본화하는 신호처리 기법이다. 즉 Y의 표본화 주파수 13.5㎒에 대해 색차 신호 R-Y, B-Y는 각각 6.75㎒가 된다. 이러한 신호처리 기법은 8비트 양자화 규격의 D-1, DVCPRO50, Digital-S, Betacam SX 그리고 10비트 양자화 규격의 D-5, 디지털 베타캄과 같은 방송·업무용 포맷의 콤포넌트 DVTR 등에 이용되고 있으나 ITU-R-BT.601에서 규정하는 Y신호의 최대 주파수가 5.5㎒인 점을 고려하면 충분한 샘플링 주파수이긴 하지만 데이터 비율은 콤포지트 방식의 약 2∼2.5배에 이르는 216/270Mbps가 되므로 이로 인해 발생된 막대한 디지털 데이터를 비디오 테이프에 여유 있게 기록하기 위해서는 고효율의 압축 알고리즘이 사용되는 경우가 있다.
참조 : CCIR 601

4. YUV 4:2:2:4

4:2:2와 같으나 4번째 요소로서 13.5MHz로 표본화된 키신호를 포함한다.

5. YUV 4:2:2:P@ML

MPEG-2에서는 여러 가지 도구(Tool)가 제공되고 있어서 대단히 광범위한 응용에 대응할 수 있다. 한편 하드웨어 관점에서 바라보면 지원해야 할 사항이 너무 많아 모든 것을 실현하기가 대단히 어렵다. 가령 A사의 부호기가 4:2:2를 직접 부호화 할 수 있도록 만들어진 것이라도 B사의 복호기가 4:2:0만을 복호 할 수 있다면 A사의 비트열(부호기에 의해 생성된 데이터)의 실용성은 낮아지게 된다. 이와 같은 일이 자주 일어나면 모처럼의 국제표준이 정보의 상호 이용성에 있어서 사실상 무용지물이 되어버린다. 따라서 이와 같은 사태를 피하기 위하여 MPEG-2에서는 "프로파일(Profile)"과 "레벨(Level)"이라고 하는 개념을 도입하여 MPEG-2의 복호기의 특성을 나누고 있다. 즉 메인 프로파일의 메인레벨은 "MP@ML(Main Profile at Main Level)이라고 약칭하게 되는 것이다. ☞ MPEG

6. YUV 4:4:4

콤포넌트 비디오의 휘도(Y)와 색차신호(R-Y, B-Y)나 R·G·B신호를 디지털화하는데 사용되는 표본화 주파수의 비율. 4:4:4에서 모든 콤포넌트들은 동일한 수의 표본들로 이루어진다.
TV화면 등의 주사선에 포함되는 정보신호 중 휘도 신호 Y와 두 개의 색차 신호 Cb, Cr 모두의 표본화 주파수를 13.5㎒로 하는 신호처리 기법이다. 한편으로는 그래픽환경에서 사용되는 고해상도 Component 디지털 비디오 신호의 샘플링 비를 나타내는 약어의 표현을 말한다. 이들 숫자의 의미는 3개의 콤포넌트 채널(Y, Pb, Pr 또는 R, G, B)을 나타내며 3개의 채널을 각각 13.5㎒로 샘플링 한다. 즉, 비디오 신호의 루미넌스와 크로미넌스 차이를 나타내는 Y, R-Y, B-Y에 사용되는 샘플링 주파수는 13.5㎒로 각각 모두 같다. 4:4:4는 통상적으로 컴퓨터를 기본으로 하는 장비에서 장비의 특성이나 성능을 나타내는 기준으로 삼고 있다.

 7. YUV 4:4:4:4

 13.5MHz로 표본화된 키신호가 추가로 포함되어 있는 것을 제외하고는 4:4:4와 동일하다.


출처: http://cafe.naver.com/linuxkernel26/654

'[Study] > [Image Processing]' 카테고리의 다른 글

H.264 Standard(H.264 표준문서 영문/한글 판)  (0) 2009.10.12
주기, 주파수, 각속도, 파장  (0) 2009.09.18
Finite impulse response  (0) 2009.09.18
Rate-Distortion optimization  (0) 2009.09.16
Posted by xiasonic
[Study]/[MFC]2009. 10. 6. 07:01
출처 : http://tong.nate.com/navy9370/30050194

출처 : http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=8144&ref=8144

아래 항목만 다 알면 코딩하는데 많은 도움이 되리라 생각됩니다.

저도 사실 전부 모릅니다 ㅡㅡ;;

너무 많은 걸~~




출처 : Tong - navy9370님의 MFC통
Posted by xiasonic
[Study]/[MFC]2009. 10. 5. 17:50

1. CDC클래스

CDC클래스는 응용 프로그램에서 화면을 컨트롤하는 핸들을 포함하고 화면에 관계되는 여러 함수를 내장하고 있는 클래스이다. 왜 이렇케 화면을 출력하는데 DC를 얻어야 하는가는 DC를 사용하지 않은 경우 인스턴스개념에서 벗어나기 때문이기도 한데 내가 프로그램할 응용프로그램의 좌표를 기본으로 하여 출력해주기 때문, 즉 상대좌표가 가능하기 때문이다. 만약 DC를 사용하지 않으면 내 응용프로그램 윈도우가 아닌 전체 화면을 기준으로 출력하기 때문에 작업하는데 머리아픈 일들이 많아진다. 그 외에도 하나의 선을 긋는대도 그에 따른 선의 정보를 일일이 정해주어야하기 때문이기도 하다.

 

기본 코딩의 개념

OnDraw()함수에 출력하는 테이터를 변수A고 입력하고 다른함수에서 변수A를 컨트롤하는 코딩을 한다음 Invalidate(TRUE);의 명령을 이용해 OnDraw()함수를 호출해 다시 화면에 출력함으로서 행해진다.(당연히 변수 A는 전역변수가 되야한다)

이는 고정된 위치에 데이터만 병경되는 형태와 화면에 그림이나 글자 등이 이동되는 형태(에니메이션)를 구현할수 있다.

 

2. CDC 클래스 얻기

  - CDC를 얻는 방법은 크게 4가지가 있다.

  2.1 OnDraw()나 OnPaint()함수를 이용하는 방법

    - 이 방법은 윈도우의 크기가 변하거나 다른 프로그램에 의해서 가려졌다가 다시 출력이 되어도 화면 출력이 변하지 않는다. 즉 응용프로그램에 상태가 변하면 WM_PAINT메시지가 호출되고 이 메시지에 의해서 OnDraw(), OnPaint()함수를 다시 호출하여 화면을 갱신하기 때문이다.(중요한 부분)

  2.2 GetDC를 이용하는 방법

    - 2.1의 OnDraw()나 OnPaint()함수 이외의 타 함수에서 DC를 얻는 방법이다. 이는 일시적인 출력이기 때문에 응용프로그램의 상태가 변화하면 WM_PAINT메시지가 호출되고 이 메시지에 의해서 OnDraw(), OnPaint()함수를 호출하여 갱신하여 사라진다.

    - 사용 형식은

        CDC *pDC = GetDC();

        출력 코딩

        ReleaseDC(pDC);

      CDC클래스를 이용해 포인터 pDC를 얻고(구지 포인트를 사용하지 않으셔도 된다.) GetDC()를 사용하여 타함수에서 사용할수 있게 해준다. 당연히 ReleaseDC()를 이용해 해제해주어야 한다. 필자는 ReleaseDC()를 사용하지 않아 리소스 과다 사용으로 프로그램이 도중 종료되는 경험이....

  2.3 CClientDC를 이용하는 방법

    - GetDC()와 같고 ReleaseDC()를 사용하지 않는다.

    - 사용 형식은

        CClientDC cdc(this);

  2.4 윈도 DC를 얻는 방법

    - 이는 응용프로그램 자체윈도우를 핸들링한다. 윈도우 기본틀을 바꾸고자 할때 사용하면 유용하다.

    - 사용형식은

        CWindowDC *pDC = GetWindowDC();

        출력 코딩

        ReleaseDC(pDC);

 

참고 자료(Visual C++ Programming Bible)


출처:  http://blog.naver.com/rfsoft/12003643946

         

Posted by xiasonic
[Study]/[MFC]2009. 9. 29. 19:58

비주얼C 를 사용하다보면

인텔리센스가 안먹거나, 클래스뷰에 클래스와 멤버변수들이 제대로 출력되지 않는 경우가 있다. 

이럴 때는 프로젝트 폴더로 들어가서...

ncb, opt, plg 파일 세 개를 삭제해준다음에 다시 프로젝트를 열면 됨.

 

Posted by xiasonic
[Study]/[MFC]2009. 9. 29. 19:55
Invalidate()함수는 강제로 WM_PAINT메시지를 발생시키고, WM_PAINT메시지는 OnDraw()호출하여 화면을 다시 그린다.

Invalidate(true와 false)로 쓸수 있는데
true일땐 배경을 전부 지운후 그리는것이고
false일때는 변경된 부분만 다시 그린다.
Defaulte는 true
Posted by xiasonic
[Study]/[MFC]2009. 9. 29. 19:46

CString str;
 str.Format(L"hi");

pDC->TextOutW(x,y,str);

여기서 중요한점...

CString부분에서
스트링을 넣을때 앞에 대문자 L을 해줘야 된다.
L"String"처럼...

이유는 프로젝트 생성시 영어로 하면 문제 없지만
한글로 설정하면
텍스트를 표시 할려면 저렇게 해야된단다...

역시나 M$의 죶같은....
가끔가다 외국에서 받은 라이브러리가 컴파일도 안되고 삽질하다보면
결국 언어 문제때문인적이 몇번 있었는데...

어떻게 된녀석인지 모르겠다...

정말 이런 면에서는 자바가 개발이 편한것 같다.
Posted by xiasonic
[Study]/[Linux & Unix]2009. 9. 25. 13:56
먼저 vi /etc/X11/xorg.conf 파일을 open한후 아래의 항목을 찾아 수정해준다.

 Section "Device"
     Identifier  "Configured Video Device"
     Option      "UseFBDev"      "true"
 EndSection
 
 Section "Monitor"
     Identifier  "Configured Monitor"
 EndSection
 
 Section "Screen"
     Identifier  "Default Screen"
     Device      "VirtualBox graphics card"
     Monitor     "Generic Monitor"
    DefaultDepth    24
     SubSection  "Display"
        Depth   24
        Modes   "1600x1200" "1280x1024" "1024x768"
     EndSubSection
 EndSection


터미널에서의 해상도 설정및 주사율 설정
$ cvt 1368 676 60
# 1368x676 59.74 Hz (CVT) hsync: 42.00 kHz; pclk: 74.25 MHz
Modeline "1368x676_60.00"   74.25  1368 1432 1568 1768  676 679 689 703 -hsync +vsync

해상도 자동검색 끄기 방법
xorg.conf 파일에서
Section "Device"
Option "modeValidation" "NoDFPNativeResolutionCheck"

Posted by xiasonic
[Study]/[Image Processing]2009. 9. 18. 14:16

주기: T
주파수: f
각속도: ш(오메가)
파장: λ(람다)

T = 1/f = 2π/ш
v = fλ

'[Study] > [Image Processing]' 카테고리의 다른 글

H.264 Standard(H.264 표준문서 영문/한글 판)  (0) 2009.10.12
YUV(Ycbcr)의 종류  (0) 2009.10.12
Finite impulse response  (0) 2009.09.18
Rate-Distortion optimization  (0) 2009.09.16
Posted by xiasonic
[Study]/[Image Processing]2009. 9. 18. 13:36

개인적으로 까먹을까봐 대충 적어놓은 글...

DSP시간에 배웠는데 기억이 잘 나지는 않지만...
디지털 시스템 input->system->output이 있을때
system에서 행해지는 작업 필터 의 계수를 알기 위해서
임펄스값을 입력으로 넣으면 출력되는 output값이 필터의 계수값이 된다.
특별히 임펄스 리스폰스값을 h[n]이라고 하고 이는 변환행렬 Bk와 같은 값이 된다.

간단히 말해서 어떤 시스템에서 필터 계수를 알수 없을때 이 계수를 찾기 위해서 입력값이 1인 임펄스를 시스템 인풋으로
넣으므로서 계수값을 알 수 있는것...

한가지 더 생각해 보아야 될것은 finite 즉 한정적? 인것을 생각해 봐야된다. 출력값이 ...0,0,0,0,1/3,1/3,1/3,1/3,0,0,0,0... 같이
한정적으로 (0은 값이 없는걸로 보는것) 나오는것 이라고 보면된다.

같이 공부 해야 될 것으로는
FIR, IIR, LTI(맞나??)등등

- Hello Digital Processing -(스펠이 맞나?) 책에 자세히 나와 있다.

A finite impulse response (FIR ) filter is a type of a digital filter. The impulse response, the filter's response to a Kronecker delta input, is finite because it settles to zero in a finite number of sample intervals. This is in contrast to infinite impulse response (IIR) filters, which have internal feedback and may continue to respond indefinitely. The impulse response of an Nth-order FIR filter lasts for N+1 samples, and then dies to zero.

- From Wikipedia, the free encyclopedia -

'[Study] > [Image Processing]' 카테고리의 다른 글

H.264 Standard(H.264 표준문서 영문/한글 판)  (0) 2009.10.12
YUV(Ycbcr)의 종류  (0) 2009.10.12
주기, 주파수, 각속도, 파장  (0) 2009.09.18
Rate-Distortion optimization  (0) 2009.09.16
Posted by xiasonic
[Study]/[Image Processing]2009. 9. 16. 16:08

Rate-Distortion optimization - how it works

Calculating the bit cost is made more difficult by the entropy encoders in modern video codecs, requiring the rate-distortion optimization algorithm to pass each block of video to be tested to the entropy coder to measure its actual bit cost. In MPEG codecs, the full process consists of a discrete cosine transform, followed by quantization and entropy encoding. Because of this, rate-distortion optimization is much slower than most other block-matching metrics, such as the simple sum of absolute differences (SAD) and sum of absolute transformed differences (SATD). As such it is usually used only for the final steps of the motion estimation process, such as deciding between different partition types in H.264/AVC.

대충 해석하자면
이미지를 압축 하는 과정에서 마지막 과정인 엔트로피 코딩시
이것을 다른 네트워크상대의 컴퓨터나 파일로 저장할때 비트수까지 카운트 해서
적은 량의 비트로 보내겠다는 소리 같은데....

오래전에?? 배워서 기억이 가물가물하고.. 영어 해석도 귀찮쿠...
- 출처: wikipedia.org -

'[Study] > [Image Processing]' 카테고리의 다른 글

H.264 Standard(H.264 표준문서 영문/한글 판)  (0) 2009.10.12
YUV(Ycbcr)의 종류  (0) 2009.10.12
주기, 주파수, 각속도, 파장  (0) 2009.09.18
Finite impulse response  (0) 2009.09.18
Posted by xiasonic