7

我正在構建一個iOS應用程序,該應用程序作爲主要功能合併了圖像匹配。問題是我需要識別的圖像是小型定向10x10斑塊,上面有簡單的大文本。它們可以很反光,並且會在外面(所以光線條件會變化)。樣本圖像iOS中的稀疏圖像匹配

enter image description here

將有多達這些類型的圖像池中的15真的所有我需要檢測的是文本,才能登錄該用戶已。

我面臨的問題是,我嘗試過的圖像匹配軟件,aurasma和稍微成功的arlabs,他們無法區分它們,因爲它們主要是爲了處理詳細的圖像而構建的。

我需要準確地檢測哪個牌匾正在掃描,並考慮使用GPS來優化選擇,但我發現的唯一可靠的方式是讓用戶手動輸入文本。我們基於產品的主要吸引力之一是能夠檢測已經存在的這些圖像,而不必設置任何其他材料。

任何人都可以推薦一款可以工作的軟件(如iOS友好型)或者是一種有效且交互式/令用戶滿意的檢測方法。

樣品環境: http://www.orienteeringcoach.com/wp-content/uploads/2012/08/startfinishscp.jpeg

環境可以顯着改變,基本上任何地方斑塊可以定位它們;圍牆,牆壁和崗位在樹木繁茂或開放的地區,但絕大多數在戶外。

+2

你有幾張這些斑塊在他們的家鄉環境中的圖像,讓我們知道我們希望從中挑選出什麼?如果您無法在這裏獲得更廣泛的圖像處理問題的解決方案,那麼http://dsp.stackexchange.com上的人員可能會爲您提供這部分內容。不過,他們無法爲iOS描述特定的解決方案。 –

+1

您可能需要預處理圖像以生成高對比度圖像 - 拋出所有灰度信息,並補償陰影等.dsp.stackexchange.com可能有一些指示。 (他們是一個比這個委員會更容忍「愚蠢」問題的頭髮。) –

+0

迄今爲止,我的策略是隔離圖像並在相機上放置裁剪檢查矩形。我會期待用戶對齊區域內的圖像。 –

回答

1

我設法找到一個工作得很好的解決方案。我還沒有完全優化,但我認爲它只是調整過濾器,稍後會解釋病情。

最初我試圖設置opencv,但它非常耗時,學習曲線陡峭,但它確實給了我一個想法。我的問題的關鍵是真正檢測圖像中的字符,並忽略背景,這基本上只是噪音。 OCR完全是爲此目的而設計的。

我發現免費的圖書館tesseract(https://github.com/ldiqual/tesseract-ios-lib)易於使用和大量的可定製性。起初,結果是非常隨機的,但應用銳化和單色濾鏡以及顏色反轉效果很好,可以清理文本。接下來,在ui上標出一個目標區域,並用它來剪切要處理的圖像矩形。大圖像的處理速度很慢,這大大減少了處理速度。 OCR過濾器允許我限制允許的字符,並且隨着斑塊遵循標準配置,縮小了精度。

到目前爲止,它已成功與灰色背景斑塊,但我還沒有找到紅色和白色版本的正確過濾器。我的目標是添加顏色檢測並消除需要輸入數據類型。

2

我不是一個iOs程序員,但我會嘗試從算法的角度來回答。基本上,你有一個檢測問題(「斑塊在哪裏?」)和一個分類問題(「它是哪一個?」)。要求用戶將斑塊保留在預先定義的區域當然是一個好主意。這解決了檢測問題,與分類問題相比,這通常難以用有限的資源來解決。

分類,我看到了兩個備選方案:

  1. 經典的「計算機視覺」路線是特徵提取和分類。 Local Binary PatternsHOG是已知足夠快的移動特徵提取器(前者多於後者),並且它們不太複雜。然而,分類器並不重要,您可能必須搜索適當的iOs庫。

  2. 或者,您可以嘗試對圖像進行二值化處理,即將像素分類爲「plate」/ white或「text」/ black。然後,您可以使用容錯相似性度量來比較二值化圖像和斑塊的二值化參考圖像。 chamfer distance measure是一個很好的候選人。它主要歸結於比較你的兩個二值化圖像的distance transforms。這比直接比較二進制圖像更容忍錯位。參考圖像的距離變換可以被預先計算並存儲在設備上。

就我個人而言,我會嘗試第二種方法。第二種方法的一個(非移動)原型相對容易用一個好的圖像處理庫(OpenCV,Matlab +圖像處理工具箱,Python等)進行編碼和評估。

+0

優秀的迴應。我的主要問題是我沒有時間去實現匹配算法,尤其是零經驗。我正在尋找/購買一個完整的解決方案,與我迄今爲止所使用的解決方案不同,它適用於我的環境。你對二元分類的觀點給了我希望,因爲所有斑塊的對比度都很高。謝謝。 –