Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

No Limitation

[Paper Review] Single Image Haze Removal Using Dark Channel Prior 본문

논문 리뷰

[Paper Review] Single Image Haze Removal Using Dark Channel Prior

yesungcho 2022. 7. 25. 16:39

원 논문 링크 : 

https://ieeexplore.ieee.org/abstract/document/5567108

He, K., Sun, J., & Tang, X. (2010). Single image haze removal using dark channel prior. IEEE transactions on pattern analysis and machine intelligence, 33(12), 2341-2353.

 

본 리뷰는 제 개인 유튜브 채널에도 올려놓았습니다. 참고 부탁드립니다.

https://www.youtube.com/watch?v=ORy50gWA-58

 

Background

이번 리뷰할 페이퍼는 'Dark Channel Prior'로 유명한 논문으로, Image Dehazing을 공부하는 데에 있어서는 필수 개념인 DCP 개념을 공부하고자 정리한 포스팅입니다. DCP 관련 포스팅으로 잘 정리되어 있는 포스팅으로 아래 포스팅을 참고하시는 것도 좋을 것 같습니다.

https://hyeongminlee.github.io/post/pr001_dehazing/

 

[논문 리뷰]Single Image Haze Removal Using Dark Channel Prior | Hyeongmin Lee's Website

안녕하세요. 오늘은 Deep Residual Learning, Guided Filtering, Faster R-CNN 등으로 유명한 Kaiming He의 CVPR 논문인 [Single Image Haze Reduction Removal Using Dark Channel Prior]에 대한 리뷰를 하려고 합니다. 아이디어도 대

hyeongminlee.github.io

 

