Main Content

nlfilter

일반적인 슬라이딩 이웃 연산

설명

예제

B = nlfilter(A,[m n],fun)은 회색조 영상 A의 각 m×n 슬라이딩 블록에 함수 fun을 적용합니다.

B = nlfilter(A,'indexed',___)A의 클래스가 uint8형, uint16형 또는 logical형이면 0으로 채우고 그 외의 경우에는 1로 채워 A를 인덱스 영상으로 처리합니다.

참고

nlfilter는 큰 영상을 처리하는 데 시간이 오래 걸릴 수 있습니다. 경우에 따라 colfilt 함수가 동일한 연산을 훨씬 더 빠르게 수행할 수도 있습니다.

예제

모두 축소

이 예제에서는 nlfilter를 사용하여 영상에 중앙값 필터를 적용하는 방법을 보여줍니다. 이 예제의 결과는 3×3 이웃을 사용하여 medfilt2를 호출한 결과와 동일합니다.

영상을 작업 공간으로 읽어 들입니다.

A = imread('cameraman.tif'); 

영상을 double형으로 변환합니다.

A = im2double(A);

영상에 적용할 함수, 즉 중앙값 필터를 생성합니다.

fun = @(x) median(x(:));

필터를 영상에 적용합니다.

B = nlfilter(A,[3 3],fun); 

원본 영상과 필터링된 영상을 나란히 표시합니다.

montage({A,B})
title('Original Image (Left) and Median Filtered Image (Right)')

Figure contains an axes object. The axes object with title Original Image (Left) and Median Filtered Image (Right) contains an object of type image.

입력 인수

모두 축소

필터링할 영상으로, fun에 지원되는 임의의 클래스의 숫자형 배열로 지정됩니다. A가 회색조 영상인 경우 숫자형 또는 logical형일 수 있습니다. A가 인덱스 영상인 경우 logical형, uint8형, uint16형, single형 또는 double형일 수 있습니다.

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

블록 크기로, 양의 정수로 구성된 요소를 2개 가진 벡터로 지정됩니다. m은 블록의 행 개수이고 n은 열 개수입니다.

예: B = nlfilter(A,[3 3],fun);

데이터형: single | double | logical

함수 핸들로, 핸들로 지정됩니다. 함수는 m×n 행렬을 입력값으로 받아서 스칼라 결과를 반환합니다.

c = fun(x)

cm×n 블록 x의 중앙 픽셀에 대한 출력값입니다. nlfilterA의 픽셀마다 fun을 호출합니다. 필요한 경우 nlfilterm×n 블록 모서리를 0으로 채웁니다.

데이터형: function_handle

출력 인수

모두 축소

필터링된 영상으로, 숫자형 배열로 반환됩니다. B의 클래스는 fun의 출력값 클래스에 따라 달라집니다.

버전 내역

R2006a 이전에 개발됨