[컴퓨터 비젼] CV-02 Image formation & Projective geometry

카메라 구상
- 필름을 오브젝트 앞에 배치
- 물체의 한 점으로부터 반사된 빛이 필름의 여러 부분에 도달
-> 무슨 빛인지 알 수 없음
-> Blurring 현상
- 필름과 오브젝트 사이에 Barrier 배치 (Pinhole Camera)
- 많은 양의 빛이 Barrier에 의해 막히고, Barrier의 작은 구멍을 통과한 빛만 필름에 도달 -> Blurring 감소 (상이 맺힘)
- Barrier의 구멍이 작을 수록 상이 선명해짐
- 구멍이 작으면 빛을 받아야 하는 시간이 늘어나긴 함

- Lense
- Barrier 대신 렌즈 배치
- 작은 구멍으로 시간 오래 걸리는 것을 보완
Obscura
- first camera (known to Aristotle)
- 박스에 작은 구멍을 내고 물체로부터 들어온 빛이 구멍을 통과하여 박스 반대편에 상이 맺히는 원리

- 구멍을 통해 빛이 한 가닥만 통과할 수 있도록 구멍을 최대한 작게 제작 -> 약 0.35mm
- 구멍이 충분히 작지 않으면 Blurring (위 이미지의 원 형태로 뿌옇게 상이 맺힌 모습)
- 구멍이 너무 작으면 Diffraction(회절; 빛이 작은 구멍을 통과하면서 직진성이 무너져 퍼져나가는 현상)

Lens
용어
- Focal Point(초점)
F: 렌즈로 들어오는 평행한 빛들이 굴절되어 모이는 하나의 점
- Focal Length
f: 렌즈의 면으로부터 Focal Point까지의 거리 (렌즈의 모양과 굴절률 따라 달라짐)
- Aperture(조리개): Pinhole 카메라의 구멍 역할, 렌즈 앞 또는 뒤에 위치하여 지름의 크기
D로 빛이 통하는 양을 조절해서 밝기 조절
- 가림막; 많이 밝은 곳에서 조리개로 가려서 어두운 사진으로 만듦
- 많이 가릴 수록 어둡고 circle of confusion이 작아져서 초점이 안맞아도 비교적 선명하게 나옴)

