伊莉討論區

標題: 如何用python計算影像內線段長度 [打印本頁]

作者: s281521    時間: 2014-5-15 06:39 PM     標題: 如何用python計算影像內線段長度

本帖最後由 s281521 於 2014-5-15 06:40 PM 編輯

我手上有許多線段的”圖片”資料(jpg檔)
例如這樣:
[attach]101123879[/attach]

我想要計算這裡面線段長度的加總
因為他是圖片資料,所以我不知道該怎麼判讀跟計算
可以提點小妹我嗎?
謝謝大家


作者: am0314    時間: 2014-5-18 04:09 PM

影像辨識會用到非常多的數學工具呢...數學不行的話要努力很久
雖然自己是寫不出來,但是概念上的話像這樣的圖片,步驟大致上應該是
載入圖檔->程式切割圖檔並對像素運算->運算找出每個曲折點的位置->從每個曲折點開始運算,找出哪些曲折點是同一條線的->把屬於同一條線的各個曲折點劃分出座標->畢氏定理->把每一條線獲得的長度加總->回傳->完成
作者: chevylin0802    時間: 2014-5-25 02:05 PM

本帖最後由 chevylin0802 於 2014-5-25 02:06 PM 編輯

這個常常應用在電子地圖上

所以通常要有好幾個預設的單位值

像橫軸x
每1個x軸的像素(pixel)代表的長度
例如:
int unitx = 120;  
代表著每1個像素(pixels)為120個單位長度, (單位長度可以是mm, cm, m, km....)
同樣的y軸也是如此

有了x軸與y軸的單位長度比之後
接下來的計算方法
是以九宮格方式進行的
原點, 原點左上方, 原點上方, 原點右上方, 原點右方, 原點右下方, 原點下方, 原點左下方, 原點左方

假設原點是 (100,120)
那麼需要檢查的坐標有
(99,121), (100,121), (101, 121), (101, 120), (101, 119), (100, 119), (99,119), (99,120)
假設(99,120)是路徑
那麼我們就有一個向量 (100,120) -> (99,120)
同時我們也知道兩者之間的距離為(1,0) (x,y都只取絕對值)
然後再以(99,120)為原點, 按同樣步驟, 但(100,120)要跳過不算, 找路徑的下一個點的位置
依此類推
就可以不斷的找出一堆向量數組
一直到終點的時候, 就只會找到除了上一個點之外, 再也找不出下一個路徑為止
此時
我們就會得到每一個向量數組只有三種, (1, 0), (0, 1)以及(1, 1)
還記得剛剛我提過的嗎, xunit以及yunit
於是我們就可以根據每一個向量得到三種距離的結果
(1*xunit, 0), (0, 1*yunit), (1*xunit, 1*yunit)
其中 xunit, yunit 以及 (xunit)^2+(yuint)^2的平方根
最後把每一段向量距離總和起來
就等於答案了





歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!