2016-08-21 66 views
0

給定曲線的數據和圖像的大小,如何計算曲線的長度?要計算圖像上曲線的長度

curve = [9.93,4;9.87,4.10;9.80,4.20;9.74,4.30;9.68,4.40;9.63,4.50;9.59,4.60;9.55,4.70;9.53,4.80;9.51,4.90;9.50,5;9.50,5.10;9.51,5.20;9.48,5.30;9.55,5.40;9.45,5.47;9.55,5.52;9.45,5.59;9.55,5.65;9.45,5.72;9.55,5.77;9.45,5.84;9.55,5.90]; 
backgroud = ones(20,20); 
imshow(backgroud) 
hold on, plot(curve(2,:),curve(1,:),'r'); 
+1

座標'(X1,Y1)'和'(X2,Y2)'是由以下公式確定'SQRT((X2-X1)^ 2 +(Y2-Y1)的兩個點之間的距離^ 2)'。重複所有配對以獲得每個分段的長度。總和長度以獲得總長度 – brainkz

回答

3

要擴大評論,您可以簡單地總結構成曲線的線段的長度。這可以使用下面的代碼來完成。

curve = [9.93,4;9.87,4.10;9.80,4.20;9.74,4.30;9.68,4.40;9.63,4.50;9.59,4.60;9.55,4.70;9.53,4.80;9.51,4.90;9.50,5;9.50,5.10;9.51,5.20;9.48,5.30;9.55,5.40;9.45,5.47;9.55,5.52;9.45,5.59;9.55,5.65;9.45,5.72;9.55,5.77;9.45,5.84;9.55,5.90]; 

len = sum(sqrt(sum(diff(curve).^2,2))) 

結果

len = 

    2.4757 

編輯:燒杯中指出,該指數是向後你的答案。看看curve_x1,curve_x2等等的值,你會發現它們只是一個值。如果您反轉指數,我們會得到相同的結果。另外,作爲一個健康檢查,看一下曲線的曲線,它在第一維中大約2個單位,在第二維中大約爲0.4個單位,因此接近2.5的數似乎是合理的,例如8左右的數太大。

curve_x1 = num2cell(curve(1:end-1,1)); 
curve_y1 = num2cell(curve(1:end-1,2)); 
curve_x2 = num2cell(curve(2:end,1)); 
curve_y2 = num2cell(curve(2:end,2)); 

instance_length = cellfun(@(x1,y1,x2,y2) sqrt((x2-x1)^2+(y2-y1)^2), curve_x1,curve_y1,curve_x2,curve_y2); 
distance = sum(instance_length)