Main Content

regionprops

영상 영역의 속성 측정

설명

예제

stats = regionprops(BW,properties)는 이진 영상 BW의 각 8-연결성분(객체)에 대해 속성 세트의 측정값을 반환합니다. 인접 영역과 인접하지 않은 영역에 regionprops를 사용할 수 있습니다(세부 정보 항목 참조).

참고

3차원 볼륨 영상의 측정값을 반환하려면 regionprops3을 사용하는 것이 좋습니다. regionprops가 3차원 영상을 인수로 받을 수 있지만, regionprops3regionprops보다 3차원 영상에 대한 통계량을 더 정확하게 계산합니다.

모든 구문에서, properties 인수를 지정하지 않으면 regionprops'Area', 'Centroid', 'BoundingBox' 측정값을 반환합니다.

stats = regionprops(CC,properties)bwconncomp에 의해 반환된 구조체인 CC의 각 연결성분(객체)에 대한 속성 세트를 측정합니다.

stats = regionprops(L,properties)는 레이블 영상 L에서 레이블이 지정된 각 영역의 속성 세트를 측정합니다.

stats = regionprops(___,I,properties)는 영상 I의 레이블이 지정된 각 영역에 대해 properties로 지정된 속성 세트의 측정값을 반환합니다. regionprops에 대한 첫 번째 입력값(BW, CC 또는 L)은 I의 영역을 식별합니다.

예제

stats = regionprops(output,___)은 속성 세트의 측정값을 반환합니다. 여기서 output은 반환 값 유형을 지정합니다. regionprops는 측정값을 struct 배열 또는 table로 반환할 수 있습니다.

예제

모두 축소

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

BW = imread('text.png');

regionprops를 사용하여 영상의 연결성분의 중심을 계산합니다. regionprops 함수는 중심을 구조체형 배열로 반환합니다.

s = regionprops(BW,'centroid');

중심의 x, y 좌표를 2열 행렬에 저장합니다.

centroids = cat(1,s.Centroid);

중심 위치를 겹쳐 놓은 이진 영상을 표시합니다.

imshow(BW)
hold on
plot(centroids(:,1),centroids(:,2),'b*')
hold off

Figure contains an axes. The axes contains 2 objects of type image, line.

영상에 있는 원형 객체의 중심과 반지름을 추정하고, 이 정보를 바탕으로 영상의 원을 플로팅합니다. 이 예제에서는 regionprops는 측정된 영역 속성을 테이블로 반환합니다.

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

a = imread('circlesBrightDark.png');

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

bw = a < 100;
imshow(bw)
title('Image with Circles')

Figure contains an axes. The axes with title Image with Circles contains an object of type image.

영상의 영역 속성을 계산하고 그 데이터를 테이블로 반환합니다.

stats = regionprops('table',bw,'Centroid',...
    'MajorAxisLength','MinorAxisLength')
stats=4×3 table
        Centroid        MajorAxisLength    MinorAxisLength
    ________________    _______________    _______________

     256.5     256.5        834.46             834.46     
       300       120        81.759             81.759     
    330.47    369.83        111.78             110.36     
       450       240        101.72             101.72     

원의 중심과 반지름을 가져옵니다.

centers = stats.Centroid;
diameters = mean([stats.MajorAxisLength stats.MinorAxisLength],2);
radii = diameters/2;

원을 플로팅합니다.

hold on
viscircles(centers,radii);
hold off

Figure contains an axes. The axes with title Image with Circles contains 3 objects of type line, image.

입력 인수

모두 축소

이진 영상으로, 임의 차원의 논리형 배열로 지정됩니다.

데이터형: logical

연결성분으로, bwconncomp에서 반환된 구조체로 지정됩니다.

데이터형: struct

