혼자서 상상해보는 가설
0. 오늘 업무중에 우리가 다루는 이미지 포맷이 RGB가 아닌 BGR을 기본으로 하고 있다는것을 발견했다(참고로 나는 이미지 프로세싱쪽은 전문이 아니고, 지식이 깊지도 않다)
다만, 왜 일반적으로 많이 쓰이는 RGB가 아닌 BGR을 쓰는가에 대한 궁금증이 생겨 몇가지 찾아봤다.
가장 빠른답은, "OpenCV가 처음 개발되었을 때 BGR 색상 형식이 카메라 제조업체와 이미지 소프트웨어 제공업체 사이에서 인기가 있었기 때문에 OpenCV는 BGR 형식의 이미지를 읽습니다."라는 것이다.
https://blog.devgenius.io/color-spaces-in-opencv-f0cd3e1d3fab
그렇다면 왜 BGR이 인기가 있었을까? 내 경험상 쟤들이 저러는건 다 이유가 있다.
다만 내가 그걸 모를 뿐이지
1. TIFF(Tag Image File Format)의 역사를 찾아보면, 앨더스(Aldus)사와 마이크로소프트(그 MS 맞다)사가 공동 개발한 이미지 저장 포맷이라 한다. 개발하게 된 이유는 그래픽과 출판업계에서 화질열화 없는 이미지 배급 포맷을 필요로 해서라나. 이 포맷을 개발한 앨더스 사는 전자출판을 위한 PageMaker라는 프로그램을 만든 회사라 한다. 그리고 이 회사와 제품은 Adobe에 인수합병되었다.
TIFF 포맷을 가장 먼저 활용한 것은 스캐너였다. 스캐너는 우리가 일반적으로 디지털 카메라에 쓰이는 CCD를 쓰는 것과 PMT(광전자 증배관)을 쓰는 드럼 스캐너가 있다. PMT를 쓰는 쪽이 좀더 고품질의 이미지를 뽑아낼수 있고, 특히 필름(사진!)에서는 PMT의 탁월한 감도로 인해 필름원본의 세부사항을 더 잘 캡처할수 있다고.
https://en.wikipedia.org/wiki/Image_scanner
감도라 하니 머릿속에 생각나는 디지털 카메라가 있다. 그것은 포베온 센서를 쓰는 시그마.
2. 시그마의 포베온 센서는 Bayer pattern을 활용하는 소자와는 달리(평면에 색을 인지하는 소자들을 배치하고 나중에 보간법으로 합치는 방식) 소자를 적층으로 쌓아서 각각의 층이 색을 감지한다.
https://en.wikipedia.org/wiki/Foveon_X3_sensor
요 방식을 쓰면 빛이 아래 이미지처럼 적층된 실리콘 층을 투과한다. 적색이 가장 깊게 투과하는 이유는, 빛의 파장이 길수록 에너지 손실이 적기 때문이다.
그러한 이유로, 포베온 센서를 쓴 시그마의 이미지는 적색이 엄청 강하게 나타난다. 시그마의 카메라로 찍은 사진들을 보면 다른 색상은 약간 힘이 빠진 느낌이지만 오로지 적색만은 압도적인 존재감을 자랑한다.
다시 원래의 논지로 돌아가서, 각각의 소자들이 감지한 신호를 그대로 기록하게 된다면 적색을 기록하는 데이터가 다른 색상에 대해 상대적으로 많아질수 밖에 없다. 결국 색상이 적색으로 편향된다는 소린데, 이를 보정하기 위해서는 인위적으로 적색을 제외한 다른 색상의 값을 증폭시켜야 한다.
다시말해 이것역시 원본값에 손을 댔다는 것을 의미하는데, TIFF가 RGB가 아닌 BGR로 저장하는 것은 이를 스스로 알리기 위해서가 아닐까? 광전자 증배관을 쓰는 스캐너가 포베온 센서와 유사한 특성을 갖고있다면 말이다.
물론 어디까지나 이것은 내 가설이다. 혹시 이 글을 보는 이미지 프로세싱 엔지니어나 관련 종사자가 있다면 정확한 정보를 알려주시면 감사하겠습니다.