이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

medfilt2

2차원 중앙값 필터 적용

설명

예제

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

선택적으로 GPU를 사용하여 정규화된 상호상관 연산을 계산할 수 있습니다(Parallel Computing Toolbox™가 필요함).

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

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

이 구문은 GPU에서 지원되지 않습니다.

예제

모두 축소

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

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

점잡음을 추가합니다.

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

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

K = medfilt2(J);

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

imshowpair(J,K,'montage')

입력 인수

모두 축소

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

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

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

GPU를 사용하여 중앙값 필터링을 수행할 경우 이웃은 변의 길이가 3과 15 사이의 홀수인 정사각형이어야 합니다.

데이터형: 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형 배열에서 다음 2x2 이웃의 실제 중앙값은 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 이전에 개발됨