검색결과 리스트
글
이미지 센서와 Raw Bayer Pattern (베이어 패턴)
예전에 한 카메라에서 지원하는 출력 이미지 포맷 중에서 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 다크 프로그래머
'영상처리' 카테고리의 다른 글
매치무브(MatchMove)의 세계 (17) | 2013.09.11 |
---|---|
이미지 센서와 Raw Bayer Pattern (베이어 패턴) (26) | 2013.09.10 |
들로네 삼각분할(Delaunay triangulation) & 보로노이 다이어그램(Voronoi diagram) (72) | 2013.09.09 |
Ferns를 이용한 영상 Object Detection (61) | 2013.08.08 |
설정
트랙백
댓글
-
무중력고기 2013.09.11 16:10
트랙백 타고 왔습니다. 글 정말 재밌네요. 이해하기 쉽게 잘 써주시는 것 같습니다 ^^
-
일반 컴퓨터 비전 책에는 나오지 않는 내용이죠..
2007년 쯤에 카메라 모듈을 받았는데.. 분명히 컬러라는데 흑백으로 나와서 한참동안 고민을 했던 적이 있습니다. 그때 알게 된 책이 "Image sensor and signal processing for digital still cameras", Edited by Junichi Nakamura 란 것 이었는데.. 위 내용이 상세하게 설명 되어 있었습니다.
근데 그 책보다 정리를 더 알아보기 쉽게 잘 하셨네요.. ^^
아래는 쓰신 글과 관련하여 CMOS 이미지 센서의 이해를 돕는데 도움이 될까하여 참고할만한 동영상주소 올립니다.
http://titerced.blog.me/100043573606
즐거운 하루 되세요..^^ -
자료 찾다보면 자주 오게되는 블로그여서 눈팅만 했는데 밥먹고사는 분야 관련 얘기가 나오니
반갑네요 ㅎㅎ 상기 내용은 이미지센서나 카메라모듈 업계 종사자 말고는 관련 정보가 잘 없지요 관련 학과도 없거니와 거의 현장경험이 대부분이라서 ㅎㅎㅎ;; 작성하셨던 내용중에 Bilinear Interpolation 또한 현업에서는 거의 사용하지 않고 있습니다. 해당 알고리즘을 수행하면 고주파수
영역에서 해상도 저하가 발생하므로 다른 방식의 Interpolation을 사용합니다.
여하튼 이번 기회에 감사인사 드려야겠네요 항상 좋은 자료 잘 보고 있습니다. 자주 놀러올께요~~ -
-
안녕하세요
첫 문장 보고 질문드리는데요
혹시 베이어패턴 포맷을 지원하는 카메라 품명이나 찾을 수 있는 방법이 있을까요?
주말 잘 보내시기 바랍니다^^ -
-
와.. 감탄을 안할 수 없네요.
모니터 보면서 "와..." 했네요.
저도 영상처리업계에 종사하면서 고객들한테 이렇게 까지는
설명해드리지 못하거든요.
정말 알찬 정보 감사합니다. -
안녕하세요. 유용한 정보 참고하고갑니다.
제가 석사 논문작성중인데 몇가지 궁금한것이있어서 글남깁니다.
색 보간하는 방법 중
방법1. Pixel Doubling Interpolation
에대한 자세한 정보를 얻을 수 있을까요?
말씀해주신 참고서적을 찾아보려 했는데 잘 찾아지지가 않네요.. 부탁드리겠습니다! -
정말 유용한 정보 너무 감사합니다.
제가 카메라 데이터를 raw bayer data로 받게 될 것 같아서 이에 대한 이해가 필요했는데 도움이 많이 된 것 같습니다.!!
-
유용한 글 접하게 되어 영광입니다.
FPGA에서 카메라를 Bayer Data format으로 받아와서 RGB Format으로 변경하기 전에 LOG filter를 한 번 거치는 것이 성능 개선에 도움이 될까요? 의견이 어떠신지.. -
-