2012년 2월 24일 금요일

영상입력장치 3

지난 글에서 아날로그인 빛 렌즈를 통해 센서에 영상(빛)을 맺는 과정에 알아둬야하는 촛점거리, 광각에 대해서 이야기했다. 또 아날로그인 빛이 감응하는 센서에 의해 디지탈인 RGB로 변했고 이것이 편의를 위해 YUV 포맷으로 변경된다고 했다.

YUV 데이타는 서브샘플링되어서 사용되는게 일반적이다.  YUV 데이타 포맷은 통상 HW인코더가 지원하는 포맷을 따라야 하는 것이라 스펙에 따라 설정하면 된다.

Digital Sensor입장에서는 보낼 영상을 YUV Format으로 단단히 잘 준비했는데 이제 인코더로 보내는것 이 남아 있다.


CCIR 601/656

최근에는 Full HD급 센서에서 고속 시리얼 방식인 MIPI인터페이스를 사용한다고 하는데 현재 일반적인 Sensor Interface 로 병렬방식인 CCIR 601이 많이 사용되며 CCIR 656 포맷도 가끔 사용되는것 같다.

CCIR 601/656은 최근에는 BT.601/656 라고들 하는데 같은 의미로 이해하면 된다.
참고로 CCIR 601과 656의 차이점은 데이타를 전송시에 사용되는 Sync 신호에 차이가 있다.

원래 CCIR 601은 영상을 스트리밍하기 위한 포맷인데 Camera Sensor Interface에서는 데이타를 수신하는 포맷으로 사용되고 있다.





  • Vsync
  • Hsync
  • Pixel Clock
  • Master Clock


  • 간단하게 설명하면
    1초의 30장의 영상을 보내는 센서가 있다고 하지 AP(Application processor) 센서모듈이 던져주는 데이타가 어떤 데이타인지 알아내기 위해서는 서로 신호(Sync)가 맞아야 한다.

    Vsync은 1장의 영상 데이타를 나누는 기준이 되는 신호(Sync)다.
    Hsync은 1줄의 영상데이타를 구분하는 기준이 되는 신호다.
    Pixel Clock을 1 Pixel의 영상 데이타를 전송할때 필요한 Clock이다.
    Master Clock은 Camera Module이 외부에서 공급받는 Clock이다. Clock은 두개의 장치간의 동기화를 위해서 사용되는것으로 YUV영상데이타를 수신받아야하는 Application Process와 Camera Sensor Module간에 데이타를 정확하게 주고받을 수 있는 기준이 되는 Clock이다.

    Pixel 데이타는 얼마인가?
    전송되는 포맷에 따라 다르다. YUV422로 서브샘플링했다고 가정하면 휘도 4 색상정보가 각각 2씩이다. RGB가 24bit라면 YUV 원본은 24bit 지만 서브샘플링한 결과는 16bit가 된다.
    Pixel 데이타를 표현하는데는 16bit가 필요한 셈이다.

    CCIR 센서 Interface는 Sync 신호를 제외하고 병렬 8bit데이타 라인을 사용한다. 한번에 8bit를 동시에 보낼 수 있다는 뜻이다. 640*480 영상은 640*480*16bit의 pixel데이타로 구성이되므로 8bit씩 보내는 병렬인터페이스에서는 640*480*2 Pixel Clock이면 데이타를 전송할 수 있다.

    Clock을 표현할때 Hz라는 용어를 사용하는데 Hz는 1초에 1번에 해당한다.

    1 Pixel 데이타를 보낼 때 보내는 신호가 Pixel Clock이므로
     만약 1초에 한장을 보낸다고 하면
    Camera sensor모듈이 1장의 데이타가 640*480*2 Pixel로 구성되므로 Clock도 640*480*2 번만큼 발생해야한다. 1초에 한장이 이정도지만 초당 30장의 영상을 전송해야한다면 640*480*2*30개의 pixel 데이타가 전송되어야 하고 이만큼의 Clock이 필요하다.

    계산상으로는 18432000 즉 18Mhz의 Pixel Clock이 필요하다.
    실제로는 좀 더 빨라야하는데 중간 중간에 쉬는 시간(blank)구간도 감안해야하기 때문에 초당 30장을 보내기 위해서는 Blank구간을 제외한 시간동안 저 데이타를 보내야 하므로 좀 더 빨라야 30장 전송이 가능하다.

    참고로 1280*720 데이타는 사이즈가 3배더 추가되고 Pixel Clock도 3배더 추가된다.

    (1280*720*2)*30 하여 최소 56Mhz의 Pixel Clock이 필요하다.


    Convert 그리고 Gamma

    영상이 RGB/ YUV 등으로 변환(아날로그 같은 선형데이타가 디지탈같은 비선형데이타로)이 되다보면 영상에서 어두운 부분은 더 어둡게 , 밝은 부분은 더 밝게 되는 경우가 있다. 이런 현상을 보정하기 위해서 Gamma Function이라는게 존재한다. 실제 동작은 변환시 보정되는 Red/Green/Blue 각각에 대해 참조되는 Gamma table을 사용한다.



    댓글 없음:

    댓글 쓰기