之前一直是做靜態圖片分析的,機器視覺項目如果想要在線分析,必然需要進行動態分析。前一段時間,我閱讀了一些書籍,介紹了一種通過機器視覺的單向信息傳輸系統。主要在內外網隔離的情況下進行數據單向傳輸。
這樣的系統,必然是真正的“機器視覺”系統,不僅包括圖像算法的處理,而且需要包括設備的架設,並且結合多種技術(OCR,二維碼),具有一定挑戰意義和現實意義。這里做簡單實現。
一
、基於OCR的單
向信息傳輸系統。
所謂單項數據傳輸,書中提到的方法是采用ASCII碼進行分析。但是我認為采用OCR識別的話,如果能夠很好地控制住傳輸的信息,成功率就會很高。
什么信息需要單項傳輸?就是那些實時更新的數據,數據量不是很大但是時效性很大:比如天氣、比如溫度、比如時間等信息。這個信息量一旦變得很大,那么采用機器視覺的方法解決單向傳輸問題,就顯得不是那么恰當。根據一些經驗,設計這樣的草圖:

數據不需要太多或者變化太快,只要采樣的頻率比變化的頻率更快就可以。采用csharp

1)數據獲取,這里基於之前介紹過的GOPre程序獲得攝像頭的數據

2)數據進行校正,修改成這樣的結果

3)參考答題卡程序,對圖像進行修正


做到這一步,相關的內容信息可以獲取。下一步就是OCR的問題,可以參考我之前發的相關資料。
需要注意,在這種情況下進行OCR識別,對於圖像的問題的要求很高,由於里面涉及到模板識別的代碼,如果輸入有問題,程序可能會報錯。這是在實際項目中需要注意的地方。
二
、基於二維碼的單
向信息傳輸系統。
這個時候我在設想,如果采用了直接字符OCR的方法,這種方法的優點是思路清晰、可以處理大量信息;相比較而言,許多解決方案可能會采用一維碼或者是二維碼的方法。這種方法,帶有冗余校驗信息,數據傳播的魯棒性大大增強,但是復雜度也增強了,可以說互有利弊。
二維碼可以說是今日這個時代里面發展比較迅速的一個技術。既然前面已經將ocr做到了一定的程度,這里,我轉變思路,而是用二維碼來所謂“單向傳輸問題”
1)基於ZXING,編寫二維碼編碼解碼器。這個庫比較優秀,對於二維碼的輸入也有一些預先的處理,不是很挑。而且是開源代碼庫,有時間值得研究一下。

2)采集圖片
經過一定的測試,發現將分辨率設定在640*480的時候,無論是


都是可以被識別的,即使傾斜也沒有問題。但是識別是需要一定的時間的。本來以為可能需要Opecv做需要預處理的,結果也不需要進行預先處理。這種思路經過多次測量,結果是可行的。
3)選擇實現模式
因為在這個解決方案中,主要是利用zxing的接口來實現的,而其中圖像處理的東西並不多,但是涉及到了攝像頭的圖像獲取,所以選擇合適的實現模式。
emgucv例程序提供了cameracapture的效果,借用過來

4)選擇實現模式
具體的代碼就是柔和了二維碼生成和解碼;以及emgucv的攝像頭操作。難度不是很大。

三
、小結
當程序變成動態的時候,遇到了更多的挑戰,你必須要編寫相關的界面程序、必須處理攝像頭的問題:往往是需要將幾件事情一起來做,有的時候還要涉及到多線程。
但是從另一個方面來說,動態的才能夠是實時的,實時的才能夠是在線的。這是從“圖像識別”向“機器視覺”的概念的改變。
越是復雜的構造需要考慮的問題越多,越難以保持系統的魯棒。但是,越是復雜的事情,越是值得去探索、實現。我相信能夠獲得的價值也就越高。
這里展示了兩個想法的原型,關鍵是思路,希望能夠對所需之人有所幫助。