관리 메뉴

ComputerVision Jack

[Matlab - MeanFilter function] 본문

Image Processing/Matlab ImageProcessing

[Matlab - MeanFilter function]

JackYoon 2020. 7. 21. 14:41
반응형

Filter

영상에 대해서 Filtering을 진행한다는 것은 해당 영상에 대해서 내가 원하는 목적에 따라 마스크 연산을 진행한다고 생각하시면 됩니다. 하지만 Filtering을 진행할 땐 외각 부분의 픽셀값 손실에 대해서 한번은 생각해야 합니다. 

그렇게 등장한 것이 padding입니다.

 

MeanFilter

오늘은 MeanFilter를 lena 이미지에 적용해 보려고 합니다.  MeanFilter는 평균값 필터입니다. 예를 들어 3 x 3 필터를 사용한다고 한다면 주변 픽셀 값을 읽어 평균 값을 적용하여 중앙 값을 채택하여 적용합니다. 평균값을 적용하기 때문에 영상이 전체적으로 블러가 진행되는 것을 확인할 수 있습니다. 이번엔 함수를 만들어서 적용해보겠습니다.

 

meanFiltering 함수

Matlab의 함수의 시작은 function[리턴값 ] = 함수 이름(인자1, 인자2) ---- end 구성으로 정의될 수 있습니다.

저 같은 경우는 리턴값은 outputImage로 반환할 것이며 인자로는 inputimage와 filterSize를 가져오는 MeanFilter 함수를 구성하였습니다.

 

우선 pad_size(padding size)를 정의해 줍니다. 각 filterSize에 알맞게 손실될 부분을 고려하여 사이즈를 설정하였습니다. 3일경우 손실 크기는 1이되며 5일경우 2가 되기 때문에 2로 나누어 주었습니다.

 

그 다음 이렇게 padding으로 확장한 부분에 픽셀 값을 채워 넣어야합니다. 패딩된 이미지를 채우는 방법에는 다양한 방법이 존재합니다. 반대편 값을 적용하거나, 가장자리 값을 한번더 정의하거나 등.. 많습니다.

 

그렇게 이중 포문을 2번 돌게 됩니다. 첫번째의 큰 2중 for문은 padding이 적용된 이미지를 반복하는 반복문이며 안의 for문은 padding된 이미지에 filterSize만큼 반복하는 for문입니다. 안의 반복문을 확인하면 3 x 3 필터이기 때문에 for문을 돌고 그 값을 s에 누적합니다. 그렇게 필터링 for문이 끝난 후, 필터의 사이즈 9만큼 나눠줍니다.

 

함수 실행
MeanFilter

함수를 실행한 후 결과화면을 통해 영상이 전체적으로 blur가 된 것을 확인 할 수 있습니다.

MedianFilter

다음 알아볼 Filtering은 Median Filter입니다. 우선은 영상의 잡음을 제거하기 위한 필터링만 하게 되었네요.

미디언 필터링은 영상의 소금 후추 잡음에 탁월한 필터링입니다.

예를 들어 3 x 3 필터링을 적용한다면 9개의 배열을 만들어 각 픽셀 값을 읽어와 Sorting 합니다. 그다음 정 중앙에 위치한 값으로 픽셀값을 채워 넣는

필터링입니다.

 

MedianFilter

우선 패딩 과정은 필터링 적용에 있어서 필수입니다. 여기서 특이한 점은 Pixels 배열을 만든 것입니다. 나중에 이 배열에 값이 들어가게 되고, 그 값을 정렬하여 중간값을 사용할 것입니다.  안쪽의 for문을 이용하여 그 값을 하나씩 index를 추가하며 pixel에 넣습니다. 그리고 안쪽의 for문이 완료되면 sort( ) 함수를 이용하여 sort한뒤 median 값을 취합니다.

 

함수 실행 부분
Median Filtering 적용

함수를 실행하면 왼쪽 부분은 영상에 소금 후추 잡음이 섞여 있는 경우 입니다. 검정색 흰색 회색 잡음이 섞여 있습니다. 하지만 오른쪽 부분을 보시면 이러한 잡음이 해결된 것을 확인할 수 있습니다.

반응형

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

[Matlab - Edge Filter]  (0) 2020.07.24
[Matlab - Gaussian Filter]  (0) 2020.07.24
[Matlab - AlphaBlending]  (0) 2020.07.21
[Matlab - Point Operation Threshold]  (0) 2020.07.16
[Matlab - Point Operation]  (0) 2020.07.16
Comments