Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

regionprops

영상 영역의 속성 측정

설명

regionprops 함수는 영상의 각 객체(연결성분)에 대해 영역, 중심, 경계 상자와 같은 속성을 측정합니다. regionprops인접 영역과 인접하지 않은 영역 모두를 지원합니다.

regionprops는 2차원 영상에는 8-연결 이웃을 사용하고 더 높은 차원의 영상에는 최대 연결성을 사용하여 이진 영상에 있는 고유한 객체를 찾습니다. 자세한 내용은 Pixel Connectivity 항목을 참조하십시오. 다른 유형의 연결성을 사용하여 객체를 찾으려면 bwconncomp를 사용하여 연결성분을 만든 다음 CC 인수를 사용하여 결과를 regionprops에 전달하십시오.

참고

3차원 볼륨 영상의 객체 속성을 측정하려면 regionprops3을 사용해 보십시오. regionprops는 3차원 영상을 인수로 받을 수 있지만, regionprops3은 3차원 영상에 대해 더 많은 통계량을 지원합니다.

regionprops 함수를 호출할 때 함수가 "Area", "Centroid", "BoundingBox" 측정값을 반환하는 경우 properties 인수를 생략할 수 있습니다.

예제

stats = regionprops(BW,properties)는 이진 영상 BW에 있는 각 객체의 속성을 측정합니다.

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

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

stats = regionprops(regions,I,properties)는 회색조 영상 I에서 레이블이 지정된 각 영역의 픽셀 값 속성도 측정합니다. 첫 번째 입력 인수 regionsBW, CC 또는 L 인수에 대해 유효한 값이어야 합니다.

예제

stats = regionprops(outputFormat,___)outputFormat 인수를 사용하여, 반환되는 측정값의 형식을 구조체형 배열이나 테이블로 지정합니다.

예제

모두 축소

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

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 object. The axes object contains 2 objects of type image, line. One or more of the lines displays its values using only markers

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

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

a = imread("circlesBrightDark.png");

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

bw = a < 50;
imshow(bw)
title("Image with Circles")

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

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

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

       300       120        79.517             79.517     
    330.29    369.92        109.49              108.6     
       450       240        99.465             99.465     

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

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

원을 플로팅합니다.

hold on
viscircles(centers,radii)
ans = 
  Group with properties:

    Children: [2x1 Line]
     Visible: on
     HitTest: on

  Use GET to show all properties

hold off

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

입력 인수

모두 축소

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

regionprops는 각 성분의 top-left 극값을 기준으로 이진 영상의 객체를 왼쪽에서 오른쪽으로 정렬합니다. 여러 객체가 동일한 가로 위치를 갖는 경우 함수는 해당 객체를 위에서 아래로 정렬하고 더 높은 차원을 따라 다시 정렬합니다. regionprops는 측정된 속성 stats를 정렬된 객체와 동일한 순서로 반환합니다.

데이터형: 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개 요소는 상자의 최소 코너의 좌표입니다. 두 번째 Q개 요소는 각 차원에서 상자의 크기입니다. 예를 들어, 값이 [5.5 8.5 11 14]인 2차원 경계 상자는 상자의 왼쪽 위 코너의 (x,y) 좌표가 (5.5, 8.5)이고 상자의 가로 너비가 11픽셀이고, 상자의 세로 높이가 14픽셀임을 나타냅니다.

"Centroid"

영역의 질량 중심으로, 1×Q 벡터로 반환됩니다. 여기서 Q는 영상 차원입니다. Centroid의 첫 번째 요소는 질량 중심의 가로 좌표(또는 x 좌표)입니다. 두 번째 요소는 세로 좌표(또는 y 좌표)입니다. Centroid의 다른 모든 요소는 차원 순서대로 위치합니다.

아래 그림은 인접하지 않은 영역의 중심과 경계 상자를 나타낸 것입니다. 영역은 흰색 픽셀로 구성됩니다. 녹색 상자는 경계 상자이고, 빨간색 점은 중심입니다.

