관리 메뉴

ComputerVision Jack

[Matlab - Gaussian Filter] 본문

Image Processing/Matlab ImageProcessing

[Matlab - Gaussian Filter]

JackYoon 2020. 7. 24. 16:25
반응형

이번엔 제 중간고사 과제였기도 한 Matlab을 이용하여 Gaussian Filter를 제작하려고 합니다.

 

Gaussian Filter

가우시안 필터링은 필터링 대상 픽셀 근처에 가중치를 크게 준다고 생각하면 될거 같습니다. 즉 가중 평균(weighted average)을 구하는 것과 같습니다.

영상의 기본적인 잡음을 제거할 땐 blur filter를 사용합니다. 하지만 blur 필터의 경우 blur와 관련된 파라미터를 크게주면 영상 전체가 뿌여지고 object가 가진 경계 또한 모호하게 변하게 됩니다. 따라서 Gaussian filter를 사용하여 영상에 가중치를 주게됩니다. 그러면 가중치가 높은 부분은 건들지 않고 낮은 부분에 대해서 영상이 전체적으로 블러가 적용됩니다.

 

오늘은 특별하게 가우시안 필터를 구현해보려고 합니다. 원래는 영상에 2차원 가우시안 분포를 적용하여 연산을 할 수 있지만 1차원 가우시안 분포를 두번 적용하여(행방향, 열방향) 2차원 가우시안 분포를 적용할 수 있습니다. 다만

 

  • 마스크에 의한 영상 필터링은 마스크 크기가 커짐에 따라 연산량도 증가한다.
  • 큰 표준 편차 값(sigma)를 사용하면 마스크 크기도 커지기 때문에 연산 속도 측면에서 부담이 될 수 있다.

이 두부분만 고려해주세요.

 

먼저 Gaussian 1D Filtering에 적용할 커널을 제작하겠습니다.

 

가우시안 커널 함수

커널을 제작하였으면 이를 토대로 가우시안 필터 함수를 만들면 됩니다.

가우시안 필터링

for문 구조가 2번 보인 것은 1D로 구현했기 때문입니다. 즉 행방향으로 연산을 한번 진행하고, buff에 그 값을 담아 놓습니다. 그 다음 열 방향으로 다시 연산을 진행합니다.

가우시안 필터링

결과를 출력하면 가우시안 필터링이 적용된 것을 알 수 있습니다. 저 같은 경우는 sigma 값을 7로 높게 주어 영상이 전체적으로 블러가 심하게 되었습니다. 보통 3정도로 sigma 값을 설정하는 것 같습니다.

반응형

'Image Processing > Matlab ImageProcessing' 카테고리의 다른 글

[Matlab - Region Labeling]  (0) 2020.07.26
[Matlab - Edge Filter]  (0) 2020.07.24
[Matlab - MeanFilter function]  (0) 2020.07.21
[Matlab - AlphaBlending]  (0) 2020.07.21
[Matlab - Point Operation Threshold]  (0) 2020.07.16
Comments