CS/영상처리 23

Low Pass, High Pass Frequency Domain Filters ILPF, GLPF, BLPF, BPF (저주파,고주파 주파수 도메인 필터)

앞쪽에서 필터링하는 과정을 보았다면 이번에는 어떤 필터들이 있는지 살펴 보도록 하겠습니다. 먼저 Low pass 필터부터 보겠습니다. 이유는 Low pass 필터를 알면 high pass는 자동으로 알 수 있습니다. 1. Ideal Lowpass Filters (ILPF) 보면 일정한 우리가 정한 주파수 전까지는 1이고 나머지는 다 0으로 만드는 필터입니다. 이 모양의 필터를 IDFT를 해주면 sinc function 처럼 되는데 문제는 저렇게 쭉 잔상이 이어집니다. 그렇기 때무노에 ILPF를 거치면 ringing artifact가 발생합니다. 2. Gaussian Lowpass Filters(GLPF) 3. Butterworth Lowpass Filters(BLPF) 이 필터가 가장 좋은 효과를 냅니다..

CS/영상처리 2022.06.02

[영상처리] How to Filter in Frequency Domain(주파수 영역에서 필터링하는 과정) [컴공과고씨]

이제 주파수 영역에서 필터링을 공부해 보겠습니다. 어떤 이미지에 주기성이 있는 노이즈가 섞여있다고 할 때 정말 유용합니다. 위 처럼 노이즈가 주기성이 있는 경우 주파수 도메인으로 변경해주면 노이즈가 보일 것입니다. 앞에서 배웠듯이 주기가 큰 (width) 다른 도메인은 반비례하게 나타나기 때문에 저렇게 나오게 되고 또한 크기는 같고 반대쪽에도 생기기 때문에 노이즈에 대한 것이 2개 찍혀있는 것을 볼 수 있습니다. 우리는 주파수를 분석해서 노이즈 주파수만 0인 필터를 만들고 두 개를 곱해주면 노이즈가 제거된 이미지를 볼 수 있을 것입니다. 하지만 이 방법은 많은 문제를 야기 합니다. 그래서 더 자세히 배워보도록 하겠습니다. 문제1. discrete 도메인에서 푸리에 변환을 하다 보면 오차가 발생하게 됩니다..

CS/영상처리 2022.06.02

[영상처리] 2-D DFT for Digital Images [컴공과고씨]

앞에 푸리에 변환에 대해서 깊게 배운 이유는 바로 주파수 도메인에서 이미지에 무언가를 조작하기 위해서 입니다. 그래서 이제는 주파수 도메인 필터링을 공부할 것인데 그전에 디지털 이미지에서의 2-D DFT에 대한 특성들을 이해하고 넘어가려고 합니다. 앞에 푸리에 변환을 잘 이해했다면 비슷비슷해서 이해하기 쉬울 것입니다. Periodity 2-D DFT의 공식은 1-D하고 거의 비슷하구요 중요한건 주기성을 가진다. 앞에서도 말했듯이 주기반복된 신호를 DFT를 한 것이기 때문에 항상 주기반복 된 결과에서 N - Point를 뽑아 낸 것이기 때문에 N마다 주기반복이 되고 있다고 생각해주어야합니다. 그래서 M과 N을 주기로 하고 있기 때문에 저런 주기성을 가진 특성을 가집니다. Magnitude & Phase 크..

CS/영상처리 2022.06.01

[푸리에 변환 이해하기 - 9] Discrete Fourier Transform (DFT) [컴공과고씨]

자 이제 푸리에 변환의 마지막 파트 입니다. 앞에 CTFT DTFT를 잘 따라오셨다면 이 부분도 쉽게 이해할 수 있습니다. 들어가기 앞서서 전체적으로 정리를 한번 하고 가겠습니다. 자 보시면 연속된 신호에서 주파수 도메인으로 -> CTFT 연속된 신호에서 sampling을 해주고 DTFT를 해주면 주파수는 CTFT의 값에서 주기반복을 시켜주는 것. 문제는 우리는 컴퓨터에서 어떤 작업을 하기 위해서는 연속해서는 안됩니다. 그래서 DTFT의 결과 값을 sampling을 해주어야합니다. 그러면 time-domain에서는 주기 반복이 일어나고 우리는 반복된 주기가 필요한게 아니라 한 주기만 있으면 되기 때문에 주기반복되는 time - domain 신호에서 한 주기만 뽑아낸 주파수 도메인에서의 값이 필요하게 됩니..

CS/영상처리 2022.05.30

[푸리에 변환 이해하기 - 8] Discrete Time Fourier Transform (DTFT) [컴공과고씨]

자 앞에서 배웠듯 x(t) = Acos(ωt + φ) x[n] = x(nTs) = Acos(ωnTs+φ) = Acos(ŵn + φ) 이렇게 변형 할 수 있다. 그렇다면 f/fs을 f햇으로 정의를 해주면 위와 같은 범위를 얻을 수 있다. 즉, 샘플링 된 신호의 주파수 도메인에서의 주기는 2π를 넘지 않는 것을 볼 수 있다. 그래서 CTFT 와 DTFT를 비교해보면 이런식입니다. DTFT에서의 x[n]을 구할 때 적분 범위를 보면 -π ~ π 까지인 이유는 위에서 설명해드렸습니다. 또한 주파수 도메인으로 바꿀때 시그마를 취하고 있는데 이유는 이산신호들의 합이기 때문에 당연히 적분이 아닌 시그마를 써주고 있습니다. 근데 여기서 이제 우리가 샘플링 주파수로 나누어 주면 f^ 도메인으로 바꾸어주면 주기가 1으로 ..

