4-1/컴퓨터비전개론

14주차-Depth from Defocus

Donghun Kang 2025. 6. 14. 14:54
  • Depth from Defocus 

Defocus : 렌즈의 초점에서 벗어난 물체가 이미지 상에 흐릿하게 나타나는 현상

=> 이 흐림의 정도를 분석하여 깊이(Depth)를 추정하는 방식을 말한다.

 

# Gaussian Lens Law

f : lens의 고유한 focal length

i : lens에서 image plane까지의 거리

o : 3차원에서 lens에서 object까지의 거리

=> focus가 잘 맞을 때 수식이 성립한다.

 

# Blur circle diameter

[Image Defocus & Sensor Location]

- 원래 맺히는 곳과 image plane 사이의 거리가 커지면 커질수록 blur 사이즈도 커진다.

[Image Defocus & Aperture Size]

- lens는 그대로 두고 (focal length 고정) 빛이 들어올 수 있는 구경 사이즈를 줄인다.

=> D가 작아지면 Blur circle size 지름도 작아진다.

 


 

  • PSF(Point Spread Function)
- 점을 찍어놓고 점이 얼마나 어떻게 퍼지나를 함수로 만든 것
- 카메라 시스템이 impulse에 대해 어떻게 반응하는지를 나타낸다.
중앙에 점이 있고, 그 점이 반지름 b/2 내에서 균등하게 퍼지는 모델

# pillbox : 가운데 점이 하나 있고 그 점을 퍼뜨리는 데 지름 b만큼 균등하게 퍼뜨리는 것(기둥 형태 - 지름 b)

- PSF는 별 이야기가 없으면 Gaussian으로 modeling 하는 것이 일반적이다.

=> blur의 반지름을 σ(=b/2)로 설정 

 

  • Defocus as Convolution / in Fourier Domain

- Defocus(초점이 맞지 않은 현상)는 Convolution으로 표현될 수 있다.
- Defocus는 linear(선형적) and shift invariant(변위 불변)하므로 Conv 형태로 표현 가능


Fourier transform으로 주파수 Domain으로 옮겨준다.
=> image domain에서 Convolution 계산이 곱셈으로 변한다.

=> Defocus is a low-pass filter (저주파 영역 살리고 고주파 영역 죽인다).

 


  • Depth from Focus
- Focus가 맞는 영역의 사진을 여러장을 찍어서 Depth를 구해보자. (focus를 다르게 해서 여러장 찍는다.)
- focal length는 유지한 채 image plane을 이동하며 여러장을 찍는다.

- 각 small image patch마다 best focused를 찾는다.

- 위의 Gaussian Lens Law를 사용하여 s와 f를 알면 o값을 구할 수 있다.


EX) 같은 위치에서 4장에 대해서 Focus Measure를 구해본다.


- 이런 방식으로 이미지 복원을 해보면 아래과 같이 나온다. 
=> 무늬가 좀 있어야 한다. (없다면 focus measure 값이 거의 안나온다.) (High frequency 성분이 어느 정도 있어야 한다.)

 

# Focus Measure

- 컴퓨터 비전으로 어떻게 focus가 잘 맞았냐를 측정
=> 일반적으로 Laplacian을 변형하여 사용

 

  • Gaussian Interpolation
- Focus Measure Curve의 peak는 Gaussian과 유사하다.
EX)
=> Gaussian의 주변 값들 평균을 이용
[Step] 수식은 중요하지 않다. 이런 단계를 거친다 정도만
- 결과적으로 Gaussian Interpolation을 이용하면 아래와 같이 계단보단 부드러운 형태로 복원이 가능하다.

 

  • Summary : Depth from Focus
[장점]
아주 미세하게 조정만 할 수 있다면 쉽고 빠르게 Depth를 구할 수 있다.
[단점]
여러장을 찍어야 한다. (8~10장은 있어야 한다.)

 


 

  • Depth from Defocus
- 한장에서 blur된 정도를 추정할 수 있다면(PSF를 구할 수 있다면)
- 한장으로도 Depth를 구할 수 있을 것이다. (blur의 size를추정하여 Depth를 구하겠다.)

i : 상이 맞는 곳까지의 거리
o : object까지의 거리 (알고 싶은 값) 

EX)

- 주어진 것) blur된 image patch 하나
=> Equation 하나인데 Unknown이 2개(안풀린다.)

