반응형
디지털 카메라는 이미지를 촬영할 때 RGB 3가지 색상 정보를 모두 한 번에 받지 않습니다. 대부분의 이미지 센서는 Bayer 필터 배열(Bayer pattern)을 이용해 R(빨강), G(초록), B(파랑) 중 하나의 색상만 받아들이고, 나머지 색상은 주변 픽셀을 통해 보간(interpolation)합니다. 이 과정을 디모자이싱(Demosaicing)이라고 하며, OpenCV에서 손쉽게 처리할 수 있습니다.
🎨 Bayer 패턴이란?
- Bayer 패턴은 CCD/CMOS 센서에서 사용되는 가장 일반적인 필터 배열 방식입니다. 하나의 컬러 이미지를 얻기 위해 단일 센서 평면에 R, G, B 픽셀을 격자처럼 배열해 놓은 구조입니다. 예를 들어 아래와 같은 배열이 있습니다:
- 이 배열들은 다음과 같은 방식으로 명명됩니다:
- BGGR
- GBRG
- GRBG
- RGGB
- 각 패턴은 2×2 블록의 배치를 기준으로 이름이 결정됩니다.
📐 Demosaicing이란?
- Bayer 패턴은 한 픽셀에 단일 색상 정보만 존재하므로, RGB 전체 색상을 복원하려면 주변 픽셀 정보를 바탕으로 누락된 색을 추정해야 합니다. 이 추정을 demosaicing 또는 debayering이라고 하며, OpenCV에서는 cv2.cvtColor() 함수를 통해 쉽게 수행할 수 있습니다.
🛠️ OpenCV로 Demosaicing 처리하기
import cv2
import numpy as np
# RAW Bayer 패턴 이미지 불러오기 (예: 8비트 grayscale)
bayer = cv2.imread('bayer_image.png', cv2.IMREAD_GRAYSCALE)
# Demosaicing 수행 (예: BGGR 패턴일 경우)
rgb = cv2.cvtColor(bayer, cv2.COLOR_BayerBG2BGR)
# 결과 저장
cv2.imwrite('output_rgb.png', rgb)
- OpenCV에서는 다양한 Bayer 패턴을 다음과 같이 지원합니다:
Bayer 패턴 | OpenCV 상수 |
BGGR | cv2.COLOR_BayerBG2BGR |
GBRG | cv2.COLOR_BayerGB2BGR |
GRBG | cv2.COLOR_BayerGR2BGR |
RGGB | cv2.COLOR_BayerRG2BGR |
💡 Bayer 패턴 확인 및 주의사항
- 카메라 센서의 물리적인 Bayer 패턴(RGGB, GRBG 등)과 실제 메모리에 저장된 이미지 배열의 시작 위치는 다를 수 있습니다. (예를 들면 이미지가 한 픽셀 이동(왼쪽, 위쪽 등)된 채 저장되는 경우)
- 위 그림과 같이 실제 패턴이 RGGB 처럼 보여도, OpenCV 상에서는 BGGR 일 수 도 있으며, 이 경우 cv2.COLOR_BayerBG2RGB를 써야 정상 출력 됩니다.
반응형
'유용한 팁' 카테고리의 다른 글
티스토리에 구글 애드센스 광고 삽입하는 방법 A to Z (1) | 2025.05.07 |
---|---|
구글 애드센스 세금정보 등록 방법 A to Z (1) | 2025.04.30 |
티스토리와 구글 애드센스 연동하는 방법 A to Z (2) | 2025.04.18 |
티스토리 LaTeX 수식 입력 완벽 가이드 (0) | 2025.04.18 |