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

imbinarize

임계값을 지정하여 2차원 회색조 영상이나 3차원 볼륨 이진화

설명

예제

BW = imbinarize(I)는 전역적으로 적용되는 임계값보다 큰 값을 모두 1로 바꾸고 그 외 값은 모두 0으로 설정하여 2차원 또는 3차원 회색조 영상 I에서 이진 영상을 생성합니다. 기본적으로 imbinarize는 이진화된 검은색 픽셀과 흰색 픽셀의 클래스 내 분산을 최소화하기 위한 임계값을 선택하는 오츠(Otsu) 방법을 사용합니다 [1]. imbinarize는 256개 Bin을 갖는 영상 히스토그램을 사용하여 오츠 임계값을 계산합니다. 다른 히스토그램을 사용하려면 otsuthresh를 참조하십시오.

예제

BW = imbinarize(I,method)method로 지정된 이진화 방법('global' 또는 'adaptive')을 사용하여 영상 I에서 이진 영상을 생성합니다.

BW = imbinarize(I,T)는 임계값 T를 사용하여 영상 I에서 이진 영상을 생성합니다. T는 전역 영상 임계값(스칼라 휘도 값으로 지정됨)이거나, 국소 가변 임계값(휘도 값의 행렬로 지정됨)일 수 있습니다.

예제

BW = imbinarize(I,'adaptive',Name,Value)는 적응형 이진화의 특성을 제어하는 이름-값 쌍을 사용하여 영상 I에서 이진 영상을 생성합니다.

예제

모두 축소

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

I = imread('coins.png');

영상을 이진 영상으로 변환합니다.

BW = imbinarize(I);

원본 영상과 이진 영상 버전을 나란히 표시합니다.

figure
imshowpair(I,BW,'montage')

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

I = imread('rice.png');

회색조 영상을 이진 영상으로 변환합니다.

BW = imbinarize(I, 'adaptive');

원본 영상과 이진 영상 버전을 나란히 표시합니다.

figure
imshowpair(I,BW,'montage')

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

I = imread('printedtext.png');
figure
imshow(I)
title('Original Image')

적응형 이진화를 사용하여 영상을 이진 영상으로 변환합니다. ForegroundPolarity 파라미터를 사용하여 전경이 배경보다 더 어둡다는 것을 나타냅니다.

BW = imbinarize(I,'adaptive','ForegroundPolarity','dark','Sensitivity',0.4);

이진화를 한 영상을 표시합니다.

figure
imshow(BW)
title('Binary Version of Image')

3차원 회색조 명암 데이터를 작업 공간으로 불러옵니다.

load mristack;
V = mristack;

3차원 볼륨을 표시합니다.

figure
slice(double(V),size(V,2)/2,size(V,1)/2,size(V,3)/2)
colormap gray 
shading interp

명암 볼륨을 3차원 이진 볼륨으로 변환합니다.

J = imbinarize(V);

3차원 이진 볼륨을 표시합니다.

figure
slice(double(J),size(J,2)/2,size(J,1)/2,size(J,3)/2)
colormap gray 
shading interp

입력 인수

모두 축소

입력 영상으로, 2차원 회색조 영상 또는 3차원 회색조 볼륨으로 지정됩니다. imbinarize에서 double형 및 single형의 픽셀 값은 [0, 1] 범위 내에 있어야 합니다. rescale 함수를 사용하여 픽셀 값을 예상 범위로 조정할 수 있습니다.

참고

imbinarize는 RGB 영상을 볼륨 회색조 영상으로 해석하며, 각각의 채널을 따로 이진화하지는 않습니다. RGB 영상에서 이진 영상을 생성하려면, 먼저 rgb2gray를 사용하여 영상을 회색조 영상으로 변환하십시오.

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

영상 이진화에 사용되는 방법으로, 다음 값 중 하나로 지정됩니다.

의미

'global'

오츠 방법을 사용하여 전역 영상 임계값을 계산합니다. 오츠 방법에 대한 자세한 내용은 graythresh를 참조하십시오.

'adaptive'

각 픽셀 주위의 1차 국소 영상 통계량을 사용하여 결정되는 국소 가변 영상 임계값을 계산합니다. 자세한 내용은 adaptthresh를 참조하십시오. 영상에 Inf 또는 NaN이 포함된 경우에는 'adaptive' 방법에 대해 imbinarize의 동작이 정의되지 않습니다. Inf 또는 NaNInf 픽셀과 NaN 픽셀 주위 이웃 범위를 넘어서 퍼져있을 수 있기 때문입니다.

데이터형: char | string

휘도 임계값으로, 숫자형 스칼라 또는 값이 [0, 1] 범위 내에 있는 숫자형 배열로 지정됩니다.

  • T가 숫자형 스칼라이면 imbinarizeT를 전역 영상 임계값으로 해석합니다. 전역 영상 임계값을 계산하려면 graythresh 또는 otsuthresh를 사용하십시오.

  • T가 숫자형 배열이면 imbinarizeT를 국소 가변 임계값으로 해석합니다. 국소 가변 임계값을 계산하려면 adaptthresh를 사용하십시오.

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

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: BW = imbinarize(I,'adaptive','Sensitivity',0.4);

적응형 이진화의 감도 인자로, 'Sensitivity'와 함께 [0, 1] 범위의 숫자가 쉼표로 구분되어 지정됩니다. 감도 값이 높으면 일부 배경 픽셀을 포함할 위험이 있지만 더 많은 픽셀을 전경으로 간주해 이진화합니다.

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

적응형 이진화에서 전경 픽셀로 간주할 픽셀을 결정하는 방식으로, 'ForegroundPolarity'와 함께 다음 값 중 하나가 쉼표로 구분되어 지정됩니다.

의미

'bright'

전경이 배경보다 더 밝습니다.

'dark'

전경이 배경보다 더 어둡습니다.

데이터형: char | string

출력 인수

모두 축소

출력 이진 영상으로, I와 같은 크기의 논리형 행렬 또는 논리형 배열로 반환됩니다.

데이터형: logical

  • 인덱스 영상에서 이진 영상을 생성하려면, 먼저 ind2gray를 사용하여 영상을 회색조 영상으로 변환하십시오.

알고리즘

'adaptive' 방법은 국소 적응형 임계값을 사용하여 영상을 이진화합니다. imbinarize는 픽셀의 이웃 주위 국소 평균 명암 값을 사용하여 각 픽셀의 임계값을 계산합니다. 이 기법은 브래들리(Bradley) 방법이라고도 합니다 [2]. 'adaptive' 방법은 또한 영상 크기의 약 1/8에 해당하는 이웃 크기(2*floor(size(I)/16)+1로 계산됨)를 사용합니다. 다른 1차 국소 통계량이나 다른 이웃 크기를 사용하려면 adaptthresh를 참조하십시오.

참고 문헌

[1] Otsu, N., "A Threshold Selection Method from Gray-Level Histograms." IEEE Transactions on Systems, Man, and Cybernetics. Vol. 9, No. 1, 1979, pp. 62–66.

[2] Bradley, D., G. Roth, "Adapting Thresholding Using the Integral Image," Journal of Graphics Tools. Vol. 12, No. 2, 2007, pp.13–21.

확장 기능

R2016a에 개발됨