2012년 8월 16일 목요일

듀얼코어 블랙박스

 

지난  2011 년에 디자인한 모델 중에  AP 를 2개 사용하는 제품이 있었다. 당시 시장에 나와 있는 AP 가  HD 1 channel 30fps 까지 녹화(인코딩)까지가 성능의 한계였고 1개의 AP로는 전방과 후방영상을 각각 30FPS로 녹화 하고자 하는 요구에 부응할 수 없었기 때문에 후방영상을 녹화하는 AP와 전방영상을 녹화하는 AP를 따로 두고 후방에서 인코딩된 결과물을 통신으로 전달하면 그것을 전방영상을 담당하는 메인 AP가 수신하여 영상파일로 만드는 컨셉이었다. 이 제품은 1개의 AP가 전방, 후방을 담당하면서 발생하는 frame drop현상이 없다는 것이 가장 큰 장점이다. 특히나 후방 영상 인코딩을 담당하는 AP는 저렴한 가격에 구매 가능한 D1급 인코딩 솔루션에다 부팅을 위한 eeprom을 제외하고는 필요한 부품이 없었기 때문에 나름 매력이 이었다. 나름대로 특색이 있는 컨셉이었고 지금까지 나온 제품들과 비교해도 실제 성능은 현존 최고인데 시장주류는 아니었던 것 같다. 아직도 1채널 또는 1 AP 2채널 제품이 시장에서 많이 팔리는 모양이다. 최근에는 기능개선으로 기본적으로 TVOUT을 각 AP가 독립적으로 지원했는데 소비자의 요구에 따라 1개의 LCD 를 2개의 AP가 공유할 수 있도록 작업을 했다. 사용자 설정에 따라 후방영상을 초당 30fps으로 녹화하면서 preview를 TV가 아닌 LCD 에서 전후방을 골라가면서 볼수 있게 되었다.

하지만 최근에 FULL HD급으로 시장이 조금씩 재편이 되는 흐름이 있는데 통신을 통해서 데이타를 전송하는 구조라 통신속도와 고화질은 관련이 있어 향후 후방이 VGA급 이상이 된다면  고화질을 대응하기가 곤란할 것으로 예상된다.

2012년 5월 2일 수요일

KS 5078 영상사고기록장치

 

2011년 12월 30일자로 KS 5078 가 개정되었다.

내용중 시장에 영향을 줄 만한 요소로

전방영상 해상도가 720P 이상으로 제한되었다는 것과

무결성과 기밀성에 보장방안이 있다.

전방영상 해상도가 720P가 되면서 기존에 시장에 많이 판매되었던 VGA 급 블랙박스가 표준에서 제외될 수 밖에 없으므로 VGA 급 시장이 축소될지 향후가 궁금하다.

블랙박스의 원조인 항고기 블랙박스는 무결성/기밀성에 대한 제약이 없는데 굳이 표준에 무결성/기밀성을 포함시킨 이유가 이해가 되면서도 한편으로는 불순한 의도가 있지 않나 생각된다. 항공기 블랙박스 보다 더 제약을 가지는 자동차 블랙박스라는 게 좀 아이러니 하다.

일반인지 조작하기 힘든 동영상 파일에 무결성/기밀성을 강제하면서 무결성/기밀성 솔루션을 가지고 있는 쪽의 입김이 작용한 것은 아닐까 라는 생각이 들고 표준으로 강제 하는 것이라면 국내 업체들이 별도의 비용 없이 도입하고 사용할 수 있게 무결성/기밀성  솔루션을 표준화 기관에서 제공해야 한다고 생각한다.

예를 들어 VGA 4ch시장도 있을 거라고 생각되는데 VGA급 4ch은 KS 에 부합할 수 없으므로 KS 가 현장과 괴리도어 살아남지 못하지 않을까 ? 다른 관점으로 본다면 KS 마크에 연연하지 않는다면 현행대로 업체에서 원하는 기능과 Spec 대로 또는 소비자가 원하는 형태로 자유롭게 만들어 낼 지 도 모르지만 보험사 할인조건과 엮어서 KS 에 따르지 않으면 혜택을 주지 않는다는 식으로 몰아가버리면 기존 블랙박스 구입자에게는 재앙이 될 수 도 있다.

2012년 4월 14일 토요일

다채널 블랙박스

 

카메라 센서 1개를 가지고 자동차 전면의 영상을 녹화 하는 것을 1 channel  blackbox라고 하고 , 2개면 2 ch blackbox 라고 한다. 최근에는 4ch을 준비하고 있다.

이전에도 다중채널 블랙박스가 있었지만 영상인코딩을 하는 인코더가 2개가 장착되어 Dual core형태였거나, 1개의 인코더가 시간 분할하는 형태로의 전환작업이 요구되는 형태였고 성능상 2 ch 까지가 한계였다.

하지만 최근의 고성능 인코더를 활용하여 최대 4ch 까지 실제 사용 가능한 수준으로 개발하고 있다.

2012년 3월 20일 화요일

영상입력장치 4

영상 수신 장치

인코딩을 하는 어플리케이션 프로세서(AP)가 영상입력장치가 전송하는 영상 데이타를 수신한다. 수신하는 데이타는 미리정해진 규칙에 따라 수신을 받는데, CCIR 601/656 이 한 예이다.

디지탈 카메라 센서가 보내는 영상은 YUV 포맷으로 되어 있다. YUV Format의 종류는 다양할 수 있으므로 서로 주고 받는 포맷을 일치시켜야 하는 것은 당연한 일이다. 전송받은 영상정보는 다음 가공을 위해서 메모리(DDR memory, SDRAM)에 옮겨진다.

빛(영상) ->1 frame ->ccir601/656 포맷->memory에 위치된다


비디오 스케일러(SCALER)


video scaler라고 하는 장치가 있다. 비디오 신호(정보)를 크기또는 해상도 측면에서 다른 크기 또는 해상도로 변경하는 것을 말하면 흔히 업스케일링 현재보다 더 크게 만드는 것을 말하고, 다운 스케일링은 현재 크기보다 작게 만든는 것을 의미한다. 예를 들어 640x480 해상도의 동영상을 화면 가득채워서 보는 경우 업스케이링을 한것이고 반대로 1280*720 해상도의 영상은 640x480 크기의 창에 맞게 줄여서 보는 것을 다운 스케일링이라고 한다.


이런 비디어 스케일링은 많은 장치에서 내장되어 있다. TV나 컴퓨터 모니터가 대표적인 예다. 영상입력장치에서 들어오는 영상을 원본 크기 그대로 사용하기도 하지만 필요에 따라 크기를 변경하기도 한다.


영상입력은 1280*720인데 수신 후 Scaler를 거쳐서 해상도를 변경하기도 한다. 비디오 인코더 장치에 스케일러가 포함되어 용도가 다양하게 사용될 수 있다. 예를 들어 PIP라고 전체화면이 아닌 작은 화면을 만들어 낼 수 도 있고 입력영상크기과 다른 출력장치에 영상을 확대/축소하면 보여질 수 있다. 차량용 블랙박스가 720*480크기의 TVOUT출력을 하는데 사용되는 카메라 센서가 1280*720 이라면 실시간 다운스케일링을 하는 것이다.


이 스케일러의 성능은 화질열화, 인코딩 성능에 영향을 준다.



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