[OpenCV] 잡음 제거 필터

zzwon1212·2023년 10월 30일
0

OpenCV

목록 보기
15/16
post-thumbnail

1. 영상의 잡음

  • 영상의 픽셀값에 추가되는 원치 않는 형태의 신호
  • 카메라에서 광학 신호를 전기적 신호로 변환하는 과정(센서)에서 잡음이 추가될 수 있다.

1.1. 수식

f(x,y)=s(x,y)+n(x,y)f:획득영상,s:원본신호,n:잡음f(x, y) = s(x, y) + n(x, y) \\ \, \\ f: 획득 영상,\,\, s: 원본신호,\,\, n: 잡음

1.2. 종류

  • 소금&후추 잡음(Salt&Pepper noise)
  • 가우시안 잡음(Gaussian noise)

1.3. OpenCV 함수

  • randn(): 정규분포 난수 발생(가우시안 잡음 생성)
    void randn(InputOutputArray dst, InputArray mean, InputArray stddev);
    • 생성된 난수는 dst의 타입에 맞게 자동으로 변환됨
    • dstuchar 자료형을 사용하면 0보다 작은 난수는 모두 0으로 포화 연산된다. 만약 ±를 모두 가지는 난수를 생성하고자 한다면, 부호가 있는 정수 또는 실수형 행렬로 지정해야 한다.
    • 균일분포를 사용하고 싶다면 randu() 함수를 사용

1.4. 프로파일을 이용한 잡음 분석

  • 프로파일(profile)
    • 영상에서 특정 경로(라인 또는 곡선)상에 있는 픽셀의 밝기값을 그래프 형태로 나타낸 것
    • Line profile, Intensity profile

2. 가우시안 필터를 이용한 잡음 제거

  • 좌측은 원본, 우측은 σ=2\sigma=2인 가우시안 블러 결과이다. 트랙바를 이용해 프로파일을 확인할 수 있다.
    • 가우시안 블러를 이용해서 노이즈를 제거할 때는 영상의 디테일을 분석하여 특징에 맞는 적절한 σ\sigma값을 설정해야 한다.
    • 평균값 필터 또는 가우시안 필터는 에지 부근에서도 픽셀값을 평탄하게 만드는 단점이 있다.

3. 양방향 필터(bilateral filter)

  • 에지 보전 잡음 제거 필터(edge-preserving noise removal filter)의 하나
  • 기준 픽셀과 이웃 픽셀과의 거리, 그리고 픽셀값의 차이를 함께 고려하여 블러링 정도를 조절한다.

3.1. 수식

BF[I]p=1WpqSGσs(pq)Gσr(IpIq)IqBF[I]_p = {1 \over W_p} \sum_{q \in S} G_{\sigma_s} (\lVert p - q \rVert) G_{\sigma_r} (\lvert I_p - I_q \rvert) I_q
  • pp, qq: 점 p와 점 q의 픽셀 좌표(벡터)
  • IpI_p, IqI_q: 점 p와 점 q에서의 픽셀값
  • WpW_p: 필터 커널 합이 1이 되도록 만드는 정규화 상수
  • Gσs(pq)G_{\sigma_s} (\lVert p - q \rVert)는 기존 가우시안 필터의 개념, Gσr(IpIq)G_{\sigma_r} (\lvert I_p - I_q \rvert)는 새로운 개념

3.2. 가우시안 필터와 비교

  • 가우시안 필터
  • 양방향 필터 https://www.csie.ntu.edu.tw/~cyy/courses/vfx/11spring/lectures/
  • 기준 픽셀과 이웃 픽셀의 값 차이에 따라 커널이 달라진다. e.g. σ=10\sigma=10인 경우 픽셀값이 30 이상 차이나게 되면 그 이웃 픽셀은 블러링에 거의 영향을 주지 않게 된다.
  • 각 픽셀마다 서로 다른 모양의 커널이 적용되기 때문에 가우시안 필터에 비해 연산 속도가 상당히 느리다.

3.3. OpenCV 함수

  • bilateralFilter(): 양방향 필터링
    void bilateralFilter(InputArray src, OutputArray dst, int d,
                         double sigmaColor, double sigmaSpace, int borderType = BORDER_DEFAULT);
  • d: 필터링에 사용될 이웃 픽셀의 거리(지름). 음수(-1)를 입력할 경우 sigmaSpace값에 의해 자동으로 결정된다.
  • sigmaColor: 색 공간에서 필터의 표준 편차
  • sigmaSpace: 좌표 공간에서 필터의 표준 편차

3.4. 적용 결과

  • 좌측이 가우시안 필터 적용 결과, 우측이 양방향 필터 적용 결과이다. 둘 모두 노이즈를 일부 제거했지만, 가우시안 필터는 윤곽선까지 뭉개진 반면에 양방향 필터는 윤관석을 잘 보전하고 있다.

📙강의 - 강사 황선규

profile
JUST DO IT.

0개의 댓글