iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 29
0
Big Data

體育競賽及日常生活裏遇到的數據收集及分析系列 第 29

體育競賽資料收集器:應用CV電腦視覺之六

  • 分享至 

  • xImage
  •  

學電腦視覺,比較痛苦的是,從它(電腦)的角度來看出去(理解視覺)。原來人類只要不是失明,
基本上不用考慮視覺。相較之下,電腦視覺,像是一個重度失明的人,擁有高度計算能力,去算出視覺來。
因為重度失明,或是超級弱視,要把原來的圖像經過很多種極端/簡化的處理,讓它容易被區分出來,
所以不少科學家,開發出演算法來達成這件事。

一個專業的電腦視覺從業人員,收到一個問題,簡單的計數問題,
就是熟練的使用這些手法,把數目算出來,只是過程中引來了延伸的問題,偵測出物件的輪廓的同時,
卻有部分重疊(overlapping)的問題,而熱心的網友經過了多道處理,濾掉了較多的雜訊,得到的更接近的結果,
部分重疊(overlapping)的圈圈少了非常多。看到別人解了實務上的問題,才比較深刻了解這類工作在技能上的
要求。

在用google寫(拼湊)程式的時代,程式員的工作,主要是讓程式可以執行,若不能執行,就設定好環境讓它
執行,再來就是下對的關鍵字來搜尋,貼近需求的關鍵字,能較快搜尋到要的程式碼,如上例,筆者是要
解決羽球和球拍兩物件重疊(overlapping)時,可以計算揮拍的次數,顯然重疊(overlapping)
不是貼近需求的關鍵字,改用碰撞(collision detection)偵測,會是比較好的key word,這又容易導向
擴增實境的領域,一種人/虛像互動的方向,筆者只是單純的想找,羽球碰撞球拍時,可計算揮拍的次數,
羽球碰撞球網時,失(得)分,羽球碰撞場外的地板時,失(得)分,在物件偵測的基礎上,再拼湊一些功能,
類似的討論
或是 這一篇的討論,在一個限制條件非常極端簡單的情況下,物件固定,如羽球,和拍,羽球和網子,指定物件,
計算其碰撞次數,或產生碰撞事件,讓user寫code,不算核心的功能?算整合/應用面的功能嗎?
如果是游戲引擎,這功能就會附上。

在球類競賽中,籃球,排球,棒球,足球,碰撞事件幾乎都和得/失分相關,是個重要功能。

順著搜尋到的文章提示的線索,Contours 輪廓
偵測出物件,及物件所在的位置,範圍,當一物件落入另一物件的範圍時,即表示發生碰撞,

裏面有幾個教學,把 輪廓描繪出來,範例的例子是極端的黑底白色正方形,對人眼,對電腦都很好描邊,
接著是影像動量Image Moments維基沒有中文解釋頁,
把偵測到的物體,描邊的幾種方法,粗略的描邊,細緻的描邊,用方框,長方框,斜方框,圓框,橢圓框,中剖線(回歸)。

輪廓的屬性,將會應用到 Solidity, Equivalent Diameter, Mask image, Mean Intensity 這些性質,

在專案源碼目錄夾中,有一個例子,contours.py,
python contours.py 執行時,有兩處錯誤,
一是

 File "contours.py", line 49, in <module>
    contours0, hierarchy = cv2.findContours( img.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
ValueError: too many values to unpack

另一是

 File "contours.py", line 56, in update
    3, cv2.CV_AA, hierarchy, abs(levels) )
AttributeError: 'module' object has no attribute 'CV_AA'

從其意思可了解,大概都是版本更新後,回傳值,傳入值不相符,或是常數的宣告有變了。
筆者參考別人提過的問題,
第一處改成
_,contours0, hierarchy = cv2.findContours( img.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
第二處,把cv2.CV_AA改為0,就可以執行。

執行效果如下圖,
contours

視窗上有一閥值可調整,
調到5以上,才開始偵測到。數字再大也沒法再多偵測了。大概是測試圖的色差不大。原來的測試圖是黑底白線,超容易偵測的。


上一篇
體育競賽資料收集器:應用CV電腦視覺之五
下一篇
體育競賽資料收集器小結
系列文
體育競賽及日常生活裏遇到的數據收集及分析30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言