2016-06-26 10 views
-3

エラー:代入A(I)= Bで、BとIの要素数が同じでなければなりません。Matlabのセントロイド計算中にGetiingエラーが発生しました

22 Centroid(i)= k(i)で==>テストでエラーが発生しました。

test.m

I=imread('1_1.jpg'); 
    I=rgb2gray(I); 
    I2 = Thresholding(I); 
    cc = bwconncomp(I2,8); 
    n = cc.NumObjects; 
    Area = zeros(n,1); 
    Centroid = zeros(n,1); 
    Perimeter = zeros(n,1); 
    MajorAxis = zeros(n,1); 
    MinorAxis = zeros(n,1); 
    k = regionprops(cc, 'Area','Centroid','Perimeter','MajorAxisLength', 'MinorAxisLength'); 
    for i=1:n 
    Area(i) = k(i).Area; 
    Centroid(i)=k(i).Centroid; 
    Perimeter(i) = k(i).Perimeter; 
    MajorAxis(i) = k(i).MajorAxisLength(i); 
    MinorAxis(i) = k(i).MinorAxisLength(i); 
    end 
    handdata(1,1) = mean(Area); 
    handdata(2,1) = mean(Centroid); 
    handdata(3,1) = mean(Perimeter); 
    handdata(4,1) = mean(MajorAxis); 
    handdata(5,1) = mean(MinorAxis); 

Thresholding.m

function im = Thresholding(I); 
[r,c] = size(I); 
im = zeros(r,c); 
for i=1:r 
    for j=1:c 
     if I(i,j)>105 
      im(i,j)=1; 
     end 
    end 
end 
im = bwareaopen(im,5); 
im = imfill(im, 'holes'); 
end 

答えて

0

ソリューション

重心フィールドは、サイズ1×2のベクトル(Yを保持するとx座標)。 したがって、それに応じてコードを変更する必要があります:ループの外

Centroid = zeros(n,2); %The centroids array should be nx2, to contain both x and y positions 

を内部forループ:

Centroid(i,:)=k(i).Centroid; %fill the corresponded i'th row 
MajorAxis(i) = k(i).MajorAxisLength; %remove the coordinate from MajorAxisLength and MinorAxisLength fields 
MinorAxis(i) = k(i).MinorAxisLength; 

その理由から、あなたも必要になりますmean(Centroid)は1x2サイズのベクトルなので、次のコード行を修正します。ハンドデータは4x1のベクトルになり、重心平均はcentroidDataと呼ばれる別の変数に配置されます。

handdata(1,1) = mean(Area); 
handdata(2,1) = mean(Perimeter); 
handdata(3,1) = mean(MajorAxis); 
handdata(4,1) = mean(MinorAxis); 
centroidData = mean(Centroid); 

つ以上の提案しきい値処理機能1.In

、代わりにループのための二重使用のあなたは、単にに位置ループのメイン2.in

im = I > 105; 

を(書くことができますメインスクリプト)use ii instead of iをカウンターの変数名として使用します。

+0

handdata(2,1)= mean(Centroid)を=> ??に変更する必要があります。 –

+0

私の更新された回答を参照 – drorco

+0

エラーはありません。しかし、それは私にも答えを提供していません。 As、出力値はNaNです。どうすれば解決できますか? –

関連する問題