이미지 센서와 Raw Bayer Pattern (베이어 패턴)

영상처리 2013. 9. 10. 11:15

예전에 한 카메라에서 지원하는 출력 이미지 포맷 중에서 raw Bayer data 라는게 있어서 이게 뭘까 ? 하면서 찾아봤던 기억이 납니다.


그러면서 raw 베이터 패턴(Bayer pattern) 데이터를 그대로 출력하면 카메라의 데이터 전송량을 엄청나게 줄일 수 있음을 알게 되었습니다.


카메라에서 촬영한 이미지 데이터는 케이블(웹 카메라의 경우는 USB 케이블)을 타고 외부로 전송됩니다. 그런데, 케이블의 데이터 전송용량 (bandwidth)에는 한계가 있기 때문에 고해상도로 이미지를 보내려면 fps(frames per second)가 떨어지게 됩니다. 예를 들어, 웹 카메라처럼 USB 2.0 인터페이스를 사용할 경우 초당 30 MB/s 정도가 한계입니다 (이론상 최대속도는 60MB/s).


만일 카메라에서 R,G,B 칼라 영상을 내보낸다고 하면 이미지 해상도가 1,024 x 1,024일 경우 이미지 한장 당 3 MB 의 데이터 전송이 필요합니다. 하지만, raw Bayer pattern 데이터를 그대로 내보내면 색상 손실없이 1 MB의 데이터만 전송하면 됩니다. 즉, 카메라의 fps를 3배 정도 높일 수 있습니다.


우리가 흔히 어떤 카메라가 5백만화소라고 하면,

이 카메라의 이미지 해상도는 최대 2,500 x 2,000 정도이고 R, G, B 색을 감지할 수 있는 화소가 5백만개 포함된 이미지 센서를 사용하는 것으로 생각합니다.


그런데, 화소수가 5백만개인 것은 맞지만 각 화소는 실제로는 칼라(color)를 감지하는 화소가 아닌 단지 흑백의 밝기만을 감지하는 monochrome 화소이며 R, G, B 필터중 어느 하나와 결합된 형태입니다.


<그림> 이미지 센서의 필터 구조 (출처: 위키피디아)


즉, 이미지 센서는 화소수 만큼 배열된 mono 셀들 위에 R, G, B 색상 필터들이 특정한 패턴을 가지고 배치된 것이라고 볼 수 있습니다. 여기서 R 필터는 red만을, G 필터는 green만을, B 필터는 blue 만을 투과시키는 광학필터입니다.


그런데 하나의 센서 셀(cell)에는 R, G, B 필터 중 어느 하나만 결합되기 때문에, 하나의 이미지 화소는 R, G, B 중 한가지 색만을 감지할 수 있습니다.

(카메라 중에는 한 화소에서 R,G,B를 모두 감지하는 것도 있다고 합니다. 이에 대한 내용은 http://zero-gravity.tistory.com/28 '포베온 센서와 베이어패턴 센서' 글에 잘 정리되어 있습니다)


전통적인 CMOS, CCD 이미지 센서에서는 R, G, B 필터들이 일정한 패턴을 가지고 배치되는데, 인간의 시각 특성을 따라서 G가 50%, R과 B가 각각 25%가 되도록 아래 그림과 같이 교차 배치되며 이를 베이어 패턴(Bayer pattern)이라 부릅니다.


<그림> 베이어 필터 패턴


이와 같이 실제 이미지 센서는 각 화소에서 R, G, B 중 어느 한 색만을 감지할 수 있지만, 우리가 보는 카메라 영상에서는 각 화소마다 R,G,B 전체 색상을 보여줍니다.


이것이 가능한 이유는 소프트웨어적으로 각 화소마다 주변 셀들의 색상값을 보간(interpolation)하여 색을 구성하기 때문입니다.


따라서, 보간된 칼라 이미지를 받으면 화소별로 3 바이트가 필요하지만 원래의 raw Bayer pattern 데이터를 그대로 받은 후 PC 단에서 이미지를 보간하면 데이터 전송량을 크게 줄임으로써 프레임수를 늘릴 수 있게 됩니다.


raw Bayer 데이터로부터 화소별 색상을 보간하는 방법에는 여러 가지가 있으며 어떤 방법을 사용했느냐에 따라 최종 이미지의 화질이 크게 좌우된다고 합니다.


raw Bayer 데이터로부터 화소별 색을 보간하는 것을 demosaicing이라고 하는데, 아래 참고문헌을 바탕으로 가장 기본적인 방법 2가지만 적어봅니다. 보다 자세한 내용 및 그 외의 진보된 demosaicing 방법은 아래 참고문헌을 참조하시기 바랍니다.


참고문헌 : "Image Demosaicing: A Systematic Survey" by Xin Li



방법1. Pixel Doubling Interpolation



가장 기본적인 방법이지만 화질은 좋지 않다고 합니다. 그림 자체에 워낙 설명이 잘 되어 있어서 설명은 생략합니다.



방법 2. Bilinear Interpolation


이 방법 또한 직관적으로 생각해 낼 수 있는 기본적인 방법이며 pixel doubling 보간보다는 훨씬 화질이 좋습니다.



그림출처: http://www.unc.edu/~rjean/demosaicing/demosaicing.pdf



☞ 요즘 나오는 카메라들은 전통적인 베이터 패턴과는 다른 자신들만의 독특한 필터 패턴을 개발하여 사용하는 경우도 있다고 합니다. 자세한 내용은 위키피디아를 참조하세요.


☞ Mosaicing 방법 중 진보적인 방법은 카메라의 포커스가 항상 맞는 것은 아니라는 점을 이용해서 즉, 자신으로 와야 할 색 정보가 주변 cell에도 포커싱 정도에 따라 흩어져 포함되어 있다는 점을 이용한다고 합니다.



by 다크 프로그래머