2016-08-15 5 views
0

MATLAB에서 regionprops 함수를 사용할 때 연결된 각 구성 요소의 이진 이미지를 추출하는 옵션이 있습니다. 이진 이미지의 크기는 연결된 구성 요소의 크기로 줄어 듭니다. 나는 바이너리 이미지의 크기를 줄이기를 원하지 않는다. 원본 이미지 크기의 해당 위치에 선택된 연결된 구성 요소 만 표시하면서 이진 이미지의 크기를 원래 크기로 유지하려고합니다. 연결된 이미지를 원본 이미지 크기로 추출하려면 어떻게해야합니까?많은 'regionprops'를 사용하여 하나의 연결된 구성 요소를 표시하는 방법

답변

2

원본 이미지와 동일한 크기의 빈 이미지를 만들고 blob 당 이미지를 추출하는 대신 각 blob의 원본 이미지를 참조하여 실제 픽셀 위치를 추출한 다음이 위치를 다음과 같이 설정하여 빈 이미지를 채 웁니다. 이 빈 이미지에 이진 true. regionpropsPixelIdxList 속성을 사용하여 원하는 구성 요소의 열 주요 위치를 얻은 다음 이들을 사용하여 동일한 위치의 출력 이미지를 true으로 설정하십시오.

% Allocate blank image 
out = false(size(A, 1), size(A, 2)); 

% Run regionprops 
S = regionprops(A, 'PixelIdxList'); 

% Determine which object to extract 
k = ...; % Fill in ID here 

% Obtain the indices 
idx = S(k).PixelIdxList; 

% Create the mask to be the same size as the original image 
out(idx) = true; 

imshow(out); % Show the final mask 

이있는 경우 여러 개체와 원하는 :

당신의 regionprops 구조가 S에 저장하고 k 번째 구성 요소를 추출 할 원본 이미지가 A에 저장되어 가정하면, 다음을 수행 별도 개체 당 이미지의 원래 크기 인이 마스크를 만들, 당신은 당신을 위해 할 수있는 for 루프를 사용할 수 있습니다

% Run regionprops 
S = regionprops(A, 'PixelIdxList'); 

% For each blob... 
for k = 1 : numel(S) 
    out = false(size(A, 1), size(A, 2)); % Allocate blank image 

    % Extract out the kth object's indices 
    idx = S(k).PixelIdxList; 

    % Create the mask 
    out(idx) = true; 

    % Do your processing with out ... 
    % ... 
end 
+0

당신은 매우 환영합니다! – rayryeng

관련 문제