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을 사용한다.



    2012년 2월 17일 금요일

    영상입력장치 2

    이전 블로그에서 영상입력장치는 CMOS 기반의 카메라 센서가 빛을 디지탈 정보인  YUV 형태로 만들어 전달한다고 했다.

    영상입력장치에 대해서 조금 더 이야기해볼텐데 제품홍보문구를 보면 화각이니 HD급, VGA급이라는 용어가 사용된다.

    블랙박스에서 사용하되는 영상입력장치는 흔히 접하게 되는 디지탈 카메라와 유사하고 좀 더 크게 생각하면 Digital이라는 점을 제외하고는 일반 아날로그 카메라와 일맥상통한다고 할수 있다.

    제품을 접하게 되면 시제품의 녹화된 영상을 보면 번호판이 잘 보이는지, 아니면 어두운곳(암부)의 영상의 화질은 어떠한지 같은 영상화질에 대한 논의를 많이 하게되는데, 카메라(디지탈카메라)에 대한 경험이 있다면 어떤 부분을 중심으로 해결책을 찾아야 할지 도움이 된다.

    촛점이 맞지 않고 어두운 부분에서는 노이즈와 계단현상이 보인다면 어디를 살펴봐야할까 ?


    촛점거리


    촛점거리란 사람의 눈에서는 홍체와 망막사이의 거리를 말하고 블랙박스나 카메라에서는 렌즈와 렌즈를 통해 들어오는 영상이 맺히는 지점까지의 거리를 뜻한다. 여기서 맺히는 지점에는  일반 카메라의 필름 또는 RGB 신호 센서(CCD,CMOS)가 있다.


    간략히 정리하면 촛점거리가 길면 화각이 좁고 멀리있는 사물이 제대로 보이고, 촛점거리가 짧으면 화각이 넓고 가까이 있는 사물이 제대로 보이게 된다.


    줌기능이 있는 디지탈 카메라를 써본 사람이면 줌기능이 동작했을때 보여지는 영상의 범위(화각)가 달라진다는것을 알 수있다. Zooming을 하면 줌렌즈 내부에 포함되어 있는 여러개의 렌즈(오목,볼록)가 조합하는것하여 결과적으로 촛점거리가 멀어지고 보여지는 영상에 영향을 준다.



    줌, 단렌즈 와 줌렌즈

    디지탈 카메라를 사용해본적 있는 분들은 줌(ZOOM)기능을 알고 사용해본 적이 있을 거다. 휴대폰에 장착되어 있는 카메라도 대부분 광학 또는 디지털 줌기능을 제공하고 있기 때문에 카메라가 탑재된 휴대폰이나 집안의 똑딱이 디카를 사용해본 사람이라면 다 아는 기능입니다. 자 그럼 차량용 블랙박스에서는 줌기능이 있을까? 이 글을 쓰고 있는 시점에는 현재 줌기능을 탑재한 렌즈를 사용하는 블랙박스를 접하지 못했지만 필요한 곳이 있다면 생길지도 모르지만 최소한 아는 범위안에서는 줌기능이 없었다.

    현재까지는 줌기능이 없는 단렌즈를 사용되고 있다. 단렌즈란 앞서 이야기한 촛점거리가 고정되어 있는 렌즈다. DSLR에서 사용되는단렌즈들은 24mm, 28mm, 30mm, 50, 85mm 등의 고정된 촛점거리를 가진 단렌즈를 성능을 구분하는 단위를 가진다. 촛점거리가 각기 다른 렌즈들은 각기 다른 화각을 보여주게 된다.

    줌렌즈는 단렌즈와는 반대로 여러개의 렌즈를 조합하여 화각을 만들어 낼 수 있지만, 여러개의 렌즈를 빛이 거치면서 화질과 선예도, 밝기가 감소하게된다.

    화각

    카메라를 촬영한다고 생각해보자. LCD나 뷰파인더에 보이는 영상이 카메라 렌즈앞에 있는 모든 영상을 담고 있지 않다. 카메라앞에 존재하는 실체를 평면으로 압축했을때 이중 일부만 일부만 보여지고 통상 사람들은 정면의 46도 정도를 본다고 한다. 그리고 디지탈 카메라 렌즈쪽에서는 표준렌즈라고 한다. 블랙박스 제품은 사용되는 목적이 주행전방과 주행환경을 기록하는 것이기 때문에 장착되는 렌즈는 디지탈 카메라의 표준렌즈보다는 좀 더 큰 화각이 필요하다. 정면의 영상도 중요하고 옆차선의 차도 영상안에 담아야 하기 때문인데, 광각이 되기위해서는 동일한 센서면적을 기준으로 앞서 설명한 촛점거리가 짧아야 한다. 참고로 디지탈 카메라에서는 60도 이상이면 준광각, 80도 이상이면 초광각으로 분류하는데, 블랙박스 제품을 과 디지탈 카메라 제품을 비교하면 렌즈와 RGB 센서면과 아주 가깝다. 따라서 넓은 화각을 제공한다.


    블랙박스 제품을 개발하는 중에 영상의 초점이 맞지 않는 것 같다면 Digital Sensor와 렌즈사이의 거리를 확인해보아야 한다. Digital Camera이론에 대해 알면 아무것도 아닌 내용이지만 프로그래밍만 열심히 하고 있으면 무엇이 흐린 영상을 만들어 내는 원인이지 간파하지 못한다.



    2012년 2월 15일 수요일

    자동차 블랙박스 구성-외부영상 입력장치

    자동차 블랙박스 구성은 크게 3가지로 나눌수 있다.

    (1)외부영상 입력장치(Camera Sensor)

    (2)영상을 인코딩 및 주변기기 관리하는 장치(Application Processor)

    (3)저장장치(SD/NAND/USB HDD/SATA HDD/ SSD)


    외부영상 입력장치(Camera Sensor)

    영상입력장치는 현재 휴대폰에서 많이 볼수 있는 카메라 센서를 많이 사용한다.

    이런 Digital Camera 센서로는 CMOS 계열을 많이 사용되고 Digital 출력 포맷으로 YUV포맷을 사용한다. CCD라고 사용하지 못하는 것은 아니다 통상 가격이 높기 때문에 CMOS 계열이 많이 사용된다.

    외부영상장치와 인코딩장치간의 데이타로 YUV 포맷을 사용하는 이유는 흔히 빛(영상)을 표현하는데 사용되는 RGB 포맷보다 동영상으로 인코딩하기 장점이 있기 때문이다. YUV는 빛의 밝기를 나타내는 휘도(Y)와 색상신호인 U,V로 빛(영상)을 표현하므로 동일한 영상을 표현하는데 RGB보다 적은 데이타가 사용된다.

    Digital Camera 센서는 해당 제품의 사양에 따라 다양한 포맷으로 출력을 내보낼수 있고 RGB 형태나 RAW 데이타 형태로도 내보낼 수 있지만 블랙박스 제품에서에서는 동영상을 생성하기에 적합한 YUV 포맷으로 대부분은  사용되고 있다.

    빛(RGB)의 다른 표현방법이 YUV이므로 YUV가 원본이라고 할 수 있는데 실제 카메라 센서에서 인코딩장치로 전달되는 최종 데이타는 YUV원본이 아니다.(최소한 제가 알고 있는한도에서는) 일종의 압축(샘플링)된 YUV포맷이 사용되는데 원본이 Y신호와 U,V신호가 1:1:1 비율로 정보가 들어 있는 YUV 4:4:4 , 휘도 신호대비 절반의 색상신호로 구성된 YUV422 휘도신호대비 1/4의 색상신호로 구성되는 YUV411, 휘도신호 2번에 색상신호중 U가 1번 V는생략 휘도신호 2번에 색상신호 U는 생략되고 Y만 1번 구성되는 YUV420이 있다.(YUV420라고 표현했지만 실제는 Y4U2V0Y4U0V2Y4U2V0Y4U0V2)

    (1)에서 (2)로 전달되는 과정을 정리하면

    빛(영상,RGB)가 RGB에 감응하는 센서에 의해 전기신호화되어 DIgital RGB신호가 된 후
    동영상 제작의 편의성을 위해서 RGB->YUV 컨버터를 통해서 최종 YUV포맷이 영상인코딩장치로 전달된다.

    블랙박스 업계에 있으면서 접하게 되는 많은 카메라센서 스펙을 접하면 다양한 기능들을 나열되는데 실제 업계에서 요구되는 기능은 몇가지에 한정되어 있다. 카메라 센서를 공급하는 업체들이 다양한 기능을 추가하고 가격을 높게 유지하는 것보다 실제필요한 기능만을 포함하고 좋은 성능을 추구하는것이 필요하다.


    참고자료 위키디피아.

    2012년 2월 14일 화요일

    블로그를 개설하면서

    자동차 블랙박스 관련 업무를 시작한것이 만 4년째가 되어가면서 해왔던 일을 정리할 필요가 있다고 생각해서 개설합니다. 기존에 사용하고 경험해보았던 RTOS(Real Time Operation System) 기반의 Car Blackbox SDK에 대한 지엽적인 이야기 부터 시작하고 가끔 개발자 입장에서 보는 잡다한 이야기로 나눠볼까 합니다.

    자동차 블랙박스 용어들

    자동차 블랙박스가 새로 생긴 분야이고, 비행기에서 이야기되는 블랙박스를 따라와서 여러가지 용어가 혼용되고 있다. 최근 들어 국가표준(KS)도 새로 정리되는 추세이다. 블랙박스 소프트웨어 개발에 앞서 용어를 정리한다.

    블랙박스(Blackbox)
    블랙박스는 공중에서 일어나는 항공사고의 사고원인 규명을 위해 항공기용 블랙박스(비행자료기록장치)로 탄생하였다. 항공사고는 사고발생 원인이 추락과 동시에 거의 소멸되는 경우가 많아 육상 또는 해상사고에 비해 원인규명이 어려운 특징을 지니고 있어 사고원인 조사를 위해 쓰여 지게 되었다. 최근 자동차 보급의 증가와 사고로 인한 인명 피해가 늘어나면서 항공용으로 사용되어 오던 블랙박스가 차량에서도 사용되고 있다.

    차량용 블랙박스
    차량용 블랙박스는 자동차 앞 뒤 유리에 설치된 소형 카메라로 사고 당시 상황을 촬영하고 설치된 마이크로 주변의 모든 소리를 담아 메모리 카드에 입력하게 된다. 평상시에는 저장매체가 보장해주는 시간만큼의 주행과 관련된 상황을 기록하는데 시동을 걸면 바로 작동된다. 사고 발생 시 즉, 충격이 가해지면 운전자의 목소리나 충격에 의한 소리, 가속기 작동상황, 차량속도, 시간 등이 상세히 기록된다.

    상시저장
    입력영상을 끊김 없이 저장장치에 저장하는 것입니다. 이벤트 저장에 반대되는 개념으로 일상적인 영상물의 저장을 의미한다.

    이벤트 저장
    특별한 상황의 영상을 별도로 저장하게끔 하는 것이다. 가속도 센서 같은 외부 센서의 입력이나 영상에서의 움직임 감지등을 특별한 상황으로 분류기준으로 한다.

    1채널 녹화
    복수의 영상입력 중 1개의 영상입력에 대해 녹화하는 것.

    2채널 녹화
    복수의 영상입력 중 2개 이상의 영상을 녹화하는 것.

    SPI
    직렬 주변기기 인터페이스 버스(Serial Peripheral Interface Bus) 또는 SPI 버스는 아키텍처 전이중 통신 모드로 동작하는 모토로라 아키텍처에 이름을 딴 동기화 직렬 데이터 연결 표준입니다.

    I2C I²C(Inter-Integrated Circuit, 아이-스퀘어-씨)는 필립스에서 개발한 직렬 컴퓨터 버스이며 마더보드, 임베디드 시스템, 휴대전화등에 저속의 주변 기기를 연결하기 위해 사용됩니다

    SPI나 I2C는 임베디드 장치에서 주변기기를 통제할때 너무나 자주 사용되는것이라 소개한다. 이 자체에 대해서 더 세밀한 설명은 위키디피아를 참조바란다.

    참고로 한글 위키디피아 문서작성에 기여했다.

    http://ko.wikipedia.org/wiki/%EC%A7%81%EB%A0%AC_%EC%A3%BC%EB%B3%80%EA%B8%B0%EA%B8%B0_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4_%EB%B2%84%EC%8A%A4