본문 바로가기

Concept/Computer Vision

[Concept] Depth from Defocus

우리는 defocus 이미지를 활용해서 scene point의 depth를 계산할 수 있다. 이는 이미지가 얼마나 defocus되어 있는지를 알 수 있다면 즉 how much a scene point is blur point of spread functoin PSF를 알 수 있다면 depth를 구할 수 있다는 것이다. 결국 scene point가 얼마나 blur되었는지를 확인하면 depth정보를 찾을 수 있다는 것이다.

위와 같이 특정 이미지를 패치단위로 쪼개보면서 확인해보게 되면 특정 patch는 defocus되어 있고 특정 patch는 focus되어 있는 것을 확인할 수 있다. 이런식으로 각 pixel들 혹은 패치들에 해당하는 scene point들의 실제 depth가 다르다보니 object distance가 달라지게 되고 상이 맺히는 image plane이 달라지게 된다. 하지만, image sensor의 위치는 고정되어 있기에 거리에 따라서 일부는 defocus되고 일부는 focus된다. 결국 이러한 blurnness에 따라서 depth를 알 수 있다는 것이다. 

point spread function은 특정 point가 얼마나 spread되어 있는지를 정의하는 function으로 imaging system에서는 현실의 scene point에 대해서 빛이 들어올 때 빛이 해당 영역에 어떻게 분포되어 있는지를 모델링하는 함수인 것이다. ( spreadness ) 이러한 PSF가 결국 depth에 따라서 다르게 정의되므로 defocusing정도를 PSF의 blur circle크기에 따라서 estimation할 수 있게 된다. 즉 위 예제 이미지와 같이 blur한 정도가 크다면 즉 완전히 defocusing되어 있다면 point spread function의 blur circle이 클 것이고, 반면에 perfectly point of focus plane이라면 완전히 focusing되어 있다면 blur circle이 매우 작을 것이다.

그런데 일반적인 이미징 시스템에서 이러한 PSF는 어떻게 정의될까? 즉 얼마나 spread되는지를 의미하는 이 PSF를 어떻게 얻을 수 있을까?

사실 PSF만 안다면 다음과 같이 ( shift invariant & linear 라는 전제조건 하에 ) convolution에 의해서 scene과 defocus간의 관계가 정의되므로 defocusing된 이미지만을 가지고 deconvolution을 통해서 sharp한 scene을 얻을 수 있게 된다.

이렇게 하나의 equation에 대해서 2개의 미지수가 있는 문제를 풀기 위해서 우선적으로 같은 sharp scene image에 대해서 ( same focused image )  서로다른 여러개의 PSF를 사용해서 defocused image를 두개 얻을 수 있다. 실제로 우리는 카메라 시스템 즉 Imaging System을 일부 컨트롤할 수 있다. 예를 들면 조리개를 조절할 수 있다. 앞서 이 blur circle을 lens diameter를 이용해서 정의했기에 다음과 같이 서로 다른 PSF를 조리개를 조정함으로써 얻을 수 있게 된다. 그 결과 PSF의 파라미터인 시그마에 대해서 다음과 같이 비를 얻을 수 있게 된다.

그럼 이제는 3개의 미지수가 있는 2개의 equation에 대해서 추가적인 하나의 equation을 (비) 더 얻게되었으니 문제를 해결할 수 있다. 실제로 공학적인 접근을 하자면 light는 wave이기 때문에 foruier transform을 통해서 frequency domain에서 문제를 많이 풀게 된다. ( 실제로 convolution / deconvolution도 fequency 도메인에서 곱셈/나눗셈 이기에 연산이 훨씬 쉬워진다. )

그렇게 되면 결과적으로 우리는 defocused image들을 사용해서 PSF를 FFT한 것의 비율로 표현할 수 있게 된다. 그런데 일반적으로 이 PSF는 gaussian으로 모델링되고 gaussian은 FFT를 거쳐도 gaussain이기 때문에 다시 두 번째 식과 같이 쓸 수 있게 된다. 그러면 이로부터 우리는 시그마 1, 시그마 2 에 대한 식을 얻을 수 있고 앞서 두 시그마 간의 비율에 대한 정보를 얻었으므로 PSF를 구할 수 있게 된다. 실제로 이러한 시그마 즉 PSF parameter를 찾는 문제는 reconstruction error에 기반한 optimization을 통해서 찾게 된다.

최근에는 Neural Algorithm이 개선되면서 이러한 PSF를 찾아내는 혹은 Optimization하는 아이디어를 활용해서 lensless imaging으로부터 얻게되는 blur한 혹은 알아보기 힘든 sensor image를 meta-optic의 파라미터를 위와 같은 이론에 기반해 end-to-end loss로 optimization한다.

'Concept > Computer Vision' 카테고리의 다른 글

[Concept] Lens related Issues  (0) 2023.03.27
[Concept] Image Formation using Lens  (0) 2023.03.27
[Concept] GAN Inversion  (0) 2022.11.03