Main Content

imgaborfilt

2차원 영상에 가버 필터 또는 필터 뱅크 적용

설명

예제

[mag,phase] = imgaborfilt(A,wavelength,orientation)은 입력 회색조 영상 A에 대해 가버 필터의 크기 및 위상 응답을 계산합니다. wavelength는 정현파 반송파의 파장(단위: 픽셀/주기)을 설명합니다. orientation은 필터의 방향(단위: 도)입니다.

[mag,phase] = imgaborfilt(A,wavelength,orientation,Name,Value)는 필터링의 다양한 특성을 제어하기 위해 이름-값 인수를 사용하여 단일 가버 필터를 적용합니다.

예제

[mag,phase] = imgaborfilt(A,gaborbank)는 가버 필터 뱅크 gaborbank를 입력 영상 A에 적용합니다.

예제

모두 축소

영상을 작업 공간으로 읽어 들이고 영상을 회색조 영상으로 변환합니다.

I = imread('board.tif');
I = im2gray(I);

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

wavelength = 4;
orientation = 90;
[mag,phase] = imgaborfilt(I,wavelength,orientation);

원래 영상과 가버 필터로 계산한 크기 및 위상 응답의 플롯을 함께 표시합니다.

tiledlayout(1,3)
nexttile
imshow(I)
title('Original Image')
nexttile
imshow(mag,[])
title('Gabor Magnitude')
nexttile
imshow(phase,[])
title('Gabor Phase')

Figure contains 3 axes objects. Axes object 1 with title Original Image contains an object of type image. Axes object 2 with title Gabor Magnitude contains an object of type image. Axes object 3 with title Gabor Phase contains an object of type image.

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

I = imread('cameraman.tif');

필터 뱅크라고 하는 가버 필터의 배열을 만듭니다. 이 필터 뱅크에는 2개의 방향 및 2개의 파장이 있습니다.

gaborArray = gabor([4 8],[0 90]);

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

gaborMag = imgaborfilt(I,gaborArray);

결과를 표시합니다. 이 그림은 각 필터에 대한 크기 응답을 보여줍니다.

figure
subplot(2,2,1);
for p = 1:4
    subplot(2,2,p)
    imshow(gaborMag(:,:,p),[]);
    theta = gaborArray(p).Orientation;
    lambda = gaborArray(p).Wavelength;
    title(sprintf('Orientation=%d, Wavelength=%d',theta,lambda));
end

Figure contains 4 axes objects. Axes object 1 with title Orientation=0, Wavelength=4 contains an object of type image. Axes object 2 with title Orientation=0, Wavelength=8 contains an object of type image. Axes object 3 with title Orientation=90, Wavelength=4 contains an object of type image. Axes object 4 with title Orientation=90, Wavelength=8 contains an object of type image.

입력 인수

모두 축소

2차원 회색조 영상으로, 숫자형 행렬로 지정됩니다.

정현파 반송파의 파장(단위: 픽셀/주기)으로, 2보다 크거나 같은 숫자로 지정됩니다. wavelength의 일반적인 값 범위는 2부터 입력 영상 [1]의 빗변 길이까지입니다.

필터의 방향(단위: 도)으로, [0, 360] 범위의 숫자형 스칼라로 지정됩니다. 방향은 정현파 평면파에 대한 수직 방향으로 정의됩니다.

가버 필터 뱅크로, gabor 객체 또는 gabor 객체로 구성된 배열로 지정됩니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'SpatialFrequencyBandwidth',2는 두 옥타브의 공간 주파수 대역폭을 지정합니다.

공간 주파수 대역폭으로, 옥타브 단위의 숫자형 스칼라로 지정됩니다. 입력 영상의 주파수 성분이 기본 주파수 1/lambda와 다르므로 공간 주파수 대역폭에 의해 필터 응답의 차단이 결정됩니다. 공간 주파수 대역폭의 일반적인 값의 범위는 [0.5, 2.5]입니다.

가우스 포락선에서 긴 반지름과 짧은 반지름의 비율(semiminor/semimajor)로, 양수로 지정됩니다. 이 인수는 가우스 포락선의 타원율을 제어합니다. 공간 종횡비의 일반적인 값의 범위는 [0.23, 0.92]입니다.

출력 인수

모두 축소

가버 필터 또는 필터 뱅크에 대한 크기 응답으로, 단일 필터에 대한 숫자형 행렬 또는 필터 뱅크에 대한 숫자형 배열로 반환됩니다. mag의 p번째 평면은 같은 인덱스의 가버 필터 gaborbank(p)에 대한 크기 응답입니다.

데이터형: double

가버 필터 또는 필터 뱅크에 대한 위상 응답으로, 단일 필터에 대한 숫자형 행렬 또는 필터 뱅크에 대한 숫자형 배열로 반환됩니다. phase의 p번째 평면은 같은 인덱스의 가버 필터 gaborbank(p)에 대한 위상 응답입니다.

데이터형: double

  • 영상에 Inf 또는 NaN이 포함된 경우에는 imgaborfilt의 동작이 정의되지 않습니다. 가버 필터링이 주파수 영역에서 수행되기 때문입니다.

  • single형 이외의 모든 입력 데이터형에 대해서는 imgaborfiltdouble형으로 계산을 수행합니다. single형 입력 영상은 single형에서 필터링됩니다. imgaborfilt 호출에 앞서 입력 영상을 single형으로 형변환하면 성능이 최적화될 수도 있습니다.

참고 문헌

[1] Jain, Anil K., and Farshid Farrokhnia. "Unsupervised Texture Segmentation Using Gabor Filters." Pattern Recognition 24, no. 12 (January 1991): 1167–86. https://doi.org/10.1016/0031-3203(91)90143-S.

확장 기능

버전 내역

R2015b에 개발됨