Main Content

medfilt2

2차원 중앙값 필터 적용

설명

예제

J = medfilt2(I)는 2차원에서 영상 I의 중앙값 필터링을 수행합니다. 각 출력 픽셀은 입력 영상에서 대응하는 픽셀의 3×3 이웃에 있는 중앙값을 포함합니다.

J = medfilt2(I,[m n])은 중앙값 필터링을 수행합니다. 여기서 각 출력 픽셀은 입력 영상의 해당 픽셀 주변에 있는 m×n 이웃에서의 중앙값을 포함합니다.

J = medfilt2(___,padopt)medfilt2가 영상의 경계를 채우는 방법을 제어합니다.

예제

모두 축소

영상을 작업 공간으로 읽어 들인 후 표시합니다.

I = imread('eight.tif');
figure, imshow(I)

Figure contains an axes object. The axes object contains an object of type image.

점잡음을 추가합니다.

J = imnoise(I,'salt & pepper',0.02);

중앙값 필터를 사용하여 잡음을 필터링합니다.

K = medfilt2(J);

결과를 나란히 표시합니다.

imshowpair(J,K,'montage')

Figure contains an axes object. The axes object contains an object of type image.

입력 인수

모두 축소

입력 영상으로, 2차원 회색조 영상 또는 이진 영상으로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

이웃 크기로, 양의 정수로 구성되며 요소를 2개 가진 벡터로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

채우기 옵션으로, 다음 값 중 하나로 지정됩니다.

설명
'zeros'(디폴트 값)영상을 0으로 채웁니다.
'symmetric'영상을 경계에서 대칭적으로 확장합니다.
'indexed'I의 클래스가 double형이면 영상을 1로 채우고, double형이 아니면 0으로 채웁니다.

데이터형: char | string

출력 인수

모두 축소

출력 영상으로, 입력 영상 I와 같은 클래스의 숫자형 행렬로 반환됩니다.

  • 중앙값 필터링은 "점잡음(Salt and Pepper Noise)"을 줄이기 위해, 영상 처리에서 흔히 사용하는 비선형 연산입니다. 목표가 잡음을 줄이는 동시에 경계를 유지하는 것이라면 중앙값 필터가 컨벌루션보다 더 효과적입니다. 성능 고려 사항에 대한 내용은 ordfilt2를 참조하십시오.

  • 입력 영상 I가 정수형 클래스이면 출력값은 모두 정수로 반환됩니다. 이웃의 픽셀 수(m*n)가 짝수이면 중앙값 중 일부는 정수가 아닐 수 있습니다. 이러한 경우, 소수부는 무시됩니다. 논리형 입력값도 유사하게 처리됩니다. 예를 들어, uint8형 배열에서 다음 2×2 이웃의 실제 중앙값은 4.5입니다. 그러나 medfilt2는 소수부를 버리고 4를 반환합니다.

    1 5
    4 8
  • padopt'zeros' 또는 'indexed'로 지정하면 채우기로 인해 영상 경계 근처의 중앙값이 왜곡될 수 있습니다. 경계의 이웃 너비의 1/2([m n]/2) 범위에 있는 픽셀은 왜곡된 것처럼 보일 수 있습니다.

알고리즘

CPU에서 medfilt2ordfilt2를 사용하여 필터링을 수행합니다.

참고 문헌

[1] Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, pp. 469-476.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

| | |