앞의 글을 읽으시면 이해에 도움이 됩니다.
2022.09.22 - [Computer Science/Computer Vision] - [CV] 빛의 속성 (Properties of Light)
1. Camera Structure
카메라의 구조와 용어에 대해 간략하게 알아보겠습니다.
카메라는 사람의 눈을 그대로 재현했다고 할 수 있습니다.
- 조리개 (aperture) - 홍채(iris) : 들어오는 빛의 양을 조절
- lens - lens : 빛을 모아주는 역할
- Digital Sensor - 망막 (retina) : 상이 맺히는 구역
- suspensory ligament : focus를 맞추기 위해 lens의 형태를 변형시킨다.
- 카메라에서는 렌즈의 위치를 이동시킨다.
2. Camera response function
해당 부분의 2.1만 알아도 camera를 이해하는데 문제없습니다.
(2.2는 단순히 수업에 나와서 정리하는 파트)
Camera Response Function은 pixel intensity와 radiance의 관계를 아는 함수라고 알면 될 것 같습니다.
2.1 Radiance to Pixel
우선 Camera Response Function을 알기 전에 카메라의 작동 원리에 대해 알아보겠습니다.
카메라는 어떻게 Radiance를 Pixel로 변환할까요?
카메라는 아래와 같은 방식을 통해 radiance를 pixel로 인식합니다.
- 맨 처음 SPD(Spectral power distribution) 형태의 radiance가 들어옵니다.
- 셔터를 눌러서 len와 apeture을 통해 빛이 CCD에 닿습니다.
- 이후 lens와 aperture을 통해 카메라 내부로 전달된 빛은 CCD(Charge Coupled Device)에 의해 빛의 강약을 통하여 전기적 신호로 변환됩니다.
- 이 신호는 다시 아날로그 신호를 디지털 신호로 바꿔주는 ADC(Analog to Digital Converter)를 통해 이미지 파일로 변환됩니다.
이때 촬영된 영상의 빛은 CCD에 붙어있는 RGB 색 필터에 의해 각기 다른 색으로 분리됩니다.
2.2 Finding Camera Response Function
camera response function을 찾는 방법은 다음과 같습니다.
- 카메라의 파이프라인을 모델링한다.
- 첫 번째는 apeture, model film, digitizer 등등을 측정하여 모델을 만드는 과정입니다.
- 실제로 매우 어렵다고 알려져 있습니다.
- 함수 f를 response function이라고 가정하고, f(shutter speed, aperture, film, digitizer ...) 등으로 모델링하는 과정이라 볼 수 있습니다.
- 대략적인 response function을 측정한다.
- 두 번째는 이미 알고 있는 radiance로 다양한 객체를 이미지화하는 것입니다.
- 따라서 이미 알고 있는 radiance를 통해 픽셀 값을 얻음으로써 discrete한 좌표들을 알 수 있고, 해당 좌표들을 통해 함수를 맞추는 것입니다.
- 특정 radiance의 값 (x 좌표)를 통해 특정 pixel intensity (y 좌표) 들을 얻게 되면 이를 통해 함수를 맞출 수 있습니다.
- 두 번째는 이미 알고 있는 radiance로 다양한 객체를 이미지화하는 것입니다.
- 다양한 이미지로부터 response function을 교정한다.
- 세 번째는 다양한 이미지로부터 response function을 교정하는 작업입니다.
- 예를 들어 이미지를 얻을 때 shutter speed를 1/1000, 1/100, 1/10, 1로 나눠서 얻었다고 가정해봅시다.
- 총 4개의 이미지를 얻었고, 이때 빛의 노출은 radiance * time에 비례하므로 4장의 이미지는 10배씩 radiance가 증가한다고 볼 수 있습니다.
- 따라서 함수를 정교하게 조절할 수 있습니다.
- 세 번째는 다양한 이미지로부터 response function을 교정하는 작업입니다.
이러한 방식을 통해 최종적으로 camera response function을 얻을 수 있습니다.
함수 f의 역함수를 통해서 pixel intensity를 통해 실제 radiance 값을 얻을 수도 있습니다.
따라서 물질의 속성을 측정하고 싶을 때 유용하게 사용할 수 있고, shading도 할 수 있습니다.
또 high dynamic range image를 생성할 수도 있습니다.
3. Pinhole Camera
가장 간단한 카메라라고 알려져 있는 pinhole camera에 대해 알아보겠습니다.
이미지는 이처럼 객체에 반사된 광원이 필름에 맺힌 것을 이미지 형태로 저장하는 것을 의미합니다.
위와 마찬가지로 객체와 필름을 동일선상에 놓고 배치한다면, 객체에 반사된 광원이 필름의 다양한 구역에 맺힙니다.
빨간색 광원과 노란색 광원이 필름의 동일한 부분에 맺히는 것을 확인할 수 있습니다.
따라서 흐릿한 이미지를 얻게 됩니다.
그렇다면 중간에 작은 pinhold을 가진 barrier을 하나 두면 어떻게 될까요?
이렇게 둔다면 광원이 pinhole의 작은 구멍을 지나면서 필름에 정확히 1:1로 상이 맺힙니다.
pinhole과 film간의 거리가 멀수록 상이 크게 맺힙니다.
그렇다면 pinhole이 작으면 작을수록 상이 잘 맺힐까요?
오히려 0.35 mm일 때 상이 명확하게 맺히는 모습을 볼 수 있습니다.
pinhole이 너무 작아지면, 흡수하는 빛의 양이 작아져서 노출을 오래 해야 하고,
구멍이 너무 작기 때문에 회절 하는 빛의 양이 많아지면서 오히려 더 흐릿해지기도 한다네요.
(참고로 노출을 오래 할 때는 object가 움직이면 안 됩니다.)
따라서 고안된 것이 바로 렌즈입니다.
4. Adding Lens
lens를 넣음으로써 pinhole을 사용하지 않고도 필름에 명확하게 상이 맺히게 할 수 있습니다.
렌즈는 퍼지는 빛을 한 곳으로 모을 수 있습니다.
pinhole의 경우 빛이 구멍을 지나면 퍼지기 때문에 크기와 노출시간이 중요했는데, 렌즈는 많은 광원을 한 점으로 모아주는 효과가 있습니다.
렌즈는 굴절률이 다르기 때문에 광원을 한 점 (focal point)로 모으기 위한 거리인 f : focal length가 다릅니다.
만약 빛이 평행하게 들어온다면 이때의 lens 방정식은 위와 같습니다.
하지만 빛이 평행하게 들어오지 않는다고 가정한다면, 빛은 어딘가에 모이겠지만, 기존의 필름 위치에는 광원이 겹치게 됩니다.
따라서 이미지가 뿌옇게 맺힙니다. 이 현상을 circle of confusion이라고 합니다.
즉, 특정 거리에 있는 object만 선명하게 맺히게 됩니다.
이런 문제를 해결하기 위해서 lens와 film(sensor) 사이의 거리를 조절하는 장치가 있습니다.
초점을 맞추는 것이 바로 이런 원리입니다.
apeture이 작으면 작을수록 object가 focus 되는 범위가 증가하게 됩니다.
apeture이 크면 광원이 퍼지면서 흐릿한 이미지를 얻게 됩니다.
5. Bayer Filter
카메라가 어떻게 색상을 인식할까요?
빛은 모든 색상을 가지고 있고, 여기서 R, G, B 값을 뽑아내야 합니다. (필터링)
이때 통상적으로 많이 쓰이는 것이 Bayer Filter입니다.
(foveon filter 등 다양한 필터들도 존재합니다.)
이처럼 Bayer Filter는 G을 50%, B, R을 25% 배치하여 그 아래에 CCD, CMOS를 두어 색상을 인식하게 합니다.
초록색이 50%인 이유는 R와 B의 사이 파장을 가지고 있기도 하고, 자연계에서도 G가 제일 많기도 하고, 사람이 G에 가장 민감하기 때문이라고 하네요.
따라서 필터를 통과하면 이런 식으로 색상이 CCD나 CMOS에 입력되게 됩니다.
근데 저렇게 빨간색이 띄워져 있으면 어떻게 모든 픽셀에서 빨간색을 얻을 수 있을까요?
바로 interpolation을 통하여 사이에 있는 빨간색 값을 얻을 수 있습니다.
이러한 방식을 debayering, demosaicing이라고 합니다.
따라서, 보간된 컬러 이미지를 받으면 화소별로 3 바이트가 필요하지만 원래의 raw Bayer pattern 데이터를 그대로 받은 후 PC 단에서 이미지를 보간하면 데이터 전송량을 크게 줄임으로써 프레임수를 늘릴 수 있게 됩니다.
raw Bayer 데이터로부터 화소별 색상을 보간하는 방법에는 여러 가지가 있으며 어떤 방법을 사용했느냐에 따라 최종 이미지의 화질이 크게 좌우된다고 합니다.
다음 글에서는 CCD, CMOS의 간략한 설명과 샘플링, 앨리어싱 등에 대해 쓰도록 하겠습니다.
감사합니다.
참고 자료 : https://sonsnotation.blogspot.com/2020/12/2-cameras-optics.html
'인공지능 > Computer Vision' 카테고리의 다른 글
[CV - Python] Gaussian Filtering (3) | 2022.10.14 |
---|---|
[CV - python] 2D Partial Derivative for Edge Detection (엣지 검출을 위한 2차원 편미분) (2) | 2022.10.13 |
[CV] 빛의 속성 (Properties of Light) (4) | 2022.09.22 |
cs231n 강의 (4) | 2022.09.01 |
[CV] sparse dictionary learning (0) | 2022.08.15 |