레이블 영상으로, 다음 중 하나로 지정됩니다.

  • 임의 차원의 숫자형 배열. 0으로 레이블이 지정된 픽셀은 배경입니다. 1로 레이블이 지정된 픽셀이 첫 번째 객체가 되고, 2로 레이블이 지정된 픽셀이 두 번째 객체가 되는 방식입니다. regionprops는 음수 값 픽셀을 배경으로 처리하고, 정수가 아닌 입력 픽셀은 가장 가까운 정수로 버림합니다. watershed 또는 labelmatrix와 같은 레이블 지정 함수에서 숫자형 레이블 영상을 얻을 수 있습니다.

  • categorical형 배열. 각 범주는 서로 다른 영역에 대응됩니다.

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

측정값 유형으로, string형 스칼라 또는 문자형 벡터가 쉼표로 구분된 목록, string형 스칼라 또는 문자형 벡터로 구성된 셀형 배열 또는 'all'이나 'basic'으로 지정됩니다.

  • 'all'을 지정하면, regionprops는 모든 형태 측정값을 계산하고, 회색조 영상에 대해서는 픽셀 값의 측정값도 함께 계산합니다.

  • 'basic'을 지정하면, regionprops'Area', 'Centroid', 'BoundingBox' 측정값만 계산합니다.

다음 표에는 형태 측정값을 제공하는 모든 속성이 나와 있습니다. 픽셀 값의 측정값 표에 나열된 속성은 회색조 영상을 지정하는 경우에만 유효합니다.

형태 측정값

속성 이름설명N차원 지원GPU 지원코드 생성
'Area'

영역의 실제 픽셀 수로, 스칼라로 반환됩니다. 이 값은 픽셀의 패턴마다 서로 다른 가중치를 부여하는 bwarea에서 반환하는 값과 조금 다를 수 있습니다.

3차원 볼륨 영역에 상응하는 것을 찾으려면 regionprops3'Volume' 속성을 사용하십시오.

'BoundingBox'

영역을 포함하는 가장 작은 상자의 위치와 크기로, 1×(2*Q) 벡터로 반환됩니다. 처음 Q개 요소는 상자의 최소 코너의 좌표입니다. 두 번째 Q개 요소는 각 차원에서 상자의 크기입니다. 예를 들어, 값이 [5.5 8.5 11 14]인 2차원 경계 상자는 상자의 왼쪽 위 코너의 (x,y) 좌표가 (5.5, 8.5)이고 상자의 가로 너비가 11픽셀이고, 상자의 세로 높이가 14픽셀임을 나타냅니다.

'Centroid'

영역의 질량 중심으로, 1×Q 벡터로 반환됩니다. Centroid의 첫 번째 요소는 질량 중심의 가로 좌표(또는 x 좌표)입니다. 두 번째 요소는 세로 좌표(또는 y 좌표)입니다. Centroid의 다른 모든 요소는 차원 순서대로 위치합니다. 아래 그림은 인접하지 않은 영역의 중심과 경계 상자를 나타낸 것입니다. 영역은 흰색 픽셀로 구성됩니다. 녹색 상자는 경계 상자이고, 빨간색 점은 중심입니다.

'Circularity'

객체의 원형률로, 필드 Circularity를 가진 구조체로 반환됩니다. 구조체는 입력 영상의 각 객체에 대한 원형성을 포함합니다. 원형성 값은 (4*Area*pi)/(Perimeter2)로 계산됩니다. 완전한 원의 경우 원형성 값은 1입니다. 입력값은 레이블 행렬 또는 인접 영역을 갖는 이진 영상이어야 합니다. 인접하지 않은 영역이 영상에 있으면 regionprops는 예상치 못한 결과를 반환합니다.

참고

Circularity는 3×3 정사각형과 같이 매우 작은 객체에는 권장되지 않습니다. 이 경우 결과값이 완전한 원의 원형성 값인 1을 초과할 수 있습니다.

