이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
regionprops
영상 영역의 속성 측정
구문
설명
는 이진 영상 stats
= regionprops(BW
,properties
)BW
의 각 8-연결성분(객체)에 대해 속성 세트의 측정값을 반환합니다. 인접 영역과 인접하지 않은 영역에 regionprops
를 사용할 수 있습니다(세부 정보 항목 참조).
참고
3차원 볼륨 영상의 측정값을 반환하려면 regionprops3
을 사용하는 것이 좋습니다. regionprops
가 3차원 영상을 인수로 받을 수 있지만, regionprops3
이 regionprops
보다 3차원 영상에 대한 통계량을 더 정확하게 계산합니다.
모든 구문에서 properties
인수를 생략할 수 있습니다. 이 경우 regionprops
는 "Area"
, "Centroid"
및 "BoundingBox"
측정값을 반환합니다.
는 stats
= regionprops(CC
,properties
)bwconncomp
에 의해 반환된 구조체인 CC
의 각 연결성분(객체)에 대한 속성 세트를 측정합니다.
는 레이블 영상 stats
= regionprops(L
,properties
)L
에서 레이블이 지정된 각 영역의 속성 세트를 측정합니다.
예제
중심 계산하기 및 영상에서 위치 겹쳐 놓기
이진 영상을 작업 공간으로 읽어 들입니다.
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
원형 객체의 중심과 반지름 추정 및 원 플로팅하기
영상에 있는 원형 객체의 중심과 반지름을 추정하고, 이 정보를 바탕으로 영상의 원을 플로팅합니다. 이 예제에서는 regionprops
는 측정된 영역 속성을 테이블로 반환합니다.
영상을 작업 공간으로 읽어 들입니다.
a = imread('circlesBrightDark.png');
입력 영상을 이진 영상으로 변환합니다.
bw = a < 100;
imshow(bw)
title('Image with Circles')
영상의 영역 속성을 계산하고 그 데이터를 테이블로 반환합니다.
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
입력 인수
BW
— 이진 영상
논리형 배열
이진 영상으로, 임의 차원의 논리형 배열로 지정됩니다.
데이터형: logical
CC
— 연결성분
구조체
연결성분으로, bwconncomp
에서 반환된 구조체로 지정됩니다.
데이터형: struct
L
— 레이블 영상
숫자형 배열 | categorical형 배열
레이블 영상으로, 다음 중 하나로 지정됩니다.
임의 차원의 숫자형 배열.
0
으로 레이블이 지정된 픽셀은 배경입니다.1
로 레이블이 지정된 픽셀이 첫 번째 객체가 되고,2
로 레이블이 지정된 픽셀이 두 번째 객체가 되는 방식입니다.regionprops
는 음수 값 픽셀을 배경으로 처리하고, 정수가 아닌 입력 픽셀은 가장 가까운 정수로 버림합니다.watershed
또는labelmatrix
와 같은 레이블 지정 함수에서 숫자형 레이블 영상을 얻을 수 있습니다.categorical형 배열. 각 범주는 서로 다른 영역에 대응됩니다.
데이터형: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| categorical
properties
— 측정값 유형
"basic"
(디폴트 값) | string형 스칼라 또는 문자형 벡터가 쉼표로 구분된 목록 | string형 스칼라로 구성된 배열 | 문자형 벡터로 구성된 셀형 배열 | "all"
측정값 유형으로, string형 스칼라 또는 문자형 벡터가 쉼표로 구분된 목록, string형 스칼라로 구성된 배열, 문자형 벡터로 구성된 셀형 배열 또는 "all"
이나 "basic"
으로 지정됩니다.
"all"
을 지정하면,regionprops
는 모든 형태 측정값을 계산하고, 회색조 영상에 대해서는 픽셀 값의 측정값도 함께 계산합니다."basic"
을 지정하면,regionprops
는"Area"
,"Centroid"
,"BoundingBox"
측정값만 계산합니다.
다음 표에는 형태 측정값을 제공하는 모든 속성이 나와 있습니다. 픽셀 값의 측정값 표에 나열된 속성은 회색조 영상을 지정하는 경우에만 유효합니다.
형태 측정값
속성 이름 | 설명 | N차원 지원 | GPU 지원 | 코드 생성 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
"Area" | 영역의 실제 픽셀 수로, 스칼라로 반환됩니다. 이 값은 픽셀의 패턴마다 서로 다른 가중치를 부여하는 3차원 볼륨 영역에 상응하는 것을 찾으려면 | 예 | 예 | 예 | ||||||||
"BoundingBox" | 영역을 포함하는 가장 작은 상자의 위치와 크기로, 1×(2*Q) 벡터로 반환됩니다. 여기서 Q는 영상 차원입니다. 처음 Q개 요소는 상자의 최소 코너의 좌표입니다. 두 번째 Q개 요소는 각 차원에서 상자의 크기입니다. 예를 들어, 값이 | 예 | 예 | 예 | ||||||||
"Centroid" | 영역의 질량 중심으로, 1×Q 벡터로 반환됩니다. 여기서 Q는 영상 차원입니다. 아래 그림은 인접하지 않은 영역의 중심과 경계 상자를 나타낸 것입니다. 영역은 흰색 픽셀로 구성됩니다. 녹색 상자는 경계 상자이고, 빨간색 점은 중심입니다.
| 예 | 예 | 예 | ||||||||
"Circularity" | 객체의 원형률로, 필드 참고
| 2차원만 | 아니요 | 예 | ||||||||
"ConvexArea" | ConvexImage 의 픽셀 수로, 스칼라로 반환됩니다. | 2차원만 | 아니요 | 아니요 | ||||||||
"ConvexHull" | 영역을 포함할 수 있는 가장 작은 볼록 다각형으로, p×2 행렬로 반환됩니다. 행렬의 각 행에는 해당 다각형 꼭짓점의 x, y 좌표가 포함되어 있습니다. | 2차원만 | 아니요 | 아니요 | ||||||||
"ConvexImage" | 볼록 껍질을 지정하는 영상으로, 껍질 내 모든 픽셀이 채워져(on 으로 설정됨) 있으며, 이진 영상으로 반환됩니다. 영상은 영역의 경계 상자 크기입니다. 껍질의 경계가 거치는 픽셀에 대해, regionprops 는 Classify 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 좌표가 포함되어 있습니다. 벡터 형식은 아래 그림은 서로 다른 두 영역의 극점을 보여줍니다. 왼쪽 그림의 각 영역 극점은 뚜렷하게 구분됩니다. 오른쪽 그림의 영역은 특정 극점이 일치합니다(예:
| 2차원만 | 예 | 예 | ||||||||
"FilledArea" | FilledImage 의 on 픽셀 개수로, 스칼라로 반환됩니다. | 예 | 아니요 | 예 | ||||||||
"FilledImage" | 영역의 경계 상자와 크기가 같은 영상으로, 이진 배열로 반환됩니다.
| 예 | 아니요 | 예 | ||||||||
"Image" | 영역의 경계 상자와 크기가 같은 영상으로, 이진 배열로 반환됩니다. on 픽셀은 영역에 해당하고, 그 외 모든 픽셀은 off 입니다. | 예 | 예 | 예 | ||||||||
"MajorAxisLength" | 영역과 같은 정규화된 2차 중심 모멘트를 갖는 타원의 주요 축 길이(단위: 픽셀)로, 스칼라로 반환됩니다. | 2차원만 | 예 | 예 | ||||||||
"MaxFeretProperties" | 최대 페렛 직경(Feret diameter), 상대 각도, 좌표값을 포함하는 페렛 속성으로, 다음 필드를 가진 구조체로 반환됩니다.
입력값은 이진 영상, 연결성분 또는 레이블 행렬일 수 있습니다. | 2차원만 | 아니요 | 아니요 | ||||||||
"MinFeretProperties" | 최소 페렛 직경, 상대 각도, 좌표값을 포함하는 페렛 속성으로, 다음 필드를 가진 구조체로 반환됩니다.
입력값은 이진 영상, 연결성분 또는 레이블 행렬일 수 있습니다. | 2차원만 | 아니요 | 아니요 | ||||||||
"MinorAxisLength" | 영역과 같은 정규화된 2차 중심 모멘트를 갖는 타원의 보조 축 길이(단위: 픽셀)로, 스칼라로 반환됩니다. | 2차원만 | 예 | 예 | ||||||||
"Orientation" | 영역과 같은 2차 모멘트를 갖는 타원의 x축과 주요 축 간의 각도로, 스칼라로 반환됩니다. 값은 도 단위이며, 범위는 -90도에서 90도까지입니다. 아래 그림은 타원의 좌표축과 방향을 나타낸 것입니다. 왼쪽 그림은 영상 영역과 해당 타원을 보여줍니다. 오른쪽은 같은 타원과, 좌표축을 나타내는 파란색 실선을 보여줍니다. 빨간색 점은 포커스입니다. 방향은 가로 점선과 주요 축 간의 각도입니다.
| 2차원만 | 예 | 예 | ||||||||
"Perimeter" | 영역 경계 주변의 거리로, 스칼라로 반환됩니다.
| 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
output
— 반환 유형
"struct"
(디폴트 값) | "table"
반환 유형으로, 다음 값 중 하나로 지정됩니다.
값 | 설명 |
---|---|
"struct" | 길이가 BW , 또는 max( 의 객체 수와 동일한, 구조체로 구성된 배열을 반환합니다. 구조체형 배열의 필드는 properties 로 지정된 것처럼 각 영역의 서로 다른 속성을 나타냅니다. |
"table" | 높이(행 개수)가 |
데이터형: char
| string
출력 인수
stats
— 측정값
struct
형 배열 (디폴트 값) | 테이블
측정값으로, 구조체형 배열이나 테이블로 반환됩니다. 배열의 구조체 수나 테이블의 행 수는 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
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"
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
regionprops
함수는 C 코드 생성을 지원합니다(MATLAB® Coder™가 필요함). 일반적인MATLAB Host Computer
대상 플랫폼을 선택할 경우regionprops
함수는 미리 컴파일된 플랫폼별 공유 라이브러리를 사용하는 코드를 생성합니다. 공유 라이브러리를 사용하면 성능 최적화가 유지되지만 코드를 생성할 수 있는 대상 플랫폼이 제한됩니다. 자세한 내용은 Types of Code Generation Support in Image Processing Toolbox 항목을 참조하십시오.이진 영상 또는 숫자형 레이블 영상만 지원합니다. 데이터형이 categorical형인 입력 레이블 영상은 지원되지 않습니다.
출력 유형
"table"
을 지정하는 것은 지원되지 않습니다.속성으로 구성된 셀형 배열을 전달하는 것은 지원되지 않습니다. 쉼표로 구분된 목록을 대신 사용하십시오.
"ConvexArea"
,"ConvexHull"
,"ConvexImage"
,"MaxFeretProperties"
,"MinFeretProperties"
,"Solidity"
및"SubarrayIdx"
를 제외한 모든 속성이 지원됩니다.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
GPU Coder™는 이진 영상에 대해서만 최적화된 CUDA® 코드를 생성합니다. 입력 레이블 영상에 대해 생성하는 코드는 최적화되지 않습니다. 데이터형이 categorical형인 입력 레이블 영상은 지원되지 않습니다.
출력 유형
"table"
을 지정하는 것은 지원되지 않습니다.속성으로 구성된 셀형 배열을 전달하는 것은 지원되지 않습니다. 쉼표로 구분된 목록을 대신 사용하십시오.
"Area"
,"BoundingBox"
,"Centroid"
,"Eccentricity"
,"EquivDiameter"
,"Extent"
,"MajorAxisLength"
,"MinorAxisLength"
,"Orientation"
,"PixelIdxList"
"PixelList"
,"MaxIntensity"
,"MeanIntensity"
,"MinIntensity"
,"PixelValues"
및"WeightedCentroid"
속성만 지원됩니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
사용법 관련 참고 및 제한 사항:
gpuArray
입력값은 2차원 논리형 행렬 또는 2차원 레이블 행렬이어야 합니다.연결성분 구조체(
CC
) 입력값은 지원되지 않습니다."ConvexArea"
,"ConvexHull"
,"ConvexImage"
,"Circularity"
,"EulerNumber"
,"FilledArea"
,"FilledImage"
,"MaxFeretProperties"
,"MinFeretProperties"
,"Solidity"
속성은 지원되지 않습니다.지원되는 반환 유형은
"struct"
뿐입니다.
자세한 내용은 GPU를 사용한 영상 처리 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨R2022b: 스레드 기반 환경 지원
regionprops
함수는 이제 스레드 기반 환경을 지원합니다.
R2022a: regionprops
는 모든 입력값에 대해 Image
, ConvexImage
, FilledImage
속성을 출력 테이블에 셀형 배열로 저장함
R2022a부터 테이블 출력 형식이 지정된 경우 regionprops
함수는 image 객체의 크기에 상관없이 Image
, ConvexImage
, FilledImage
속성값을 셀형 배열로 저장합니다. 이전 릴리스에서는 객체의 경계 상자 크기가 1×1 또는 1×n이면 이러한 속성은 출력 테이블에 숫자형 스칼라 또는 행 벡터로 저장되었습니다.
코드를 업데이트하려면 중괄호 {}
에 점 표기법을 사용하여 Image
, ConvexImage
, FilledImage
속성의 값에 액세스합니다. 예를 들어 입력 영상 BW
에 있는 첫 번째 객체의 Image
속성에 액세스하려면 아래 코드를 사용합니다. 이전 릴리스에서는 숫자형 스칼라 또는 행 벡터로 저장된 값에 액세스하는 데 중괄호가 필요하지 않았습니다.
stats = regionprops("table",BW,"Image"); imdata = stats.Image{1};
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)