2017-04-20 9 views
0

ピクセルが0または255のペアの行列があり、255のときはディスクの形になります。 私はdifferentsのディスクにラベルを付け、各ラベルのタブに入る:半径と中心点。この最後の2つのポイントはどうしたらいいですか?あなたは重心や面積を計算するためにregionpropsを使用して、おおよその半径を計算するための領域を使用することができ、小さな行列行列からプロパティを取得する

Mat=zeros(12,12); 
Mat(2,6:7)=255; Mat(3,5)=255; Mat(3,8)=255; Mat(4,5)=255 
Mat(4,8)=255; Mat(5,6:7)=255; 

Mat(10,10)=255; Mat(11,9)=255; Mat(12,10)=255; Mat(11,11)=255; 

CC=bwconncomp(Mat,8); 
MatL=labelmatrix(CC); 

figure, imagesc(Mat) 
+0

何をすべきかあなたは「タブに入る」という意味ですか?予想される出力は何ですか? – rayryeng

+1

['regionprops'](https://nl.mathworks.com/help/images/ref/regionprops.html)があなたが探しているものかもしれません。 – m7913d

答えて

0

とexemple以下

% generate matrix 
Mat=zeros(12,12); 
Mat(2,6:7)=255; Mat(3,5)=255; Mat(3,8)=255; Mat(4,5)=255; 
Mat(4,8)=255; Mat(5,6:7)=255; 
Mat(10,10)=255; Mat(11,9)=255; Mat(12,10)=255; Mat(11,11)=255; 
% convert to binary 
MatBin = Mat > 0; 
% fill circles 
MatFull = imfill(MatBin,4,'holes'); 
% get centroids and areas 
props = regionprops(MatFull,{'Area','Centroid'}); 
Area = [props(:).Area]; 
Centroid = reshape([props(:).Centroid],[],2)'; 
% compute radius 
Radius = sqrt(Area ./ pi); 
% plotting 
imshow(MatFull,[],'InitialMagnification','fit') 
hold on 
for ii = 1:numel(Radius) 
    text(Centroid(ii,1),Centroid(ii,2),['r = ' num2str(Radius(ii))],... 
     'VerticalAlignment','middle','HorizontalAlignment',... 
     'center','FontSize',12,'Color','b'); 
end 
hold off 

enter image description here

関連する問題