일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- SIFT
- dynamic programming
- image processing
- clustering
- dfs
- 그래프 이론
- 머신러닝
- 강화학습
- MinHeap
- BFS
- 백준
- C++
- exists
- 딥러닝
- 인공지능
- opencv
- IN
- AlexNet
- MySQL
- edge detection
- Python
- Reinforcement Learning
- machine learning
- DP
- sklearn
- canny edge detection
- TD
- 자료구조
- classification
- Mask Processing
- Today
- Total
JINWOOJUNG
[ 영상 처리 ] Ch11. Computational Photography(2) 본문
본 영상 처리 개념과 기법들에 대한 공부를 진행하면서 배운 내용들을 중심으로 정리한 포스팅입니다.
책은 Computer Vision: Algorithms and Applications를 기반으로 공부하였습니다.
또한, 인하대학교 박인규 교수님의 디지털 영상 처리 과목을 기반으로 제작된 포스팅입니다.
https://jinwoo-jung.tistory.com/86
Computational Photography는 다양한 주제들이 존재한다.
- Super-Resolution
- 영상의 해상도 증가
- Denoising
- Noise 제거
- Demosaicing
- CFA Array로 취득한 R,G,B 각각의 Value -> RGB Color Image 생성
- Blur Removal
- 영상의 Motion, Defocus Blur 제거
- Image Matting and Compositing
- 영상의 전경을 추출하여 다른 영상과 합성
- Inpainting
- 영상의 손실된 일부 영역을 복구
- Reflection Removal
- 영상의 반사되는 부분 제거
이러한 계산적인(알고리즘적인) 후처리가 필요한 이유는 뭘까?
원본 영상 $f$에 대하여 Noise, Blur, Intensity 손실 등 다양한 Degradation(품질저하)이 이루어진다. 그렇기에 Restoration(복원)과정을 통해 원본 영상을 추정($\hat {f}$)해야 한다. 그리고 Degradation에 따른 서로다른 Restoration 과정이 앞서 설명한 Topic들이다. 하지만, 이 과정들은 아래의 공통적인 문제이기에 쉽게 해결할 수 없다.
Inverse Problems
원본 영상 $f$에 대하여 Noise, Blur 등을 발생시키는 것이 아닌, 이미 품질이 저하된 영상 $g$에 대하여 Restoration을 통해 원본 영상을 추정($\hat {f}$)하는 Inverse Problem이다.
Ill-Posed Problems
손상된 영상에서 원본 영상을 추정하는 과정은 해가 없을 수도 있다. 해가 있는 경우 유일한 해가 아닌 다중해가 존재할 수 있어 어떤 해가 최적의 해인지 판단하기 힘들다. 이를 Ill-Posed Problem이라 한다.
Ill-Posed Problem을 해결하는 과정에서 일반적으로 최적화를 위한 Regularization이 요구된다. Regularization이란, 내가 추구하고자 하는 방향으로 최적화가 진행하는 과정으로, 이전 포스팅에서 SRF를 복원하는 과정 중 최적화 단계에서의 Smoothness Term 역시 Regularization에 포함된다.
이제 각각의 Computational Photography Topic을 알아보자.
Super-Resolution
Super-Resolution은 저해상도의 영상을 고해상도의 영상으로 복원하는 과정이다. 위 사진의 LR은 저해상도 영상을 강제로 확장하였기에 Blur가 발생한 것을 확인할 수 있다. 이러한 저해상도 영상을 HR과 같이 고해상도로 변환하는 과정을 Super-Resolution이라 한다.
왼쪽 Ground Truth에 대하여 A+, RFL 등 Super-Resolution Alogirhtm 결과와 비교하여 영상의 Detail을 잘 복원하는지 판단할 수 있으며, 위 결과 VDSR이 가장 우수함을 알 수 있다.
Demosaicing
Demosaicing을 이해하기 위해선, Sensor를 통해 Color 영상을 취득하는 원리를 이해해야 한다. 카메라의 렌즈를 통해 들어온 빛은 CCD Sensor를 통해 전기적인 신호로 변환되는데, CCD Sensor 위 Color Filter Array(CFA)가 존재한다. CFA는 Red, Green, Blue Filter가 일정한 패턴을 이루며 존재하는데, 각각의 Filter는 각각의 색상만 투과시켜 색상 정보를 측정한다.
따라서 CFA Filtering 결과 Raw Image와 같이, 하나의 픽셀은 Color Filter에 의해 결정되는 R,G,B 한가지 색상의 Value만 가진다. 이러한 부분적 Color 영상을 RGB Color Image로 변환하는 과정이 Demosaicing이며, 각 픽셀이 R,G,B 모든 Value를 가져야 하기 때문에, 인접 픽셀의 Value를 이용하여 Interpolation(보간)한다.
Image Debluring
Image Debluring은 영상에 존재하는 Blur를 원래의 Sharp Image로 복원하는 과정이다.
- Non-Blind Deconvolution
Non-Blind의 경우 노란색으로 박스친 Point Spread Function(Blur Kernel)를 알고 있는 경우이다. 손떨림의 경우 Camera의 Motion Sensor를 통해 PSF를 추정 가능하다. 이러한 경우 Sharp Image를 쉽게 구할 수 있다.
- Blind Deconvolution
하지만, 일반적인 경우 Sharp Image, PSF를 모두 모르기 때문에 두가지 모두를 추정해야 한다. 이 과정은 뒤에서 자세히 살펴보자.
Video Stabilization
Video Stabilization은 영상의 흔들림을 보정하는 과정이다. 왼쪽과 같이 영상이 취득되는 과정에서 흔들림이 존재하는 Original Image는 Video Stabilization 과정에서 오른쪽과 같이 보정 가능하다.
Why are Images Blurry?
그렇다면 영상에서의 Blur는 왜 발생하는 것일까?
영상에는 심도라는 개념이 존재한다. 위 영상의 경우 심도가 얕아 꽃에 초점이 맞춰져 있고, 뒤의 배경은 Blur 효과가 발생한다. 하지만, 우리는 Defocus, Motion Blur에 더 초점을 맞출 것이다.
Defocus Blur
왼쪽 영상은 카메라의 Focus가 맞지 않아서 영상이 전체적으로 흐릿해 보인다. 이를 Defocus Blur라 한다. Defocus Blur의 경우 Defocus Blur kernel은 오른쪽과 같이 Gaussian Blur의 형태를 보인다.
Motion Blur
영상을 취득하는 과정에서 발생하는 움직임으로 인하여 발생한 Blur를 Motion Blur라 한다. Motion은 크게 2가지로 나눌 수 있는데, 영상을 취득하는 과정에서 손떨림과 영상을 취득하고자 하는 객체의 빠른 움직임으로 인하여 발생하는 Motion이 있다. 이러한 Motion을 수학적으로 모델링 한 것이 Motion Blur kernel이다. 오른쪽을 Kernel를 기준으로 생각 해 보자면, 영상을 취득하는 과정에서 오른쪽 돼지 꼬리와 같은 손떨림이 발생함을 의미한다.
Blur Kernel과 PSF가 혼용되고 있는데, PSF를 이해하면 Blur Kernel를 기반으로 Motion을 추측한 과정을 이해할 수 있다.
Point Spread Function(PSF)는 Motion이 이미지를 어떻게 흐리게 하는지를 설명하는 함수로, 점 광원이 이미징 시스템에서 어떻게 퍼져서 이미지 평면에 나타나는지를 기술하는 함수이다. Motion Blur의 경우, PSF는 카메라의 움직임 또는 피사체의 움직임 궤적을 의미한다.
이러한 Motion Blur는 영상 전체에 균일(Uniform)하게 나타날 수 있지만, 일반적으로는 영상의 일부마다 다르게(Non-Uniform) 나타난다. 이는 Depth가 존재하는 3D Scene에서 2D Image로 변환되면서 원근에 따른 Motion Blur의 차이가 존재하기 때문이다. 동일한 Motion이여도 가까운 거리의 객체는 많이 움직여 보이는 반면, 아주 먼 객체는 가만히 있는 것 처럼 보일 것이다.
원본 영상을 Blur Kernel과 Convolution 연산을 하면 Blurred Image가 생성되는데, Blurred Image에서 Blur를 제거하는 Blind Deconvolution은 매우 힘들다. 우리는 원본 영상과 Blur Kernel 모두 모르기 때문에 이를 추정하는 과정은 쉽지 않다(Inverse Problem).
또한, 원본 영상(Sharp Image)와 Blur Kernel를 추정했다 하더라도, 다양한 해가 존재할 수 있기 때문에 어떠한 해가 정답인지 알 수 없다(ill-Posed Problem). 따라서 Regularization을 통해 마지막과 같은 결과로 추정할 수 있도록 유도해야 한다.
Priors
우리는 왼쪽과 같은 Natural Images에서 Prior를 구할 수 있는데, Nature Images에서 취득한 Gradient의 분포(HoG)를 구하면 오른쪽과 같다.
이러한 Prior(사전정보)는 Blind Deconvolution 과정에서 다중해가 추정되는 경우 Sharp Image의 HoG를 계산해서 Prior과 유사한 Histogram을 가지는 방향으로 추정하도록 Regularizatoin 하면 최적의 결과를 도출할 수 있다.
Natural Images Statistics
영상의 HoG를 분석 해 보자. Natural Image의 HoG는 큰 값으로 갈수록 0에 수렴하는 것이 아닌 Value가 존재함을 알 수 있다. 확률 분포에서 이러한 특성을 Heavy(Long) Tails를 가진다고 한다.
이는 Blurred Image의 HoG와 비교하면 확연한 특징을 가짐을 확인할 수 있다. 파란색이 Blurred Image의 HoG인데, 큰 값으로 갈수록 빠르게 0으로 수렴하는 것을 확인할 수 있다. Gradient는 영상의 밝기 변화를 의미하기에 Edge 정보를 포함한다. Edge는 급격한 밝기 변화가 존재하기 때문에 Gradient가 큰 값을 가지지만, Blurred Image의 경우 Blur로 인하여 영상의 Edge가 사라지고 부드럽게 변한다. 따라서 Large Scale의 Gradient가 존재하지 않기 때문에 HoG가 위와 같은 분포를 가지게 된다.
HoG를 잘 알려진 확률 분포 함수와 비교 해 본다면, Blurred Image의 경우 Gaussian, Natural Image의 경우 Laplacian과 유사하다. 따라서 Sharp Image의 HoG를 구했을 때 Laplacian 분포를 가지는 Priors를 활용할 수 있다. 또한, Motion Blur Kernel의 경우 Positive, Sparse한 Prior를 활용할 수 있다. 오른쪽의 Blur Kernel 중 왼쪽은 손떨림, 오른쪽은 피사체의 수평적 움직임에 의한 Motion Blur Kernel이다.
따라서 우리는 Sharp Image와 Blur Kernel의 Convolution을 통해 Blurred Image가 생성 되었으며, Sharp Image의 HoG는 Laplacian Distribution을 따르며, Blur Kernel는 Positive&Sparse 한 정보를 활용하여 Blind Deconvolution을 수행한다.
Deconvolution의 결과는 위와 같으며, 얼굴 부분을 확대 해 보면 확실히 성능이 좋아졌음을 확인할 수 있다.
왼쪽 상단의 영상을 Deconvolution하는 과정을 보면 Blurred Image에서의 사람의 눈동자에서 광원으로 부터 반사된 빛의 궤적이 Blur 과정을 모두 포함하고 있다. 그렇기에 PSF도 그와 유사한 궤적을 보이며, 복원된 Deblurred Image에서는 제거된 것을 확인할 수 있다.
하지만, Blur Kernel를 알고 있는 상황에서 Deconvolution을 진행 하여도, 그 과정에서 발생한 Ringing Artifacts는 여전히 도전적인 문제이다. Ringing Artifacts는 Edge와 같은 고주파 부근에서 발생되는데, Sharp Image를 복원하는 과정에서 고주파 성분을 강조해야 하는데, 이 과정에서 노이즈나 불필요한 정보가 같이 강조되어 Ringing Artifcats가 발생하는 것으로 추정된다.
Image Matting and Compositing
Image Matting은 영상에서 전경을 분리하는 과정이고, Image Compositing은 분리한 전경을 다른 배경 영상과 합성하는 과정이다. 원본 영상은 $F$로 표현된다. 만약 우리가 분리하고자 하는 전경이 배경과 유사한 색상 분포를 가지거나, 배경과 많이 섞여 있다면, 전경을 분리하는 것은 쉽지 않다. 그래서 Trimap을 통해 Background와 Foreground 영역을 구분한다. 흰색(255)는 전경, 검은색(0)은 배경, 0~255 사이의 Intensity를 가지는 부분은 전경과 배경이 섞이는 영역을 의미한다.
Trimap을 기반으로 $\alpha$를 특정한다. $\alpha$는 0~1의 범위를 가지며, 1은 완전히 불투명한 전경, 0은 완전히 투명한 배경, 0~1의 실수를 가지는 경우 전경과 배경이 혼합된 상태로 부분적 투명함을 의미한다. 이 과정을 Image Matting이라 한다. 여기서 구한 $\alpha$ 값을 이용하여 새로운 배경과 추출한 전경을 합성하는 과정이 Image Compositing이다.
$$\alpha F + (1- \alpha)B$$
원본 영상을 $F$, 새로운 배경을 포함하는 영상을 $B$라 하자. $\alpha = 1$인 경우 전경이기 때문에 $F$에서 전경에 대한 Pixel Intensity를 가져온다. $\alpha = 0$인 경우 배경이므로, $1-\alpha = 1$이여서 $B$로부터 새로운 배경에 대한 Pixel Intensity를 가져온다. 마지막으로 $\alpha$가 0~1의 실수값을 가지는 경우 전경-배경의 불확실성(부분적 투명도)를 유지하기 위하여 $\alpha$에 해당하는 Weight로 $F,B$에서 Pixel Intensity를 가져온다. 그러면 젤 우측 결과와 같이 추출한 전경을 새로운 배경에 합성하는 결과를 얻을 수 있다.
Inpainting
위와 같이 영상의 일부 Pixel Intensity가 소실된 영상을 채워넣는 과정을 Inpainting이라 한다.
Object Removal
영상의 일부 물체(객체)를 제거하는 과정을 Object Removal이라 한다. Object Removal은 제거할 객체의 영역을 추출하기 위한 Image Segmentation, 영상을 제거한 후 소실된 Pixel Intensity를 채우는 Inpainting을 필요로 한다.
Reflection Removal
왼쪽의 Input $I$를 보면, 유리창에 다른 배경이 반사되어 보이는 Reflection이 영상에 함께 취득된 것을 확인할 수 있다. 영상에서의 Reflection을 제거하는 과정이 Reflection Removal으로, 원본 영상 $I$에서 배경 성분인 $L_B$, 반사 성분인 $L_R$로 분리함으로써 Reflection이 제거된 이미지를 얻을 수 있다.
$$I = L_B + L_R$$
Layer Separation을 위해선 몇가지 단서가 요구된다. 원본 영상을 잘 분석 해 보면, 찍고자 하는 물체/배경에 Focus가 맞아 있다. 앞서 배운 Blur 개념을 적용 해 보면, Sharp Image의 경우 영상의 HoG가 Heavy Tail을 가진다. 하지만, Reflection으로 인하여 Blur(Defocus)가 된다면 Gaussian Blur를 따른다. 이러한 정보를 토대로 Reflection과 Background를 분리시킬 수 있다.
'2024 > Study' 카테고리의 다른 글
[ 컴퓨터 비전 ] Ch5. Deep Learning...2 (0) | 2024.11.23 |
---|---|
[ 컴퓨터 비전 ] Ch5. Deep Learning...1 (0) | 2024.11.23 |
[ 영상 처리 ] Ch11. Computational Photography(1) (2) | 2024.06.05 |
[ GRAPH ] Topological Sorting (0) | 2024.06.02 |
[ 영상 처리 ] Ch8. Clustering and Segmentation(3) (0) | 2024.06.01 |