Image degradation은 image의 화질을 떨어뜨리는 현상을 말한다. Image degradation에는 다음과 같이 여러 다양한 종류가 있다.
만약 빛이 적은 환경에서 사진을 촬영한다면 image 상에 알 수 없는 모양들이 생길 것이다. 이러한 것을 noise라고 하며, 이는 어두운 환경에서 높은 ISO로 촬영할 때 주로 발생하는 현상이다. 그리고 우측의 image와 같이 motion blur 현상도 일어날 수 있다. 보통 motion blur는 카메라가 흔들려서 생기는 현상이다. 우리가 사진을 찍고자 할때는 충분한 exposure time이 필요하다. Exposure time이 길어질수록 손떨림에 의해 카메라가 흔들릴 확률도 높아진다. 그리고 빛이 적은 환경에서도 exposure time이 길어야하는데, 이때도 카메라가 흔들릴 확률이 높아진다. 그래서 이러한 환경에 motion blur가 발생하게 된다. 이외에도 image degradation에는 defocus blur, fog, low-resolution, compression artifact, under-expousure, ove-exposure 등의 종류가 있다. 이러한 현상들은 사람의 눈으로 보았을 때 image의 퀄리티를 떨어뜨리고, object tracking이나 image segmentation 등의 시각 인식 algorithm의 성능을 저하시킨다. 왜냐하면 대부분의 algorithm들은 깨끗한 image를 기반으로 학습되기 때문이다.
사진을 촬영할 때 발생하는 image degradation의 과정에 대해서 알아보도록 하자. 예를 들어서 홍콩에 여행을 간 상황이라고 가정해보자. Image degradation이 발생하기 쉬운 어두운 시간대에 밖에 나가서 사진을 찍은 것이다. 길가에는 움직이는 차가 있는데 이 차의 움직임 때문에 motion blur가 발생하게 된다. 그리고 카메라는 들어오는 광자를 포착하기위한 도구이다. 즉, 카메라는 exposure time 동안 카메라에 들어오는 광자의 양을 측정해주는 도구이다. 그러나 광자는 카메라에 규칙적으로 들어오지 않아서 noise가 발생하게 된다. 그리고 exposure time 동안에 손떨림에 의해서 카메라가 흔들리기도 한다. 그래서 촬영된 사진을 보면 motion blur가 발생할 수 있다. 더불어 추가적인 noise들이 발생하게 되고, 이러한 모든 noise들은 ISO 설정에 따라 증폭된다. 만약 ISO를 높게 설정한다면 촬영된 사진에서 모든 noise들이 증폭될 것이다.
마지막으로 사진을 촬영하고, 해당 사진은 ISP에 의해서 처리될 것이다. Image는 압축이 되고 JPEG 형식으로 저장될 것이다. 압축 과정 동안 몇가지 정보들이 손실이 되고 compression artifact가 추가될 것이다. 만약 영화를 촬영한다고 하면 영화는 MPEG 형식으로 저장될 것이다. 여기서도 압축 과정에서 compression artifact가 생성이 된다.
카메라에 의해서 촬영되어 얻어진 사진은 예를들어 으로 초기에는 굉장히 크다. 이렇게 불필요하게 큰 경우에는 어딘가에 업로드를 하거나 누군가에게 전송을 할 때 downsampling과 compression 과정이 되어 진행될 것이다. 이러한 경우에도 compression artifact가 생기게 되고 원래의 해상도를 잃어버릴 것이다. 그래서 여러 종류의 image degradation이 이 과정 중에 발생하게 된다.
다양한 종류의 image degradation이 있지만, 이 중에서 가장 대표적인 것은 카메라에 의해 생기는 noise이다. Image noise는 종종 image를 포착할 때 생기게 된다. 사진을 찍을 때 noise의 종류 또한 다양하다. 앞서 말했듯이 카메라는 들어오는 광자의 양을 포착하는 도구이다. 이렇게 모인 광자들은 센서 안에서 전하로 바뀌게 된다. 다시 전하는 analog signal로 바뀌게 되고, 다시 digital signal로 바뀌게 된다. 광자는 카메라도 일정하게 도달하지 않는다. 만약 찍으려고 하는 곳의 밝기가 동일하다면 들어오는 광자의 수는 바뀔 수 있다. 그래서 들어오는 광자들의 수는 변동되기도 한다. 찍으려는 곳의 밝기가 변하지 않더라도 들어오는 광자의 수는 시간에 따라 달라질 수 있다. 이렇게 들어오는 광자의 수가 무작위로 바뀌기 때문에 noise가 발생하게 되고, 이 noise를 photon shot noise라고 한다. 물론 이러한 noise뿐만 아니라 dark current noise나 sensor defects와 같은 현상도 발생하곤 한다. 비록 센서에 도달하는 광자가 없을지라도 센서 자체는 약간의 전하를 가지고 있다. 그래서 이 전하가 dark current noise를 발생시킨다.
Thermal noise는 analog circuit에서 발생하는 noise이다. 센서가 광자를 모은 후에는 광자들이 analog signal로 전환된다. 그리고 이 analog signal은 카메라에 있는 analog circuit에서 처리가 된다. 만약 기온이 높다면 높은 온도가 analog circuit에 어떠한 영향을 주고 analog signal이 무작위로 변동하게 된다. 그러면 이러한 변동으로 인해서 thermal noise가 생기게 되는 것이다.
그러면 이러한 모든 noise들은 gain control A/D converter에서 증폭된다. 그래서 analog signal이 이 converter에 의해서 digital signal로 전환이 되는데, 이러한 전환 과정 도중에 quantization noise가 발생하게 된다. Quantization 전에는 3.1이었던 singal이 후에는 3.0으로 0.1이 사라지게 된다. 그래서 원래의 signal과 0.1이라는 차이가 발생하게 되고, 이 차이가 또한 noise를 가지고 있다고 간주하는 것이다. 그래서 이 noise를 quantization noise라고 하는 것이다.
Pre-ADC noise는 A/D converter 이전의 모든 noise를 말하고, photosensor의 signal이 증폭될 때 증폭된다. 그리고 ISO-level은 digital 카메라에서 얼마나 증폭되는지를 조절하게 된다. 이러한 noise의 증폭은 빛이 적은 환경에서 특히 발생하는 문제이다. 왜냐하면 빛이 적은 환경에서는 높은 ISO 값을 사용하기 때문이다.
사진을 촬영해서 image를 얻을 때까지 다양한 noise들이 발생하게 된다. Digital image에서 가장 대표적인 noise는 이중에서도 shot noise이다. 들어오는 광자들을 모으기 위해서 photodiode를 사용하게 된다. 카메라에는 sensor plane이 존재하고, 이 sensor plane에는 굉장히 많은 sensor들이 존재한다. 여기서 각 센서들을 photodiode라고 하는 것이다. Photodiode는 들어오는 광자들을 모으고, photodiode의 signal strength는 센서를 때리는 광자들의 수에 비례하게 된다. 센서를 때리는 광자들은 무작위이고, shot noise 혹은 photon shot noise는 무작위로 들어오는 광자들의 총 개수로 인하여 발생한 noise이다. Shot noise는 Poisson distribution을 따르고, 광자의 수가 많을 때는 Poisson distribution이 Gaussian distribution으로 근사될 수 있다. 이러한 것이 image denoising method가 noise를 Gaussian noise로 가정하는 이유이다. 결론적으로 광자는 Poisson distribution을 따르는 noise이고, shot noise는 센서 크기가 작아지고 pixel 패킹이 촘촘해질수록 더 심해진다.
센서는 광자들을 받아들이고, 센서에 도달한 광자의 수는 Poisson distribution을 따른다. 이것이 의미하는 것은 광자의 수가 적을 때는 noise가 작다는 것이고 광자의 수가 많을 때는 noise도 마찬가지로 커진다는 것이다. 특정 시간 동안에 센서로 들어오는 광자의 평균 개수가 5개라고 했을 때, 실제로 센서에 도착하는 광자의 수는 4개 혹은 6개가 된다. 이 차이는 대부분 1, 혹은 2정도가 된다. 반면 밝은 환경과 같이 광자가 평균 100개라고 했을 때, 실제로 도착하는 광자의 수는 110, 105, 95와 같게 된다. 이 차이는 광자의 수가 적을 때 보다 많을 때 더 커진다는 것이다. 즉, 광자의 수가 많을수록 noise가 더 심해진다는 의미이다.
그래서 photon shot noise가 Poisson distribution을 따르고, noise의 절대적인 크기는 광자의 수가 많을수록 더 심해진다. 그러나 SNR의 측면에서 광자의 수가 적으면 signal 또한 작아지게 된다. 그래서 noise로부터 원래의 signal을 구별하는 것이 더 어려워진다. 결론적으로 shot noise는 빛이 적은 환경에서 더 심각해지는 것이다.
센서의 크기가 작거나 pixel의 패킹이 촘촘한 것은 결국 빛이 적은 환경에서 사진을 촬영하는 것과 비슷하다. 센서의 크기가 작은 상태에서 동일한 exposure time 동안 광자를 받을 때 기존보다 적은 개수를 받게 될 것이다. 그래서 센서의 크기가 작다는 것은 동일한 exposure time 동안 적은 광자를 받게되는 것이고, 이는 빛이 적은 환경에서 사진을 촬영하는 것과 같은 구조이고, 그래서 noise는 더 심해지게 된다.
이는 photon noise simulation의 결과이다. Photon shot noise는 무작위로 도착하는 광자의 수에 의해서 발생한다. 그래서 어두운 환경일수록 광자의 수가 굉장히 적을 것이다. 반대로 매우 밝은 환경이라면 더 많은 수의 광자가 카메라에 도착할 것이다. 그래서 image의 퀄리티가 위와같이 변하게 될 것이다.
Salt-and-pepper noise는 전형적인 카메라 noise이다. 이 noise는 replacement noise라고도 불리는데 그 이유가 pixel 값들의 일부가 무작위 값으로 대체되기 때문이다. Salt-and-pepepr noise는 salt noise와 pepper noise가 합쳐진 형태로 salt noise는 무작위로 pixel이 하얀색인 경우를 의미하고 pepper noise는 무작위로 pixel이 검정색인 경우를 의미한다. Analog circuit이나 A/D converter에 어떠한 문제가 생기게되면 이러한 noise가 생기게 된다.
카메라에는 sensor plane이 존재하고 많은 수의 photodiode가 존재한다. 어떠한 문제가 이 센서나 처리 과정에서 발생하게 되면 제대로 작동하지 않은 photodiode들이 생기게 될 것이다. 그래서 이 photodiode는 들어오는 광자에 대해서 덜 sensitive해져서 제대로 동작하지 않을 것이다. 그래서 dead pixel이라는 것은 photodiode가 제대로 동작하지 않은 것을 의미한다. 만약 dead pixel이 존재하게 되면 드물게 검은색을 보이는 pixel이 생길 것이고, 반대로 hot pixel은 photodiode가 들어오는 광자에 대해서 매우 sensitive해서 해당하는 pixel은 매우 밝은색으로 될 것이다.
ISP 과정에서 카메라는 그 자체로 dead pixel과 hot pixel을 구분하게 된다. 그래서 image로부터 자체적으로 dead pixel과 hot pixel을 다뤄서 문제를 해결하게 된다. 그래서 사람의 눈으로 image로부터 이러한 pixel들을 알아채지 못하는 것이다. Raw image나 ISP 과정이 없다면 우리가 촬영한 image로부터 hot pixel과 dead pixel들을 발견할 수 있을 것이다.
Noise를 제외하고도 다양한 종류의 image degradation을 볼 수 있다.
그중에서도 대표적으로 motion blur가 있다. Blur 중에서도 다양한 종류가 존재한다. Camera motion blur는 카메라가 흔들려서 발생한 blur이다. Defocus blur는 원하던 개체가 아닌 다른 개체에 의해서 발생한 blur이다. 또한 실제로 다양한 이유가 섞여서 발생한 blur도 있다. 보안 카메라같은 경우 바람의 영향을 받아서 자주 흔들린다. 또한 보안 카메라는 움직이는 자동차를 촬영하기 때문에 촬영하려는 개체 또한 흔들리게 된다. 비록 focal length가 길에 대해서 focus가 되어있다고 하더라도 시간이 지남에 따라 카메라는 영향을 받아서 focal length가 바뀌기도 한다. 그래서 더이상 길을 focusing 하지 않아서 blur가 발생하기도 한다. 이렇게 현실에서는 종합적인 이유로 blur가 자주 발생하게 된다.
이미지 denoising관련 글을 찾다 우연히 들어왔는데 큰 도움이 됐습니다!! 감사합니다 :)