2차원만아니요
'ConvexArea''ConvexImage'의 픽셀 수로, 스칼라로 반환됩니다.2차원만아니요아니요
'ConvexHull'영역을 포함할 수 있는 가장 작은 볼록 다각형으로, p×2 행렬로 반환됩니다. 행렬의 각 행에는 해당 다각형 꼭짓점의 x, y 좌표가 포함되어 있습니다.2차원만아니요아니요
'ConvexImage'볼록 껍질을 지정하는 영상으로, 껍질 내 모든 픽셀이 채워져(on으로 설정됨) 있으며, 이진 영상(logical형)으로 반환됩니다. 영상은 영역의 경계 상자 크기입니다. 껍질의 경계가 거치는 픽셀에 대해, regionpropsroipoly와 같은 논리를 사용하여, 픽셀이 껍질 안에 있는지 밖에 있는지 확인합니다. 2차원만아니요아니요
'Eccentricity'영역과 같은 2차 모멘트를 갖는 타원의 이심률로, 스칼라로 반환됩니다. 이심률은 타원의 포커스와 타원의 주요 축 길이 간의 거리 비율입니다. 값은 0과 1 사이입니다. (0과 1은 퇴화된 경우입니다. 이심률이 0인 타원은 실제로는 원이고, 이심률이 1인 타원은 선분입니다.)2차원만
'EquivDiameter'영역과 같은 면적을 갖는 원의 지름으로, 스칼라로 반환됩니다. sqrt(4*Area/pi)로 계산됩니다.2차원만
'EulerNumber'영역의 객체 수에서 객체의 구멍 수를 뺀 값으로, 스칼라로 반환됩니다. 이 속성은 2차원 레이블 행렬에만 지원됩니다. regionprops는 8-연결성을 사용하여 오일러 수(오일러 지표라고도 함)를 계산합니다. 연결성에 대한 자세한 내용은 Pixel Connectivity 항목을 참조하십시오.2차원만아니요
'Extent'영역의 픽셀과 총 경계 상자의 픽셀 비율로, 스칼라로 반환됩니다. 경계 상자의 면적으로 나눈 Area로 계산됩니다.2차원만
'Extrema'

영역의 극점으로, 8×2 행렬로 반환됩니다. 행렬의 각 행에는 점 중 하나의 x, y 좌표가 포함되어 있습니다. 벡터 형식은 [top-left top-right right-top right-bottom bottom-right bottom-left left-bottom left-top]입니다. 아래 그림은 서로 다른 두 영역의 극점을 보여줍니다. 왼쪽 그림의 각 영역 극점은 뚜렷하게 구분됩니다. 오른쪽 그림의 영역은 특정 극점이 일치합니다(예: top-leftleft-top).

2차원만
'FilledArea'FilledImageon 픽셀 개수로, 스칼라로 반환됩니다.아니요
'FilledImage'

영역의 경계 상자와 크기가 같은 영상으로, 이진(logical형) 배열로 반환됩니다. on 픽셀은 영역에 해당하며 아래 그림에 나타난 것처럼 모든 구멍이 채워져 있습니다.

아니요
'Image'영역의 경계 상자와 크기가 같은 영상으로, 이진(logical형) 배열로 반환됩니다. on 픽셀은 영역에 해당하고, 그 외 모든 픽셀은 off입니다.
'MajorAxisLength'영역과 같은 정규화된 2차 중심 모멘트를 갖는 타원의 주요 축 길이(단위: 픽셀)로, 스칼라로 반환됩니다.2차원만
'MaxFeretProperties'

최대 페렛 직경(Feret diameter), 상대 각도, 좌표값을 포함하는 페렛 속성으로, 다음 필드를 가진 구조체로 반환됩니다.

필드설명
MaxFeretDiameter최대 페렛 직경으로, 객체를 둘러싸고 있는 볼록 껍질의 대척점 상의 임의의 두 경계점 사이의 최대 거리로 측정됩니다.
MaxFeretAngle영상의 가로 축을 기준으로 하는 최대 페렛 직경의 각도입니다.
MaxFeretCoordinates최대 페렛 직경의 끝점 좌표입니다.

입력값은 이진 영상, 연결성분 또는 레이블 행렬일 수 있습니다.

2차원만아니요아니요
'MinFeretProperties'