Lens
- 렌즈면과 수직으로 들어오는 평행한 빛들이 굴절되어 한 점으로 모임(focal point; 초점)
- pinhole 카메라보다 한번에 많은 빛들을 모으니 에너지가 높아지고 시간이 줄어듦 (노출시간 짧음
- 렌즈가 크면 빛이 많이 모여서 시간이 줄어들기도 하고 어두운 곳에서 찍기도 좋다
- 렌즈를 작게 만들면 시간이 오래 걸리지만 Circle of Confusion이 줄어들어 전체적으로 초점을 잡을 수 있음
Circle of Confusion ⭐
- 렌즈를 지나 빛이 모일 때, film에서 정확하게 모이면 -> 초점이 맞다(in focus)
- 정확하게 모이지 않으면 Circle of Confusion
- 물체의 거리가 달라서 생기는 현상
- 렌즈와 필름 사이 거리를 조절해서 원하는 부분의 초점을 맞춘다
- Aperture로 많이 가리거나 렌즈를 작게 만들어 보완 가능

Depth of Field(DOF)
- 초점 심도; 초점에 맞출 수 있는 피사체의 거리 범위
- Aperture 지름 크기가 크면(적게 가리면): DOF값이 작아지고 초점에 좁은 범위의 거리만 맞추는 것 가능
- 이미지에 bokhe(보케)생성 (인물사진같은거)
- Aperture 지름 크기가 작으면(많이 가리면): DOF값이 커지고 초점에 넓은 범위의 거리 맞추는 것 가능
- circle of confusion 작아짐
- 빛이 조금들어와서 노출 시간이 길어짐

Digital Camera
- 필름 대신 Charge Coupled Device(CCD)셀로 이루어진 Sensor array 사용하는 카메라
- CCD: 빛을 받으면 전하가 쌓이고, 이를 전기 에너지로 전환해 신호 발생
- 최근에는 CMOS 사용 보편화
ISP (Internal/Image signal processing)
- 센서로부터 받은 데이터를 보정하여 우리가 원하는 이미지 형태/파일로 만들어내는 장치(컬러 이미지)
- Bayer Pattern을 보고 카메라로 찍은 image(센서로부터 받은 데이터)의 color를 복원하는 과정
Bayer Pattern ⭐
- R, G, B 각 빛에 반응하는 셀들이 구성되어있는 패턴

- 카메라의 센서는 빛의 정도만 알 수 있다. (색은 알 수 없다)
- 그래서 픽셀마다 각 색의 셀로판지를 붙인 특정 색(R, G, B)의 밝기값만 감지할 수 있는 센서들을 붙여서 베이어패턴을 만든다. (한 픽셀의 RGB값을 바로 다 알 수 없기 때문에, 한 픽셀 당 한 색만 알아낸다.) <- 카메라에 찍히는 것
- 어쨋든 각 픽셀마다 RGB값을 알아내야하니까, 특정 픽셀의 주변 값들을 보고 interpolation해서 한 픽셀의 RGB값을 추측해낸다. (합치는게 아니라 kernel처럼?)
- 그래서 픽셀(이미지 해상도)의 1/4밖에 못쓴다는 말이 나온 것
- White Balance: 조명 상태를 예측하여 하얀색을 정의하고 이를 기준으로 색 조정
- Color Interpolation: 주변 셀들과 섞어 interpolation해서 픽셀 별 RGB데이터 구성
- Color Correction: 센서 데이터를 우리가 원하는 데이터(우리가 볼 수 있을 정도로)로 전환
- Color Conversion:
RGB->YCrCg
- Noise Reduction: 밝기(Y)만 노이즈 제거 (색상 noise는 어쩔 수X)
- Detail Enhancement: Noise reduction으로 흐려진걸 보완하기 위해 선명도 향상
- Color Conversion:
YCrCg->RGB (변환 안하고 YCrCg 그대로 가면 JPEG, 변환하여 RGB로 가면 PNG)
- Gamma Correction: 카메라의 계도 상에서 중간 부분이 실제 우리가 예상하는 밝기와 비슷하도록 밝기를 올려주는 과정

- 요새는 Bayer pattern 자체에서 데이터를 빼와서(1, 2번 과정에서) 노이즈를 미리 처리하기도 함
Issues with Digital Cameres
(vs Analog film Camera)
- Noise
- 아날로그 카메라보다 다양화된 노이즈 문제 -> 주로 센서때문에
- 렌즈가 크면(SLR-style camera) 노이즈가 적지만,
- 렌즈가 작으면 밝기가 낮아지고 밝기를 올리는 과정(gain)에서 노이즈도 증폭된다.
- Compression(압축)
- 데이터 개수를 줄여가는 과정에서 Artifact 발생
- Color Fringing
- 각 픽셀마다 RGB를 측정하는 것이 아니라, 주변 픽셀들의 색을 보고 예측하는 interpolation 과정(Bayer pattern)에서 의도하지 않은 RGB 색 조합이 일어나며 생기는 문제

- Blooming
- 전하가 쌓이다가 넘치면 주변으로(옆 센서로) 흘러가며 생기는 문제 -> 밝은 빛의 번짐 현상

- In-Camera Processing
- oversharpening -> Halo(후광 효과)
- Interlaced/Progressive scan video
- Interlaced센서: even/odd row를 따로 찍고 합침 (합치는 과정에서 생기는 문제; 과거)
- Progressive센서: even/odd row를 같이 찍음
- Megapixel
- 픽셀 수가 많은 카메라는 좋은 렌즈를 필요로 하고, 좁은 공간에 많이 들어오니까 노이즈에 민감 -> 무조건 긍정적이지X, 쓸모없기도
- Stabilization
- 노출 시간(빛을 모을 때)동안 카메라가 흔들리면서 생기는 문제를 보완하는 과정
카메라 용어
- Shutter speed
- 셔터가 올라갔다 내려오는 시간
- 노출 시간을 늘리려면 셔터를 오래 열었다가 닫음 (Shutter speed를 길게)
-> 밝고 노이즈가 적지만 촬영 시간동안 흔들릴 가능성
- ISO
- 센서의 감도, 이미지의 전체적 밝기를 조절할 수 있다(디지털은 gain 조절, 아날로그는 화학적으로 다른 필름)
- 빛 정도에 따라 촬영이 잘 될지 판단 가능
- film의 100, 200... -> 화학적으로 성질이 다른 상태; 수가 클수록 어두운 곳에서도 잘 나온다 (디지털은 몇천까지..)
- ISO가 높으면 노이즈가 심해질 수 있다
- Vignetting
- 카메라 센서(또는 필름) 크기에 비해 렌즈가 작으면 가장자리가 어두워짐
- Rolling Shutter
- 수직/수평 순서대로 빠르게 촬영되는 셔터로 움직이거나 빛의 변화가 있으면 rolling shutter가 보임
- Chromatic aberration (색수차)
- 빛마다 파장과 굴절률이 달라서 이미지의 한 점에 빛이 제대로 맺히지 못하는 현상
Modeling Projection
coordinate system 설정
- 원점을 COP(Center of Projection)로 설정
- COP 앞에 Image plane(Projection plane) 배치
- 원래 카메라는 COP 뒤쪽에 film이 존재하는데, COP를 지나면서 뒤집힘, 이것을 방지하기 위해 Projection Plane을 앞으로 배치(xy대칭) -> 투영을 간단하게 모델링할 수 있도록 함(이미지 처리를 간편하게)
- COP와 PP 사이의 거리
d는 focal length (뒤집기만 한거라서 길이는 같음)
- 카메라가 바라보는 방향은 -z축 (오른손 좌표계)

Projection 식
- 원점
COP에서 임의의 물체 한 점(x, y, z)까지의 직선이 Projective Plane과 만나는 교점 계산하는 식
- COP에서 PP까지의 거리를
d라고 할 때, 닮음 원리를 이용하여 PP의 교점 (x', y', -d')를 구할 수 있다.

Orthographic Projection
- COP와 PP까지의 거리가 무한하다고 가정하는 특별한 시점의 Projection
- World물체에서 PP까지의 빛이 평행하게 진행 (Parallel Projection)
- PP의 좌표는 그냥 (x, y)로 표현 가능 (World 좌표와 동일)
- 한 점에서 모이는 빛도 무한히 평행이라 볼 수 있음

Radial Distortion
- 완벽하지 않은 렌즈의 모양으로 인해 생기는 이미지의 왜곡 현상 (대부분의 카메라)
- 빛이 렌즈의 중심에서 벗어나 가장자리 부분을 통과하면서 이미지 상 물체의 중심에서 가장자리 지점까지의 거리가 변형됨
- Pin cushion: 빛이 렌즈의 중심 위쪽을 통과하면서 굴절 커짐 -> 중심에서 가장 자리 지점까지의 거리가 길어지면서 이미지가 바깥쪽으로 퍼지게 보임
- Barrel: 빛이 렌즈의 중심 아래쪽을 통과하면서 굴절이 작아짐 -> 중심에서 가장자리 지점까지의 거리가 짧아지면서 이미지가 안쪽으로 파고들게 보임


카메라 종류
- Tilt-shift
- 렌즈만 움직이면서 의도적으로 보케를 만듦
- 먼 풍경을 찍을 떄 의도적으로 보케를 만들어내 원근감 부여(미니어쳐같은 효과)
- Rotating Sensor
- 물체를 돌리거나 카메라가 돌면서 둥근 형태의 물체를 촬영
- Cycolgraphs, peripheral image
- Photofinish
- 카메라가 일정 시간 동안 빠르게 찍은 사진들을 합성하는 카메라(Orthographic하게 보임)
- 도착 판정 카메라(카메라가 움직이면서 세로로 찍음)
2. Projective Geometry