일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- canny edge detection
- sklearn
- SIFT
- exists
- clustering
- AlexNet
- 자료구조
- opencv
- machine learning
- 인공지능
- dynamic programming
- dfs
- Mask Processing
- 백준
- 머신러닝
- image processing
- edge detection
- IN
- DP
- MinHeap
- 그래프 이론
- C++
- MySQL
- Reinforcement Learning
- 딥러닝
- TD
- 강화학습
- classification
- BFS
- Python
- Today
- Total
JINWOOJUNG
[ 영상 처리 ] Ch6. Frequency Domain 본문
본 영상 처리 개념과 기법들에 대한 공부를 진행하면서 배운 내용들을 중심으로 정리한 포스팅입니다.
책은 Computer Vision: Algorithms and Applications를 기반으로 공부하였습니다.
또한, 인하대학교 박인규 교수님의 디지털 영상 처리 과목을 기반으로 제작된 포스팅입니다.
Before This Episode
영상 처리를 Frequency Domain 즉, 주파수 도메인에서 생각 해 보자.
Fourier Transform
퓨리에 변환은 모든 주기 함수는 서로다른 주파수를 가지는 Sin, Cos의 합으로 나타낼 수 있다는 아이디어에서 시작되었다.
Unit Pulse도 일종의 주기함수인데, 오른쪽과 같이 서로 다른 sin, cos의 합으로 근사하여 표현될 수 있다. 이 과정에서 퓨리에 변환을 통해 매개변수는 $x$에서 $w$로 변하게 된다.
주파수 도메인의 $F(w)$는 Magnitude(크기) $A$와 Phase(각도) $\phi$로 구성된다. $F(w) = F(-w)$로 원점 대칭의 성질을 가지며, Inverse Fourier Transform 과정을 통해 원본 $f(x)$로 변환시킬 수 있다.
일반적으론 Magnitude $A$를 통해 처리하는데, Low Pass Filter, Band Filter 등 주파수 영역을 처리하는 과정에서도 Magnitude가 사용된다.
또한, 영상은 인접한 픽셀에 대하여 Intensity가 유사하기 때문에 부드럽게 변화한다. 따라서 저주파 성분이 많기 때문에 퓨리에 변환을 하면 $w_x, w_y$가 0인 부분에 많이 분포하게 된다. 따라서 일반적인 영상의 경우 Magnitude의 차이는 적다. 반면, 급격한 Intensity 변화를 보이는 Edge의 경우 고주파 성분에 속한다.
퓨리에 변환은 Continous한 도메인에서 위와 같이 정의된다. 하지만 영상의 경우 Discrete 하기 때문에 적분에서 시그마로 변환하여 아래와 같이 표현함을 알 수 있다.
왼쪽의 치타 이미지를 퓨리에 변환하여 Magnitude를 추출하면 중간의 사진과 같다. 이때, Magnitude는 중앙 픽셀을 기준으로 오른쪽이 $w_x$축, 위쪽이 $w_y$축인데, 일반적인 영상은 대부분 저주파이기 때문에 가운데에 많이 분포함을 확인할 수 있다. 즉 $w_x=w_y=0$의 주파수를 가지는 픽셀이 많이 분포하다는 의미이며, 이는 변화가 없는 Uniform 함을 의미한다. 이때, Log함수를 씌운 Magnitude인데, 이는 높은 값에 더 적은 값을 할당하여, 작은 변화값의 변화를 표현해 주기 위함이다. 만약 Log 함수를 씌우지 않았다면, 저주파 성분이 너무 많아 가운데만 흰색 부분이 존재하고 나머지는 모두 검은색이 될 것이다.
또한, 원점 외에 대각선 방향과 수직, 수평 방향으로 흰색이 꽤 존재함을 확인할 수 있다. 이는 해당 주파수를 갖는 시그널이 존재한다는 의미인데, 다음 예시에서 더 자세히 살펴보자.
주파수는 결국 해당 방향으로의 밝기 변화를 의미한다.
Magnitude를 분석 해 보자. 원점에는 일반적인 이미지이기 때문에 많은 저주파가 존재한다. 수평방향을 보자. $w_x$ 축에 흰색이 분포한다는 것은 해당 주파수를 가지는 부분이 많음을 의미하는데, 이는 x축 방향으로의 밝기 변화를 의미한다. 영상에서 살펴보면 수직 부분의 Edge가 얼룩말 무늬에 많이 분포함을 알 수 있다. 이는 x축 방향으로의 밝기 변화가 큰 부분이 많다는 의미이고, 따라서 Magnitude의 x축 부분에 흰색이 존재한다. 자연스럽게 y축이 많은 이유 역시 영상에서 얼룩말의 입, 코 부분에 수평적인 Edge가 많이 존재하기 때문임을 유추 가능하다.
45도 대각선에도 흰색이 부분이 보인다. 이 역시 얼룩말 무늬에서 나타나는 Edge에 의해 해당 방향으로의 고주파 성분이 존재하기 때문이다.
이번엔 얼룩말의 Phase와 치타의 Magnitude로 재구성하여 복원 해 보자.
$$A(cos\phi+isin\phi) \xrightarrow[]{Inverse} 이미지 복원$$
Inverse Fourier Transform으로 주파수 도메인에서 원래 영상을 복원 가능하다. 이를 아래와 같이 재구성 하면 어떤 영상이 복원될까?
$$A_{Cheetah}(cos\phi_{Zebra}+isin\phi _{Zebra} ) \xrightarrow[]{Inverse} 이미지 복원$$
결과는 얼룩말 처럼 보인다. 이는 Phase가 영상의 구조적인 정보를 더 많이 담고 있기 때문이다. 또한, 앞서 설명한 것 처럼 일반적인 영상의 경우 Magnitude는 크게 차이가 없다. 따라서 Phase는 유지하고, Magnitude만 Filtering하여 원본은 유지하고 고주파 성분을 제거하는 과정이 Gaussian이다.
치타의 Phase와 얼룩말의 Magnitude로 재구성하여 복원하면 위와 같이 치타의 형상을 함을 확인할 수 있다.
Man Made Scene
일반적인 이미지와 달리 왼쪽처럼 인위적인 이미지는 직선, 사각형 등 Edge가 많아 고주파 성분이 많이 존재한다.
Magnitude를 분석 해 보면 기둥의 수직 Edge는 $w_x$의 고주파를 형성한다. 또한, 바닥에 발생되는 수평 Edge는 $w_y$의 고주파를 형성하게 된다. 대각으로 존재하는 고주파는 다리에서 발생되는 대각 Edge에 의한 결과이다.
Change Spectrum
그렇다면 Frequency Domain에서 Specturm을 변경 해 보자. 왼쪽 상단은 Magnitude의 크기를 키운 결과 Edge 부분이 더 강하게 표현됨을 확인할 수 있다. 오른쪽 상단은 $w_x$를 모두 0으로 설정하였다. 즉, x축 방향으로의 밝기 변화를 없앴기 때문에, 다리의 수직 Edge가 모두 뭉게짐을 확인할 수 있다.
왼쪽 아래는 대각선 방향의 Magnitude를 모두 0으로 설정 함으로써 다리에서 발생되는 대각 Edge들이 모두 뭉게짐을 확인할 수 있다. 하지만 오른쪽 아래의 경우 각도가 큰 부분만 0으로 설정했기 때문에 다리와 하늘이 만나서 생성되는 큰 각도의 Edge는 뭉게졌지만, 작은 각도를 지니는 대각 Edge는 살아남은 것을 확인할 수 있다.
Low, High Pass Filter
위쪽은 저주파만 살리는 Low Pass Filter과 유사한 효과를 낼 것으로 예상된다. 즉, Gaussian Filtering 효과처럼 Smoothing 될 것으로 예상되는데 오른쪽 상단 결과를 보면 일치함을 확인할 수 있다. 아래는 반대로 High Pass Filter로 High Frequency인 Edge만 남게 됨을 확인할 수 있다.
Spatial Domain에서는 Gaussian Filter과 영상을 Convolution 하였을 때 위와 같은 결과를 보였었다. 하지만, Frequency Domain에서는 단순히 Magnitude를 0으로 만듬으로써 동일한 결과를 보이는데, 이는 Spatial Domain 에서의 Convolution 한 결과는 Frequency Domain에서 단순한 곱과 동일하기 때문이다.
$$F[g*h] = F[g]F[h]$$
즉, Convolution을 하고 퓨리에 변환을 한 것과, 퓨리에 변화을 하고 곱한 것은 같기 때문이다.
'2024 > Study' 카테고리의 다른 글
[ 영상 처리 ] Ch9. Local Feature Detection and Matching(1) (0) | 2024.05.27 |
---|---|
[ 영상 처리 ] Part5. OpenCV K-Means Clustering & Segmentation(C++) (0) | 2024.05.06 |
[ 영상 처리 ] Part3-2. OpenCV Diagonal Edge Detection & Image Pyramid(C++) (0) | 2024.04.15 |
[ 영상 처리 ] Part3-1. OpenCV Edge Detection(C++) (0) | 2024.04.15 |
[ 영상 처리 ] Ch5. Image Pyramid and Warping (0) | 2024.04.13 |