- focus(혹은 image plane - s)를 다르게 2장을 찍으면 
=> Equation 2개인데 Unknown 3개(수식 하나 추가하면 풀린다!)

세번째 수식을 구해보면

# Thrid Equation

- 같은 Scene을 blur size를 다르게 하여 2번 찍는다. (D로 조절)

=> 2장 찍는다. (1장 가지고는 못한다.)

# Naive DFD Algorithm
두 이미지의 Fourier 변환을 사용해서 PSF size를 추정하겠다.
- Noise 많이 껴있으면 잘 안되더라 => Error를 설계해서 이를 낮추는 최적화 방식
물체의 거리 O (Depth) 계산

[Method1: D(조리개)크기 변경]
=> D를 다르게 하여 blur 크기 조절
[Method2 : Sensor 위치 이동]
=> image sensor s를 앞뒤로 이동시켜 초점을 일부터 blur하게 만든다.

 

* 실시간으로 복원하고 싶다. => 동시에 2장을 찍는다.

 


 

  • Active Illumination Methods

조명을 조절해가며 Depth를 알아낸다.

 

  • Point Based Range Finding

=> Camera ray와 Light ray가 정확히 어디서 만나는지 구하면 Scene Point를 구할 수 있다.

  • Detecting the Illuminated Point

=> 문제는 모든 점에 대해서 이를 다 해줘야 한다.

이런 문제를 해결하기 위해 아래 방식이 고안되었다.

 

  • Light Stripe Based Range Finding

=> 점으로 쏘지 말고 직선으로 쏘자!

 

그럼 한번에 한줄씩 말고 여러줄씩 찍으면?

대응점을 찾을때 문제점이 발생 => 이는 Binary code를 심어서 해결!

 

  • Binary Coded Structured Light
- 몇번째 선에 해당하는 지를 code를 짠 후 3장을 찍을 때 패턴에 맞춰서 껐다 킨다.
Q) 이를 하는 이유는?
A) multiple stripe를 하기 위해서 
몇번 째 줄이 몇번 째 줄에 대응되는지를 모른다. 
이를 쉽게 알 수 있도록 stripe에 번호를 주고 번호를 Binary로 Coding하자
[장점]
무늬가 없어도 된다.
[단점]
Light Blending : 0과 1이 바뀌는 구간에서 번지는 문제가 발생한다.
==> 이는 바뀌는 구간을 Translation하여 해당 구간을 줄여준다.

  • K-ary Methods

Ternary : 반쯤 켜놓는는 것을 둔다. 
K-ary : 밝기 값을 k level로 하겠다.
=> 이미지를 더 적게 찍어도 된다. / 같은 이미지로 더 많은 Stripe 복원 가능하다.

 

# Color Coding with R, G, B

=> k-ary로 하면 휠씬 더 적은 이미지로 똑같은 stripe를 복원 가능하다.

 

* Color Coding 시 문제점

배경도 color 다 보니깐 색이 섞여서 이를 구분하기 힘들 수 있다.

 

위 문제점을 해결하는 방법으로 아래 방법들이 있다.

 

  • Intensity Ratio Method
- 모든 pixel에 대해서 밝기 값을 다르게 주겠다.
Finding Correspondnece


적당히 어두운 것으로 background를 하나 찍는다.
조명을 조정하여 한쪽은 어둡게, 한쪽은 밝게 찍는다. (실제 실현하기가 어렵다.)
비율에 맞게 몇번째 선에 해당하는 지 구할 수 있다. (2장으로 구할 수 있다.)

 

  • Phase Shift Method
- 조명에 cos 세기를 준다.
Finding Correspondence

밝기 패턴을 가장자리는 밝게, 가운데는 어둡게 
phase를 바꿔가며 3장을 찍어야 한다. (겹치는 영역 없도록 phase 다르게 3장 찍어야 한다.2)
내개 찍은 값  I1,2,3
=> 이 값이 phase shift 상에서 어느 위치에 해당하는지 알면 Xp를 구할 수 있다.

 

  • Summary : Structured Light for Depth Recovery (★) (작년 기출)

=> Number of Images 보기

 

 

 

'4-1 > 컴퓨터비전개론' 카테고리의 다른 글

15주차-Optical Flow  (0) 2025.06.16
13주차-Photometric Stereo  (0) 2025.06.11
12주차-Light and Reflectance  (0) 2025.06.11
11주차-Structure from Motion  (0) 2025.06.10
10주차-Triangulation  (0) 2025.06.09