Centroid is within the bounding box encompassing a region.

"Circularity"

객체의 원형률로, 필드 Circularity를 가진 구조체로 반환됩니다. 구조체는 입력 영상의 각 객체에 대한 원형성 값을 포함합니다. 원형성 값은 다음과 같이 계산됩니다.

(4*pi*Area/Perimeter^2)*(1 - 0.5/r)^2 여기서 r = Perimeter/(2*pi) + 0.5입니다.

최대 원형성 값은 1입니다. 입력값은 레이블 행렬 또는 인접 영역을 갖는 이진 영상이어야 합니다. 인접하지 않은 영역이 영상에 있으면 regionprops는 예상치 못한 결과를 반환합니다.

2차원만아니요
"ConvexArea"ConvexImage의 픽셀 수로, 스칼라로 반환됩니다.2차원만아니요아니요
"ConvexHull"영역을 포함할 수 있는 가장 작은 볼록 다각형으로, p×2 행렬로 반환됩니다. 행렬의 각 행에는 해당 다각형 꼭짓점의 x, y 좌표가 포함되어 있습니다.2차원만아니요아니요
"ConvexImage"볼록 껍질을 지정하는 영상으로, 껍질 내 모든 픽셀이 채워져(on으로 설정됨) 있으며, 이진 영상으로 반환됩니다. 영상은 영역의 경계 상자 크기입니다. 껍질의 경계가 거치는 픽셀에 대해, regionpropsClassify Pixels That Are Partially Enclosed by ROI 항목에 설명된 알고리즘을 사용합니다.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).

Two differently shaped regions, each with their eight extrema points labeled

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

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

Comparison of original region consisting of touching circles with filled region in which holes are filled.

아니요
"Image"영역의 경계 상자와 크기가 같은 영상으로, 이진 배열로 반환됩니다. 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도까지입니다. 아래 그림은 타원의 좌표축과 방향을 나타낸 것입니다. 왼쪽 그림은 영상 영역과 해당 타원을 보여줍니다. 오른쪽은 같은 타원과, 좌표축을 나타내는 파란색 실선을 보여줍니다. 빨간색 점은 포커스입니다. 방향은 가로 점선과 주요 축 간의 각도입니다.

Axes and orientation of ellipse surrounding an image region

2차원만
"Perimeter"

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

Perimeter pixels of a region

2차원만아니요
"PixelIdxList"영역 픽셀의 선형 인덱스로, 요소를 p개 가진 벡터로 반환됩니다.
"PixelList"영역의 픽셀 위치로, p×Q 행렬로 반환됩니다. 행렬의 각 행은 [x y z ...] 형태를 갖고, 영역에 있는 특정 픽셀의 좌표를 지정합니다.
"Solidity"

볼록 껍질에도 있고 영역에도 있는 픽셀 비율로, 스칼라로 반환됩니다. 솔리디티(solidity)는 Area/ConvexArea로 계산됩니다.

regionprops는 2차원 영상의 솔리디티만 계산할 수 있습니다. 3차원 영상의 솔리디티를 계산하려면 regionprops3을 사용하십시오.

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

측정값 stats의 출력 형식으로, 다음 값 중 하나로 지정됩니다.

설명
"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"을 갖는 추가 필드 또는 변수를 포함합니다.

stats의 측정값 순서는 이진 영상 BW의 정렬된 객체 또는 CC 또는 L로 지정된 객체의 정렬 순서와 동일합니다.

세부 정보

모두 축소

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

인접 영역은 객체, 연결성분 또는 블롭(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);  
    
  • regionprops는 관련 측정값을 계산할 때 중간 결과를 사용합니다. 따라서 원하는 모든 측정값을 regionprops에 대한 단일 호출로 계산하는 것이 가장 빠릅니다.

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

    • "ConvexHull"

    • "ConvexImage"

    • "ConvexArea"

    • "FilledImage"

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장