簡體   English   中英

OpenCV-使用實時相機源檢測托盤中的硬幣丟失

[英]OpenCV - detecting missing coins from a tray using a live camera feed

我正在構建一個系統,該系統可以檢測從托盤中拾取的硬幣。 該托盤將保存在公共場所。 人們會撿起一個或多個硬幣,但預計會在一段時間后將其保留。

在此處輸入圖片說明

我將通過頂部的攝像頭進行實時直播。 我將在一天開始時進行一個校准步驟,例如,該步驟將捕獲用於與實時數據進行比較的托盤的初始狀態。 如示例圖像所示,開始時可能有幾個插槽是空的。

我需要檢測最初具有硬幣但在一天中任何給定時間點都沒有硬幣的插槽。

我正在嘗試使用OpenCV的幾種方法:

  • SSIM的區別 :我可以使用SSIM查找實時圖像幀和初始狀態之間的差異。 但是,插槽的數量大於相應的硬幣大小(例如,前兩行)。 這可能意味着,如果硬幣最初放置在中心,但后來又放回接觸邊緣之一,我們可能會得到誤報。

  • 斑點檢測 :或者,我可以預送(或檢測)插槽坐標。 然后在每個插槽中進行斑點檢測。 如果在原始狀態下存在斑點,但在相機鏡框中沒有斑點,則意味着已撿起硬幣。 但是,如果硬幣和托盤之間的對比度較低,則准確的斑點檢測可能會成為一個挑戰。

我可能還需要注意照明的細微變化,因為人們四處走動時會產生陰影。

對這些想法有什么想法,或者對可以嘗試的替代方法有何想法? 我可以從中學習類似的實現嗎?

提前謝謝了。

編輯:感謝@ I.Newton的建議。 對於那些偶然發現此問題並將從示例實現中受益的人,請查看此處: https : //github.com/kewats/computer-vision-samples/tree/master/image-processing/missing-coins-detection

如果完全控制了照明條件,則可以使用簡單的顏色閾值解決問題。

首先為包裝盒蓋上口罩。 您可以通過顏色閾值或使用自適應閾值或Canny邊緣等多種方式來完成它。

在此處輸入圖片說明

然后用相同的方法為硬幣制作一個面具。

在此處輸入圖片說明

現在,從每個硬幣的中心填充您的面罩。 它只會保留那些沒有硬幣的硬幣。

在此處輸入圖片說明

現在,您可以將其與初始蒙版進行比較,以確定是否存在所有硬幣

在此處輸入圖片說明

這不包括幀減法。 因此,您不必擔心硬幣在盒子中的不同位置。 您只需要確定制作口罩的照明條件即可。 如果要確保將硬幣放回同一個盒子,則應進行模板匹配等,這再次需要付出努力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM