[카메라·영상]

ISP의 개요와 입력영상 포멧

Neo Park 2012. 2. 10. 21:01

 

1. ISP란 무엇인가

 

2. ISP 입력 영상 포멧

 

가장 기본적이지만 개념을 잡기에 중요한 부분이니 잘 이해가 안되시는 부분이 있으시다면 적극적인 리서치가 요구됩니다^^

 

1. ISP란 무엇인가?

 

ISP란 Image Signal Processing의 줄임말로서 카메라 센서로부터 들어오는 RAW 데이터를 가공하여주는 전반적인

 

이미지 프로세싱의 과정을 의미합니다. 여기서 센서로부터 들어오는 RAW데이터란 무엇인지에 대해서 궁금해하시는

 

분들이 계신텐데 간단하게 설명드리겠습니다. 어짜피 뒤에서 다시 다루게 될 내용이니까요~

 

 

카메라 센서는 크게 두가지로 나뉩니다. CCD 센서와 CMOS 센서.

 

CCD 센서는 보통 CCTV나 고감도 촬영도구에 사용되는 센서로 CMOS 센서보다 더 풍부한 색감 정보를 가지고 있습니다.

 

간단하게 예를 들면, 혹시나 자동차를 보유하고 있으신 분들이 계실지 모르겠지만...후방카메라를 예로 들겠습니다.

 

후방카메라도 종류 및 브랜드가 천차만별입니다. 하지만 주가격을 결정하는 것은 위에서 말씀드린 센서의 종류입니다.

 

CCD 센서는 비싼것...CMOS 센서는 싼것...왤까요? 당근 CCD가 더 좋기때문입니다. 차량 후방에 장착할 경우

 

어두운 밤에 CCD 센서가 CMOS 센서보다 보다 많은 광량을 받아들여 사물을 더 잘보일 수 있게 해주기 때문이죠.

 

간단하게만 비교해드렸습니다^^ 참고로 핸드폰에 들어간 카메라는 CMOS 센서입니다.

 

화질이 애당초 구린 CMOS 센서를 CCD급으로 선명하고 정확하게 만들어주기 위한 것이 바로 ISP가 되겠습니다.

 

과거에는 ISP라는 과정을 거치지 않은 SoC타입의 카메라(Chip자체에서 모든것을 지원하는)가 많았습니다만

 

8051이나 ARM등이 탑재된 뒤로는 상황이 많이 달라졌습니다.

 

그렇기 때문에 삼성전자가 ISP 업체를 고르는데 엄청나게 까다롭다는 것은 아실 분들은 아시는 사항입니다.^^;;

 

다시 주제로 돌아가서 이러한 종류의 센서를 입력단에 넣고 밝기, 색감, 선예도 등을 최대한 사람의 눈이 보는대로, 혹은

 

사람이 가장 보기 좋다고 느끼는 대로 표현하게 해주는 것이 바로 ISP의 주목적이 되겠습니다.

 

참고로 국내 ISP 업체로는 엠텍비전, 코아로직, 넥스트칩 등이 있으며 해외로는 TI, 후지쯔, NEC 등등이 있습니다.

 

앞으로 이 강좌에서는 CMOS 센서를 기반으로 하는 ISP를 다룰 예정이니 참고하시기 바랍니다.

 

(사실..제가 CCD센서를 다뤄본적이 없어서..^^;;)

 

2. CMOS 센서의 입력 영상(RAW Image)

 

여러분이 가지고 계신 핸드폰의 카메라쪽을 보시면 1.3M, 2M, 3M, 5M...등등 표기가 되어 있을 것입니다.

 

사실 현재 시장에서는 1.3M와 3M가 주를 이루고 있고 선행개발로 이루어진 5M, 8M, 12M 등등이 모습을 드러내고 있죠.

 

이 라벨들의 의미가 무엇이냐하면..센서가 5M : 500만 화소 센서, 1.3M : 130만 화소 센서...등이 되겠습니다.

 

친구거는 5M인데 내꺼는 1.3M이면서 내껀 화질이 왜 이따구냐고 아무리 하소연해보았자...소용이 없다는겁니다^^

 

CMOS 센서는 RGB 데이터가 아닌 Bayer라는 특별한 포멧을 사용합니다. 한 픽셀이 BGR로 구성이 된 것이 아니라

 

한 픽셀이 R이면 R, G면 G, B면 B로 채워진 포멧입니다. 이유는 최대한 색감을 표현하기 위해서라고만 아시면 됩니다.

 

그러면 이것을 어떻게 처리를 하는가는 나중에 [Color Interpolation] 챕터에서 설명해드리겠습니다만 간단하게는

 

한 픽셀로 이루어진 칼라값을 Interpolation 하여 우리에게 익숙한 RGB 영상을 만든다고 보시면 됩니다.

 

 

Bayer 영상을 Start Pixel에 따라 위와 같이 4가지 타입으로 구분되며 Start Pixel의 이름을 따서 각각 R타입, B타입,

 

Gr타입, Gb타입이 있습니다. 보다 상세한 내용을 원하시면 웹에도 잘 나와있으니 리서치를 권합니다.

 

예를 들어서, 우리가 RGB 데이터를 OpenCV나 MFC 등등에서 영상을 생성할 때, 영상 사이즈가 640*480이라고 한다면,

 

int* srcImage = new int[640*480*3] 으로 생성을 합니다. 어드레스 상으로 RGB 데이터는 한 픽셀에 BGR 데이터를

 

순차적으로 가지고 있기 때문이죠. 그래서 width*height*3이 전체 영상의 크기가 되는 것이죠.

 

하지만 Bayer 영상은

 

int* srcImage = new int[640*480] 이며, 앞서 말씀드렸듯이, 한 픽셀에 오직 한가지 색정보만 가지고 있습니다.

 

녹파녹파녹파...

빨녹빨녹빨녹...

녹파녹파녹파...

빨녹빨녹빨녹...

 

그렇다보니 영상을 출력하여 보면 녹색화면으로 보이는 이유가 녹색 성분이 많이 분포하기 때문입니다. RAW영상에서

 

녹색이 중요한 이유는 영상의 Y, 즉 밝기에 큰 영향을 미치기 때문에 G성분을 최대한 보존하는 것이 원칙입니다.