최소 페렛 직경, 상대 각도, 좌표값을 포함하는 페렛 속성으로, 다음 필드를 가진 구조체로 반환됩니다.

필드설명
MinFeretDiameter최소 페렛 직경으로, 객체를 둘러싸고 있는 볼록 껍질의 대척점 상의 임의의 두 경계점 사이의 최소 거리로 측정됩니다.
MinFeretAngle영상의 가로 축을 기준으로 하는 최소 페렛 직경의 각도입니다.
MinFeretCoordinates최소 페렛 직경의 끝점 좌표입니다.

입력값은 이진 영상, 연결성분 또는 레이블 행렬일 수 있습니다.

2차원만아니요아니요
'MinorAxisLength'영역과 같은 정규화된 2차 중심 모멘트를 갖는 타원의 보조 축 길이(단위: 픽셀)로, 스칼라로 반환됩니다.2차원만
'Orientation'

영역과 같은 2차 모멘트를 갖는 타원의 x축과 주요 축 간의 각도로, 스칼라로 반환됩니다. 값은 도 단위이며, 범위는 -90도에서 90도까지입니다. 아래 그림은 타원의 좌표축과 방향을 나타낸 것입니다. 왼쪽 그림은 영상 영역과 해당 타원을 보여줍니다. 오른쪽은 같은 타원과, 좌표축을 나타내는 파란색 실선을 보여줍니다. 빨간색 점은 포커스입니다. 방향은 가로 점선과 주요 축 간의 각도입니다.

2차원만
'Perimeter'

영역 경계 주변의 거리로, 스칼라로 반환됩니다. regionprops는 영역 경계 주변에서 서로 인접해 있는 각 픽셀 쌍의 거리를 계산하여 둘레를 계산합니다. 인접하지 않은 영역이 영상에 있으면 regionprops는 예상치 못한 결과를 반환합니다. 아래 그림은 이 객체의 둘레 계산에 포함된 픽셀을 나타냅니다.

2차원만아니요
'PixelIdxList'영역 픽셀의 선형 인덱스로, 요소를 p개 가진 벡터로 반환됩니다.
'PixelList'영역의 픽셀 위치로, p×Q 행렬로 반환됩니다. 행렬의 각 행은 [x y z ...] 형태를 갖고, 영역에 있는 특정 픽셀의 좌표를 지정합니다.
'Solidity'볼록 껍질에도 있고 영역에도 있는 픽셀 비율로, 스칼라로 반환됩니다. Area/ConvexArea로 계산됩니다.2차원만아니요아니요
'SubarrayIdx'객체 경계 상자 내에 있는 L의 요소로, 인덱스를 포함하는 셀형 배열로 반환됩니다. L(idx{:})이 요소를 추출하게 됩니다.아니요

다음 표의 픽셀 값의 측정값 속성은 회색조 영상 I를 지정할 때만 유효합니다.

픽셀 값의 측정값

속성 이름 설명N차원 지원GPU 지원코드 생성
'MaxIntensity'영역에서 가장 큰 명암을 갖는 픽셀 값으로, 스칼라로 반환됩니다.
'MeanIntensity'영역의 모든 명암 값의 평균으로, 스칼라로 반환됩니다.
'MinIntensity'영역에서 가장 낮은 명암을 갖는 픽셀 값으로, 스칼라로 반환됩니다.
'PixelValues'영역의 픽셀 수로, p×1 벡터로 반환됩니다. 여기서 p는 영역의 픽셀 수입니다. 벡터의 각 요소에는 영역의 픽셀 값이 들어 있습니다.
'WeightedCentroid'위치와 명암 값을 기준으로 한 영역의 중심으로, 좌표로 구성된 p×Q 벡터로 반환됩니다. WeightedCentroid의 첫 번째 요소는 가중치가 부여된 중심의 가로 좌표(또는 x 좌표)입니다. 두 번째 요소는 세로 좌표(또는 y 좌표)입니다. WeightedCentroid의 다른 모든 요소는 차원 순서대로 위치합니다.

