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

영상처리 2013.09.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배 정도 높일 수 있습니다.


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

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


그런데, 화소수가 500백만개인 것은 맞지만 각 화소는 실제로는 칼라(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 다크 프로그래머


  • BlogIcon 무중력고기 2013.09.11 16:10 ADDR 수정/삭제 답글

    트랙백 타고 왔습니다. 글 정말 재밌네요. 이해하기 쉽게 잘 써주시는 것 같습니다 ^^

    • BlogIcon 다크pgmr 2013.09.11 16:52 신고 수정/삭제

      ㅎㅎ; 반갑습니다.
      저는 무중력님의 글을 훨씬 재밌게 읽었습니다 ^^
      베이어 패턴을 검색하다가 우연히 방문하게 되었지만 글을 참 잘 쓰시고 특히 느낌이 있어서 좋았습니다.

  • 수제자 2013.10.02 01:34 ADDR 수정/삭제 답글

    일반 컴퓨터 비전 책에는 나오지 않는 내용이죠..
    2007년 쯤에 카메라 모듈을 받았는데.. 분명히 컬러라는데 흑백으로 나와서 한참동안 고민을 했던 적이 있습니다. 그때 알게 된 책이 "Image sensor and signal processing for digital still cameras", Edited by Junichi Nakamura 란 것 이었는데.. 위 내용이 상세하게 설명 되어 있었습니다.
    근데 그 책보다 정리를 더 알아보기 쉽게 잘 하셨네요.. ^^
    아래는 쓰신 글과 관련하여 CMOS 이미지 센서의 이해를 돕는데 도움이 될까하여 참고할만한 동영상주소 올립니다.
    http://titerced.blog.me/100043573606

    즐거운 하루 되세요..^^

    • BlogIcon 다크pgmr 2013.09.26 13:57 신고 수정/삭제

      동영상이 영어라 순간 당황했지만 좋은 정보네요;; ㅎㅎ
      그렇지 않아도 CMOS, CCD의 차이나 원리 등에 궁금해 하고 있었는데 감사합니다.
      앞으로도 좋은 정보 많이 부탁드립니다 ^^

  • 박하사탕 2013.10.04 14:12 ADDR 수정/삭제 답글

    자료 찾다보면 자주 오게되는 블로그여서 눈팅만 했는데 밥먹고사는 분야 관련 얘기가 나오니
    반갑네요 ㅎㅎ 상기 내용은 이미지센서나 카메라모듈 업계 종사자 말고는 관련 정보가 잘 없지요 관련 학과도 없거니와 거의 현장경험이 대부분이라서 ㅎㅎㅎ;; 작성하셨던 내용중에 Bilinear Interpolation 또한 현업에서는 거의 사용하지 않고 있습니다. 해당 알고리즘을 수행하면 고주파수
    영역에서 해상도 저하가 발생하므로 다른 방식의 Interpolation을 사용합니다.
    여하튼 이번 기회에 감사인사 드려야겠네요 항상 좋은 자료 잘 보고 있습니다. 자주 놀러올께요~~

    • BlogIcon 다크pgmr 2013.10.04 18:22 신고 수정/삭제

      안녕하세요. 현직 전문가 분이라니 반갑습니다. 덕분에 현장의 생생한 얘기를 배운 것 같아 좋습니다 ^^. 댓글 감사드리며 앞으로도 종종 좋은 정보 많이 부탁드립니다.

  • 유유 2014.05.30 19:25 ADDR 수정/삭제 답글

    정말 원리 잘 설명된 글입니다. 감사합니다

  • 삶은달걀 2015.04.17 08:40 ADDR 수정/삭제 답글

    자~~알 배워갑니다!!!내용 스크랩좀 하겠습니다~~

  • 멘솔 2015.05.17 17:38 ADDR 수정/삭제 답글

    안녕하세요
    첫 문장 보고 질문드리는데요
    혹시 베이어패턴 포맷을 지원하는 카메라 품명이나 찾을 수 있는 방법이 있을까요?
    주말 잘 보내시기 바랍니다^^

    • BlogIcon 다크pgmr 2015.05.18 09:31 신고 수정/삭제

      안녕하세요. Point Grey Research 카메라들이 대부분 카메라 단에서 raw Bayer 패턴을 출력하고 PC 드라이버 단에서 이를 일반 이미지 포맷으로 변환하는 것으로 알고 있습니다. 그런데, raw Bayer 패턴 값을 직접 받을 수 있는 방법이 있는지는 저도 잘 모르겠습니다.

  • 굿굿 2015.06.09 17:51 ADDR 수정/삭제 답글

    감사합니다. 알기 쉽고 유용한 정보 잘 읽고 갑니당~

  • 영상처리 종사자 2015.10.28 20:58 ADDR 수정/삭제 답글

    와.. 감탄을 안할 수 없네요.
    모니터 보면서 "와..." 했네요.
    저도 영상처리업계에 종사하면서 고객들한테 이렇게 까지는
    설명해드리지 못하거든요.
    정말 알찬 정보 감사합니다.

  • 기계설계석사과정 2015.11.26 01:04 ADDR 수정/삭제 답글

    안녕하세요. 유용한 정보 참고하고갑니다.
    제가 석사 논문작성중인데 몇가지 궁금한것이있어서 글남깁니다.

    색 보간하는 방법 중
    방법1. Pixel Doubling Interpolation
    에대한 자세한 정보를 얻을 수 있을까요?

    말씀해주신 참고서적을 찾아보려 했는데 잘 찾아지지가 않네요.. 부탁드리겠습니다!

    • BlogIcon 다크pgmr 2015.11.26 09:04 신고 수정/삭제

      링크가 깨진 모양입니다. 구글에서 demosaicing으로 검색해 보면 많은 논문들이 검색될 텐데요..

  • Carev_Cho 2016.03.13 14:28 ADDR 수정/삭제 답글

    정말 유용한 정보 너무 감사합니다.
    제가 카메라 데이터를 raw bayer data로 받게 될 것 같아서 이에 대한 이해가 필요했는데 도움이 많이 된 것 같습니다.!!

  • 임베디드엔지니어 2016.07.12 18:44 ADDR 수정/삭제 답글

    유용한 글 접하게 되어 영광입니다.
    FPGA에서 카메라를 Bayer Data format으로 받아와서 RGB Format으로 변경하기 전에 LOG filter를 한 번 거치는 것이 성능 개선에 도움이 될까요? 의견이 어떠신지..

    • BlogIcon 다크pgmr 2016.07.13 07:33 신고 수정/삭제

      저는 이쪽 분야가 아니라서 잘 모르겠습니다... 아마도 high dynamic range 등의 목적이신 것 같은데..

  • rkfaorl1994 2019.04.30 13:36 ADDR 수정/삭제 답글

    본문에 500백만화소라고 되어있네요! 5백만 화소로 고치는 것이 좋을 것 같습니다. 양질의 자료 언제나 감사합니다.