Main Content

superpixels

영상의 2차원 슈퍼픽셀 과다분할

설명

예제

[L,numLabels] = superpixels(A,N)은 2차원 회색조 또는 RGB 영상 A의 슈퍼픽셀을 계산합니다. 만들려는 슈퍼픽셀 수를 N이 지정합니다. 이 함수는 레이블 행렬 L과 계산된 실제 슈퍼픽셀 수 numLabels를 반환합니다.

superpixels 함수는 SLIC(단순 선형 반복 군집화) 알고리즘 [1]을 사용합니다. 이 알고리즘은 픽셀을 비슷한 값을 가진 영역으로 그룹화합니다. 분할과 같은 영상 처리 연산에 이 영역을 사용하면 연산이 덜 복잡해질 수 있습니다.

[L,numLabels] = superpixels(A,N,Name=Value)는 분할의 특성을 제어하는 데 사용되는 이름-값 인수를 사용하여 영상 A의 슈퍼픽셀을 계산합니다.

예제

모두 축소

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

A = imread('kobi.png');

영상의 슈퍼픽셀을 계산합니다.

[L,N] = superpixels(A,500);

슈퍼픽셀 경계가 원본 영상에 겹쳐지게 표시합니다.

figure
BW = boundarymask(L);
imshow(imoverlay(A,BW,'cyan'),'InitialMagnification',67)

Figure contains an axes object. The axes object contains an object of type image.

출력 영상의 각 픽셀 색을 슈퍼픽셀 영역의 평균 RGB 색으로 설정합니다.

outputImage = zeros(size(A),'like',A);
idx = label2idx(L);
numRows = size(A,1);
numCols = size(A,2);
for labelVal = 1:N
    redIdx = idx{labelVal};
    greenIdx = idx{labelVal}+numRows*numCols;
    blueIdx = idx{labelVal}+2*numRows*numCols;
    outputImage(redIdx) = mean(A(redIdx));
    outputImage(greenIdx) = mean(A(greenIdx));
    outputImage(blueIdx) = mean(A(blueIdx));
end    

figure
imshow(outputImage,'InitialMagnification',67)

Figure contains an axes object. The axes object contains an object of type image.

입력 인수

모두 축소

분할할 영상으로, 2차원 회색조 영상 또는 2차원 트루컬러 영상으로 지정됩니다. 데이터형이 int16이면 A는 회색조 영상이어야 합니다. 파라미터 isInputLabtrue인 경우 입력 영상은 single 또는 double 데이터형이어야 합니다.

데이터형: single | double | int16 | uint8 | uint16

원하는 슈퍼픽셀 수로, 양의 정수로 지정됩니다.

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

이름-값 인수

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

예: B = superpixels(A,100,NumIterations=20);은 20회의 반복을 수행합니다.

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

예: B = superpixels(A,100,"NumIterations",20);

슈퍼픽셀의 형태로, 양수로 지정됩니다. SLIC 알고리즘의 compactness 파라미터가 슈퍼픽셀의 형태를 제어합니다. 값이 클수록 슈퍼픽셀이 더 규칙적인 형태, 즉 정사각형이 됩니다. 값이 작을수록 슈퍼픽셀이 경계에 더 가까워져 불규칙한 형태가 됩니다. 조밀도의 일반적인 값의 범위는 [1, 20]입니다.

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

입력 영상 데이터가 L*a*b* 컬러스페이스에 있는지 여부로, true 또는 false로 지정됩니다.

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

슈퍼픽셀을 계산하는 데 사용되는 알고리즘으로, 다음 값 중 하나로 지정됩니다. superpixels 함수는 SLIC(단순 선형 반복 군집화) 알고리즘의 2가지 변형을 사용합니다.

의미

"slic0"

superpixels가 첫 번째 반복 후에 Compactness를 적절히 미세 조정하는 데 SLIC0 알고리즘을 사용합니다. 이는 디폴트 값입니다.

"slic"

Compactness가 군집화하는 동안 일정합니다.

데이터형: char | string

알고리즘의 군집화 단계에 사용되는 반복 횟수로, 양의 정수로 지정됩니다. 대부분 문제에서는 이 파라미터를 조정할 필요가 없습니다.

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

출력 인수

모두 축소

레이블 행렬로, 양의 정수로 구성된 배열로 반환됩니다. 영상의 각 슈퍼픽셀 영역에 대해 1은 첫 번째 영역을, 2는 두 번째 영역을 가리키는 식으로 값이 구성됩니다.

데이터형: double

계산된 슈퍼픽셀의 개수로, 양의 정수로 반환됩니다.

데이터형: double

참고 문헌

[1] Radhakrishna Achanta, Appu Shaji, Kevin Smith, Aurelien Lucchi, Pascal Fua, and Sabine Susstrunk, SLIC Superpixels Compared to State-of-the-art Superpixel Methods. IEEE Transactions on Pattern Analysis and Machine Intelligence, Volume 34, Issue 11, pp. 2274-2282, May 2012

확장 기능

버전 내역

R2016a에 개발됨

모두 확장