데이터형: char | string | cell

측정할 영상으로, 회색조 영상으로 지정됩니다. 영상의 크기는 이진 영상 BW, 연결성분 구조체 CC 또는 레이블 영상 L의 크기와 일치해야 합니다.

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

반환 유형으로, 다음 값 중 하나로 지정됩니다.

설명
'struct'길이가 BW, CC.NumObjects 또는 max(L(:))의 객체 수와 동일한, 구조체로 구성된 배열을 반환합니다. 구조체형 배열의 필드는 properties로 지정된 것처럼 각 영역의 서로 다른 속성을 나타냅니다.
'table'

높이(행 개수)가 BW, CC.NumObjects 또는 max(L(:))의 객체 수와 동일한 table을 반환합니다. 변수(열)는 properties로 지정된 것처럼 각 영역의 서로 다른 속성을 나타냅니다.

데이터형: char | string

출력 인수

모두 축소

측정값으로, 구조체형 배열이나 테이블로 반환됩니다. 배열의 구조체 수나 테이블의 행 수는 BW, CC.NumObjects 또는 max(L(:))의 객체 수와 동일합니다. 각 구조체의 필드나 각 행의 변수는 properties로 지정된 것처럼, 각 영역에 대해 계산된 속성을 나타냅니다. 입력 영상이 categorical형 레이블 영상 L인 경우 stats는 속성 'LabelName'을 갖는 추가 필드 또는 변수를 포함합니다.

세부 정보

모두 축소

인접 영역과 인접하지 않은 영역

인접 영역은 객체, 연결성분 또는 블롭(Blob)이라고도 합니다. 인접 영역을 포함한 레이블 영상 L은 다음과 같을 수 있습니다.

1 1 0 2 2 0 3 3
1 1 0 2 2 0 3 3

1에 해당하는 L의 요소는 첫 번째 인접 영역이나 연결성분에 속합니다. 2에 해당하는 L의 요소는 두 번째 연결성분에 속하는 식입니다.

인접하지 않은 영역은 연결성분이 여러 개 있을 수 있는 영역입니다. 인접하지 않은 영역을 포함한 레이블 영상은 다음과 같을 수 있습니다.

1 1 0 1 1 0 2 2
1 1 0 1 1 0 2 2
1에 해당하는 L의 요소는 첫 번째 영역에 속하고, 이 영역은 인접하지 않은 영역이며 연결성분을 두 개 포함하고 있습니다. 2에 해당하는 L의 요소는 두 번째 영역이고, 이 영역은 단일 연결성분입니다.

  • 특정 기준을 충족하는 객체나 영역만 포함하는 이진 영상을 만들 때에는 함수 ismember가 유용합니다. 예를 들어, 이러한 명령을 사용하면 면적이 80을 넘고 이심률이 0.8 미만인 영역만 포함하는 이진 영상이 만들어집니다.

    cc = bwconncomp(BW); 
    stats = regionprops(cc,'Area','Eccentricity'); 
    idx = find([stats.Area] > 80 & [stats.Eccentricity] < 0.8); 
    BW2 = ismember(labelmatrix(cc),idx);  
    
  • 디폴트 연결성은 2차원 영상의 경우 8-연결이고 더 높은 차원의 경우 최대 연결입니다. 디폴트가 아닌 연결성을 지정하려면 bwconncomp를 사용하여 연결성분을 만들고 결과값을 regionprops로 전달하십시오.

  • regionprops는 관련 측정값을 계산할 때 중간 결과를 사용합니다. 따라서 원하는 모든 측정값을 regionprops에 대한 단일 호출로 계산하는 것이 가장 빠릅니다.

  • 측정값을 계산하는 데는 대부분 시간이 거의 걸리지 않습니다. 그러나 다음 측정값은 L의 영역 수에 따라 시간이 오래 걸릴 수 있습니다.

    • 'ConvexHull'

    • 'ConvexImage'

    • 'ConvexArea'

    • 'FilledImage'

확장 기능

R2006a 이전에 개발됨