우선, Image Dehazing은 지난 PSD 논문(https://yscho.tistory.com/124) 포스팅에서 정리를 드렸듯, vision 기반의 여럿 task를 수행하는데에 방해가 되는 haze를 제거하는 task를 의미합니다. 아래 사진과 같이 실제 image에 foggy, blurr 현상 등이 발생하게 되면 object detection 같은 task를 수행하는 데, 또 classification 같은 일을 수행하는 데에도 방해가 될 수 있습니다.

 

https://towardsdatascience.com/synthesize-hazy-foggy-image-using-monodepth-and-atmospheric-scattering-model-9850c721b74e

 

 

그리고 이러한 haze가 발생하는 원인으로는 Atmospheric Scattering Model (ASM)으로 종종 설명되곤 합니다. 이 ASM에 대해서도 지난 PSD 논문(https://yscho.tistory.com/124) 포스팅에서 정리해놓았으니 참고 부탁드립니다. 결론만 말씀드리면 J(x)를 haze-free, t(x)를 transmission map ( 대기를 통과하는 빛의 비율 ), A를 전역대기 산란광 (global atmospheric light), I(x)를 haze image라고 하면 다음 수식이 성립하게 됩니다. 

그리고 조금 더 뜯어보면 위 수식에서 알 수 있듯, I(x)는 J(x)와 A를 t(x)를 기점으로 내분한 것과 같다는 것을 알 수 있습니다. 즉 아래 그림처럼 말이죠.

그리고 이미지의 R, G, B 채널 별로 모든 손실되는 정보가 동일하게 되면 다음과 같이 특정 channel에 대해서도 표기가 가능하게 됩니다.

 

 

자 그렇다면, 본격적으로 Dark Channel Prior는 뭐고 이걸 가지고 어떻게 dehaze를 수행할 수 있는 지를 살펴봅시다.

 

Dark Channel Prior (DCP)

우선 Image Dehazing을 수행하는 데에는 요즘은 거의 딥러닝이 발전함에 따라 learning-based 방법들이 주류를 이루게 되었습니다. 하지만 본 논문은 2010년에 나온 논문으로 아직 딥러닝이 학계에서 활발해지기 전, 전통적인 통계 방법을 기반으로 한 image dehaze 방법입니다. 하지만 그럼에도 본 방법이 중요한 이유는, 많은 label이 없는 데이터셋에서, 즉 unsupervised 세팅에서는 여전히 dark channel prior를 바탕으로 한 loss들을 많이 사용하기 때문입니다. 그러다보니 늘 image dehazing 논문을 볼 때마다 등장하는 개념이기 때문에 반드시 알아야 하는 개념이기도 합니다.

 

이 Dark Channel Prior는 말 그대로 'Prior', 어떠한 사전 지식을 활용하게 되는데 저자는 다음과 같은 key observation을 활용한다고 언급합니다. 

 

"The dark channel prior is based on the following observation on haze-free outdoor images: in most-of the non-sky patches, at least one color channel has very low intensity at some pixels."

 

즉, haze가 없는 이미지에서 일반적으로 하늘 영역을 제외한, 대부분의 픽셀에서 적어도 한 픽셀에서 매우 낮은 명도 값을 가졌다는 사실을 발견했다는 것입니다. 조금 말이 복잡한데, 간단하게 수식으로 표현하면 다음과 같습니다.

위 수식은 dark channel이라는 값을 구하는 과정인데, 이 dark channel이 바로 haze-free 이미지 y에서 pixel x를 기점으로 local patch들 과 채널 c (r, g, b) 내 가장 작은 intensity값을 갖는 값을 dark channel로 정의합니다. 즉, local patch와 channel을 고려해서 가장 낮은 명도 값을 구한다고 보시면 됩니다. 이 값을 시각화한 결과는 아래 그림과 같습니다.

 

 

이 값을 구할 경우 대부분의 haze-free image에서는 이 값이 0이 되거나 0에 근사한 값을 갖는다고 합니다. 

위 row의 사진들은 haze-free 이미지고 아래 사진은 이들의 dark channel 이미지들입니다. 보시면 아시다시피 대부분 검정색입니다. 즉, dark channel 값이 0에 가깝거나 0에 근사한 값이라는 거죠. 구체적으로 통계를 내보면 5,000개의 dark channel 값 중에서 75%가 0에 근사한 값을 가졌고 90%가 명도 값 25 이하인 값을 가졌다고 합니다. 즉 매우 어두운 값을 갖는다는 것이죠. 그리고 이러한 값들을 주로 갖는 경우는 (1) 그림자나 (2) colorful한 object, (3) 검은색, 어두운 색의 object의 경우라고 합니다. 즉, 일반적인 natural 한 이미지들은 대부분 저런 특징을 갖는다는 것입니다.

 

자 하지만, 실제 haze image는 어떨까요? haze image는 dark channel 의 경우가 비교적 훨씬 명도 값이 크게 나왔다는 점을 언급합니다. 

여기서 오른 쪽 그림이 haze한 경우인데 그림에서 볼 수 있듯 이들의 dark channel은 brightness가 매우 큰 것을 알 수 있습니다. 이는 저자는 ASM 기반으로 설명을 하는데요 additive airlight로 인해, transmission t 값이 낮아지게 되고, 이는 결국 haze image가 더 bright한 값을 갖게끔 한다는 것을 언급합니다. 

 

그래서, 바로 이 Dark Channel Value를 활용해서 haze의 density 정도를 추정할 수 있고 이들을 통해 haze-free 이미지를 도출하는 방법을 고안하게 됩니다. 

그 방안으로는 바로 ASM에서 unknown value인 t와 A를 바로 이 DCP를 이용해 추정하는 것입니다. 

 

 하지만, 이 DCP에 예외적인 케이스가 존재하였는데요, 그것은 바로 "하늘"의 경우였습니다. 하늘의 경우는 haze가 없는 경우에도 매우 명도가 높은 dark channel value를 가졌는데요. 그 이유에 대해서도 저자는 DCP로 수식을 설명할 때 같이 언급합니다. 그 이유에 대해서는 뒷 부분에서 자세하게 소개해드리겠습니다. 

 

Haze Removal Using Dark Channel Prior

자 이제 이런 특징을 바탕으로 J, A, t를 추정할 건데, 하나씩 살펴보겠습니다. 

 

먼저 t를 추정하는 과정부터 살펴보죠.

 

Estimating the Transmission

우선 A는 주어졌다고 가정하고 local patch Ω(x)의 transmission도 constant하다고 가정하겠습니다. 

구해야 하는 t를 t ̃로 정의하겠습니다. 

 

우선 ASM format에서 특정 channel에 대해 수식을 전개하면 다음과 같은 수식이 도출됩니다. 

여기는 특정 channel에 대해 ASM을 정리한 것에 불과합니다.이제, 여기서 Dark Channel value를 구해야하기 때문에 양변에 local patch에 대한 min operator를 적용합니다. 

다음으로 channel에 대한 min operator를 적용하고 양 변을 A로 나누어주게 되면 아래 수식처럼 전개가 됩니다. 

자 이렇게 dark channel value를 구하는 수식으로 전개하였습니다. 자, 여기서 우리는 앞서 살펴보았던 dark channel prior, 사전 지식을 사용합니다. 대부분의 haze-free 이미지에서는 dark channel 값이 0에 근사하거나 0이었습니다. 바로 이 지식을 활용하게 되면 아래 수식처럼 전개할 수 있습니다.

그러면 위 수식이 다음과 같이 t ̃에 대한 수식으로 전개할 수 있습니다.

자 위 수식에서 haze image I와 A는 주어진 값이기 때문에 미지수 t ̃를 구할 수 있습니다. 

 

그리고 '하늘'의 경우를 생각해봅시다. 하늘의 dark channel 값은 결국 Airlight와 동일한 (거의 유사한) 값을 가지게 되는데, 결국 이 경우 다음과 같은 수식이 성립하게 되고,  t ̃는 0에 근사한 값을 가지게 됩니다.

즉 좌측의 수식이 1이 되어 자연스레 t ̃는 0이 됩니다. 

그리고 이는 매우 make sense한데, t ̃는 앞서 언급드렸듯 depth(distance)에 따른 지수 감소 함수입니다. 하늘의 경우는 무한한 거리에 위치하기 때문에 t ̃→0임을 알 수 있습니다.

하지만 여기서 그냥 t ̃를 사용하지 않고 저자는 다음과 같은 특징을 고려합니다. 아무리 clear day의 image라 할지라도 대기 입자들로 인한 감쇠는 여전히 일어날 수 있다는 사실에 저자는 주목합니다. 그리고 저자는 사람들이 이 대기 입자로 인해 발생하는 haze 정도를 통해 거리를 가늠할 수도 있게 되는데 (대기 원근법, aerial perspective), 이러한 특징을 앞서 구한  t ̃를 구할 때 반영해주게 됩니다. 즉, 완전히 haze가 제거되는 것이 아니기 때문에  t ̃를 덜 감쇠시킴으로써, 약간의 haze를 남기게 되는 것이죠. 그러한 파라미터 w (0<w<=1)을 정의하게 됩니다. 본 논문에서는 0.95를 사용했다고 하네요.

자 그러면 이제 저 t ̃를 이제 사용하면 될까요? 하지만 아쉽게도 여전히 진행해야 할 사항들은 남아있습니다. 아래 그림을 보시죠.

실제 시각화를 해보면 위 사진(b) 부분이 바로 transmission map인데 부분 부분 block effect가 발생했음을 알 수 있습니다. 그 이유는 바로 전에 세웠던 가정인, transmission이 local patch에서 constant할 것이라는 가정이 사실 아니기 때문입니다. 따라서 이러한 부분을 보정해주기 위해 'soft matting'이라는 과정을 거치게 됩니다. 

 

Soft Matting

 

soft matting에 대한 자세한 사항은 우선 본 포스팅에서는 다루지 않겠습니다. 자세한 학습이 필요하신 분들은 아래 논문을 참고하면 좋을 것 같습니다. 

https://ieeexplore.ieee.org/abstract/document/4359322

 

A Closed-Form Solution to Natural Image Matting

Interactive digital matting, the process of extracting a foreground object from an image based on limited user input, is an important task in image and video editing. From a computer vision perspective, this task is extremely challenging because it is mass

ieeexplore.ieee.org

우선 이 방법을 통해 기존 t ̃를 Refining을 시켜준 결과를 t라고 하면, 다음과 같은 cost function을 minimize함으로써 refine을 시킨다고 합니다.

위 수식에서 L은 Matting Laplacian matrix라는 것을 의미하는데 아래 수식처럼 전개된다고 합니다. (이 부분에 대해서는 저도 명확하게 이해를 못해서ㅠㅠ 우선 설명은 스킵하겠습니다..ㅠ)

그래서 위 energy function을 optimize하게 되는 t는 최종적으로 아래 cloased form의 결과 값이 나오고 이 값을 푸는 녀석을 최종 t로 사용하게 됩니다.

본 논문에서는 람다 값으로 10^(-4)를 사용했다고 합니다.

 

이러한 soft matting을 시켜주면 앞선 block 효과가 없어진다고 저자는 언급합니다.

 

Recovering the Scene Radiance

 

이렇게 t를 구하게 되었으므로 ASM 공식에 의해 다음처럼 J를 구할 수 있습니다.

하지만 간혹 t가 0으로 가까이 근사할 수록 J가 불안정해지는 값이 나오기 때문에 lower bound t0를 지정해주어 clipping을 해주게 됩니다. 본 논문에서는 t0를 0.1로 사용했다고 합니다.

 

Estimating the Atmospheric Light

 

그렇다면 이제 A를 구하는 단계를 살펴보겠습니다. 기존에는 A를 구하기 위해 원본 이미지에서 가장 밝은 부분을 사용했다고 하는데 이는, 실제 real world 문제를 풀 때 적합하지 않는 경우가 많았습니다. 예를 들어 하얀색 자동차나 건물이 나오면 이를 A로 사용하게 되면 natural한 이미지가 나오지 않았기 때문입니다.

 

따라서 여기서는 앞서 구한 dark channel value를 활용해, 이것이 haze intensity를 반영한다는 점을 이용하게 됩니다. 

그 방법으로는 (1) haze intensity가 상위 0.1% 이내인 것을 추출한 다음에 (2) 여기서 원본 이미지에서 가장 bright한 걸 A로 정의하는 것입니다.

즉 위 사진을 보면 (b)에서 노랗게 칠해진 영역이 바로 Dark channel 값 기준 상위 0.1% 이내에 해당하는 부분입니다. 그리고 저 부분 중에서 원본 이미지에서 가장 bright한 녀석을 고르는 것입니다. 이렇게 되면 더 make sense한 A값을 정의할 수 있게 됩니다. 

 

이렇게 Image Dehazing한 결과를 보면 다음과 같습니다.

 

이상 Dark Channel Prior에 대한 포스팅이었습니다! 긴 글 읽어주셔서 감사합니다!