책장/Computer Vision

[비전3] filters

TERAJOO 2021. 4. 20. 21:04

작은 센서를 만들 때, 저녁이라는 시간 때문에 생기는 노이즈와 같은 문제가 생길 수 있다. 즉 이러한 경우 적당한 필터링을 통해 노이즈를 제거해주어야 한다. 이럴 때 쓰이는 필터란 무엇일까에 대해 알아보자.

 


1. Image?

Intensity values (집약정도) 를 사용해 매트릭스 혹은 격자의 형태 로 표현한다.

즉, 이미지는 정수값의 행렬로 표현된다~ 정도만 알아두자.

  • Images as functions : r,g,b 총 세 개의 함수가 내장되어있는 거라고 볼 수 있다.

 


2. Image 특성

이미지는 제한된 수만큼 픽셀을 보유한다.

  • 픽셀 값→ grayscale은 0~255 
  • → 컬러의 RGB 같은 경우, 각 채널 당 0~255 까지 각 1바이트로 총 3바이트 표현 가능하다.

3. Image 변환

수학적인 함수를 이용해서 operator 를 적용하면, 이미지 변환을 얻을 수 있다.

대표적인 operator 로 convolution 이 있으며 거의 노이즈 제거에 이용 된다.

 

 


4. Why Noise?

이미지 획득하는 과정에서 생길 수도 있고, 카메라 자체의 문제로 생길 수도 있고, 인화 단계의 문제에서 생길 수도 있다.

  • Noise type
    1. Salt and pepper noise (백색 잡음) : pixel 단위로 어긋난 형태의 노이즈
    2. Impulse noise : pixel 단위로 어긋난 형태의 노이즈
    3. Gaussian noise : 랜덤 값이 연속적으로 증감한 형태의 노이즈
      정규분포를 가지는 잡음을 이야기한다. 쉽게 말해 일반적인 잡음이며 어느 정도 랜덤하게 자연계에서 쉽게 볼 수 있는 분포를 말한다.이 노이즈를 큰 표준편차의 Gaussian filtering을 해서 해결할 수는 있지만 이미지도 같이 blur 처리 되기도 한다는 점 알아두자. (뒤에서 도움 됨)
      시그마에 따라 노이즈의 정도가 달라지게 된다.

5. 노이즈 제거

가장 그럴싸한 방법은 제일 근처의 값들이 비슷한 pixel 값을 가질 가능성이 크므로, 주변 값을 보는 방법이다.

즉, 현재 픽셀을 주변 픽셀들과 평균을 내서 대치를 하게 되면 조금 더 원래 값에 가까이 가지 않을까? 라는 접근 방법에서 시작된 방법이다. (Mean Filtering)

→ Mean filtering 을 적용하면 노이즈들이 제거되고, 디테일 부분을 블러링으로 사라진다.


6. Filtering Type

: 일단 필터링이란 새로운 이미지를 만드는 것을 이야기 한다.

영상에서의 filtering이란 원하는 성분을 추출하는 과정이라 말할 수 있다.

영상 처리에서 filtering은 크게 spatial filteringfrequency domain filtering이 있다.

spatial filtering은 영상을 그대로 이용하여 원하는 성분을 추출하는 것이며, frequency domain filtering은 영상을 주파수 공간으로 변환하고 주파수 공간에서 처리하는 것이다.

filter 의 종류로는 다음과 같은 것들이 있다.

  • Correlation filter
  • Gaussian filter
  • Averaging filter
  • Linear filter

7. Linear filtering

Correlation, Convolution은 모두 Linear filtering 방법의 종류다. 즉, 영상과 kernel을 어떠한 방식으로 filtering할 것인가 하는 방법들이다. 이 section에서 예시로 사용될 kernel은 3x3으로 아래 그림과 같다.

  • Correlation
    먼저 영상 I의 임의의 점 I(x,y)에 대해 kernel과 correlation 연산을 통해 결과를 생성하는 것을 수식으로 표현하면,
    이러한 과정을 그림으로 쉽게 표현해보면,여기서 "가장 최 상단의 pixel들은 중심점으로 두지 않나?" 라는 의문점이 생길 수 있다. 가장 최 상단(최 하단, 좌측, 우측)에 해당하는 pixel을 filtering하기 위해서는 kernel의 상단에 matching되는 값들이 필요하다.따라서, 검은색 테두리나, 영상의 크기가 작아지는 것을 방지하기 위해 흔히 padding이라는 것을 사용한다. padding은 원 영상 테두리에 특정 값을 채워 넣음으로써 filtering된 영상의 크기를 원 영상의 크기와 동일하게 유지할 수 도 있으며 검은색 테두리를 방지할 수 도 있다. (흔히 사용되는 값은 0으로, zero-padding으로 불린다.)

 

 

    허나 다음과 같이 MATLAB의 옵션만 바꿔주어도 끝부분을 처리해줄 수 있다.

    만약, 최상단(혹은 최하단, 가장 좌측, 우측에 존재하는 pixel들)의 pixel들을 filtering에 포함하지 않는다면, filtering된      결과 영상의 크기는 원래의 영상보다 작아지거나, 주변이 0으로 채워져 원 영상의 크기를 유지한다고 해도 검은색        테두리가 생기는 결과를 받을 수 있다.

    즉, 영상 I의 점 x,y와 kernel의 중심점(Anchor)을 matching하고 주변의 pixel들을 각각 곱중심점에 모두 합      산 하는 연산이다. 해당 점에 대해 연산이 끝났다면 한 칸 이동 (대부분 오른쪽으로 한칸 이동, 가장 우측에 도달했다      면 다시 한 칸 아래 좌측 처음으로 옮겨 영상의 마지막 우측 하단 pixel에 도달할 때 까지 반복한다.)하여 이 filtering      을 반복한다

  • Convolution
    사실, convolution과 correlation 연산은 영상 처리에서 혼용되어 부르기도 한다. 하지만, 그 쓰임새는 다르다. correlation 연산이 kernel과 matching되는 pixel들의 곱셈, 그리고 곱셈 결과들의 총 합이다.
    1. Shift invariance 때문에 → 쉬프트가 된다 해도, convolution 에는 영향이 없다.
    1. linearity 때문에 → 인풋이 변하게 될 때 우리가 예상할 수 있는 방향으로 간다.
  • Convolution이 중요한 이유 : 만약 correlation 연산으로 convolution 연산을 한 것과 동일한 효과를 보려면 convolution kernel로 correlation을 진행하면 된다. correlation은 유사성을 check하기에 적합하며 convolution은 smoothing과 같은 용도로 사용한다고 한다.

 

이러한 filtering 이라는 게 왜 필요한가?

  1. 새로운 유용한 정보를 얻기 위해서 : edge나 contours와 같은 정보를 뽑아내기 위해 사용하기도 한다.
  1. 이미지 enhance 를 위해 : 노이즈 제거를 위한 blurring, enhance(sharp) image를 위해 사용된다.
  2. convolutional nerual networks 의 key operator를 위해 사용하기도 한다.

 


8. Mean filtering

Mean filtering은 주변의 평균으로 pixel 값을 대체하는 방식의 필터링이다. Gaussian 과는 다르게 모든 pixel 들에 같은 가중치를 주어 평균치를 내는 방법이

 

 


9. Gaussian filtering

주변의 픽셀들이 멀리있는 픽셀보다 관련성이 높다, 가까운 픽셀에 더 많은 가중치!

보통 이 Gaussian filter 를 이미지의 edge 와 같은 high-frequency component 를 줄이기 위해 사용하여 low-pass filter 라고도 부른다.

또한 보통 가우시안 필터링을 할 때 다음 그림과 같이 행렬을 쪼개 계산을 해준다.

이런식으로 분리하면 2차원의 행렬을 1차원 두개로 나누게 되어 시간복잡도를 매우 줄일 수 있다.

즉, 결합법칙과 같은 행렬 연산 법칙에 의해 한 차원이 줄어들게 되는 효과를 얻을 수 있다는 것을 알 수 있다.

 


10. Median Filter vs Mean Filter

두 개의 비슷한 필터를 잠깐 비교해보자.

그림을 봤을 때 Median 의 경우 하나의 pixel 값만 보정되었지만 Mean 은 근접한 놈의 평균으로 나타내기 때문에 전체적으로 값이 다 바뀌게 된다.

 

Gaussian vs median filtering

그러면 이 두 개를 비교해보자.

확실히 Salt & pepper noise 는 Median 이 더 성능 좋게 노이즈를 제거해준다. 허나 filter 사이즈가 크면 클 수록 이미지의 해상도 및 데이터가 이상해질 수 있따.

 


11. Sharpening

Sharpening 이란 edge 를 강조해주는 듯한 기법이다.

어떤 필터를 써야 sharpening 효과를 가질 수 있을까?

→ 블러링 이미지의 경우에는 오리지널에서 디테일이 없다는 특징을 이용한다.

수식은 다음과 같다.

 


12. Sharpening revisited

어떻게 Sharpening 을 계산하는 지를 알아두자. 또한 Gaussian 과 비슷한 Laplacian 에 대해서도 알아두자. 다음 그림처럼 계산 후 계수 식을 묶어 처리하는 방법이다.

 


참고링크