CS/영상처리 2022.05.29

[푸리에 변환 이해하기 - 7] Sampling & Reconstruction & shannon Sampling Theorem [컴공과고씨]

C-to-D conversion : sampling (연속신호 -> 이산신호) D-to-C conversion : Reconstruction(interpolation) (이산신호 -> 연속신호) Uniform Sampling 기본 적으로 samping은 연속 신호에 일정한 간격마다 값을 매겨주는 것입니다. 자 그럼 n을 sampling index라고 하면 x[n] = x(nTs) -∞ < n < ∞ 로 나타낼 수 있습니다. 그리고 여기서 sampling rate는 fs = 1/Ts samples/s 로 나타 낼 수 있겠죠? Ideal Reconstruction(D to C) 우리는 이제 이산신호를 연속신호로 바꾸기 위해서는 그 사이 값을 Interpolation(보간)을 해주어야 합니다. 그 식은 바로 ..

CS/영상처리 2022.05.28

[푸리에 변환 이해하기 - 6] Continuous Fourier Transform (CTFT) [컴공과고씨]

이제 드디어 푸리에 변환에 대해 알아보겠습니다. Continuous Fourier Transform 앞에 continuous이기 때문에 연속된 신호를 frequency domain으로 바꾸어 주는 것을 말합니다. 여기서 앞의 푸리에 급수와 다른 것은 비주기성을 가진 신호를 sinusoids들의 적분한 것으로 나타낸다는 것입니다. 자 그럼 비주기성 신호를 어떻게 만들면 될까요? 원래 신호의 주기를 무한대로 보내는 것입니다. 이것을 그림으로 표현하자면 위와 같은 x(t) 는 T0라는 주기를 가진다고 했을 때 이 T0를 무한대로 보내면 이 신호는 비주기성 함수가 됩니다. 자 그럼 이것을 CTFT를 해주면 어떻게 될까요? 푸리에 급수에서 보았듯이 원래는 discrete하게 신호가 나와야 합니다. 이때 각 ak의..

CS/영상처리 2022.05.28

[푸리에 변환 이해하기 - 5] Continuous-Time Fourier Series(CTFS 푸리에 급수)

이제 본격적으로 푸리에 변환에 대해서 다루겠습니다. 푸리에 변환는 기본적으로 우리가 time domain에서 다루던 신호를 frequency domain으로 변환하는 것 입니다. 이 말은 우리는 어떤 주파수 성분이 있는지 분석할 수 있고 이것을 토대로 높은 주파수는 뺄 수도 낮은 주파수를 빼거나 등 주파수 성분들을 조작할 수 있게 됩니다. 앞에서 말했듯이 자연 신호는 sinusoid들의 합으로 나타낼 수 있습니다. 또한 이 sinusoids들은 기본 주파수의 배수로 만들 수 있습니다. Continuous-Time Fourier Series 어떤 주기 함수든 우리는 harmonic frequencise(기본 주파수의 배수)의 sinusoids의 합으로 표현이 가능하다는 것이다. *기본 주파수의 배수 : w..

CS/영상처리 2022.05.26

[푸리에 변환 이해하기 - 4] frequency spectrum (주파수 스펙트럼)

자 이제 frequency spectrum를 이해하기 위해서는 당연히 전 포스트에서의 오일러 공식을 알고 있어야합니다. 이전글(오일러 공식) -> https://hagisilecoding.tistory.com/89 sinusoid x(t) = Acos(ωt + Φ) 위 식을 이제 어떻게? 바로 오일러 공식으로 표현을 해보겠습니다. Z = ej(ωt + Φ) Z* = e-j(ωt + Φ) 코사인만 구하기 위해서는 (Z+Z*)/2를 해주면 됩니다. 일단 X(w) 라는 것은 w에 대한 식을 가르키는 것입니다. X(w)는 w에 대한 complex amplitude X(-w)는 -w에 대한 complex amplitude 입니다. 그래서 우리는 sinusoid를 두 개의 complex exponentials로 나..

CS/영상처리 2022.05.25

[푸리에 변환 이해하기 - 3] Euler's Identity (오일러 공식)

오일러 공식은 세상에서 가장 아름다운 공식이라고 불리는 공식입니다. 이것에 대한 수학적 증명은 유튜브에서 검색하여서 동영상으로 보는 것이 더욱 이해하기 쉽습니다. 여기서는 오일러 공식이 어떤 의미를 가지는지에 대해서 또 푸리에 변환을 이해하기 위해서 필요한 지식을 포스트 할 것입니다. 오일러 공식 ejθ = cos(θ) + jsin(θ) -> 이것은 꼭 익숙해 지도록 해야합니다. 위 그림을 보면 θ가 의미하는 것은 각도이고 크기는 1로 고정이 되어있습니다. 앞 포스트에서 이해했듯 Real part(실수부) = (Z+Z*)/2 Imaginary part(허수부) = (Z-Z*)/2 이기 때문에 Z = ejθ -> (ejθ + e-jθ)/2 = cos(θ) (실수부) Z = ejθ -> (ejθ - e-jθ..

CS/영상처리 2022.05.25