第330章 小孔成像和PNP問題

要想利用“人工神經網絡”處理圖像識別問題,需要事先收集到大量的數據。

可是倉促之間,上哪去弄數據?

倒是可以給“戰神一號”拍一些“寫真”,來充當訓練集,反正所有的參賽機器人,外形都差不多。

這樣做倒也不是不行,但時間太倉促了,數據的量級達不到要求,訓練效果應該不會太好。

而且,就算拼着一夜不睡,東拼西湊出一點訓練數據,也很可能來不及訓練了。

訓練“人工神經網絡”,畢竟是一件比較消耗時間的事情。

而現在最大的問題,就是缺少時間,明天就要正式上場了的說……

何況,“人工神經網絡”的優勢在於通用性和準確率,在特定問題上的識別速度,還真不見得能比得上精心優化過的“笨辦法”。

所以江寒仔細思考了一番之後,還是決定採用“幾何形狀匹配”的思路來做圖像識別。

這種辦法的優點是識別速度比較快,更容易獲得高幀率。

編程的複雜度可能稍微高了一點,但這對江寒來說,並不是什麼太大的問題。

他先新建一個.CPP文件,以及對應的.h頭文件,然後創建一個新的類,用於容納自己的圖像識別算法。

接下來就可以正式編碼了。

江寒一邊思考,一邊編寫代碼,靳雪雯在一邊安靜地看着。

兩人偶爾也交流一兩句,討論一下編程思路、函數的功能之類的問題。

“江寒哥哥,這幾個語句是做什麼用的啊?”

“這個是圖像預處理,按照自定義的閾值,將每個像素二值化……”

“那江寒哥哥,這個函數呢?我有點看不懂……”

“哦,這個叫膨脹處理,可以讓圖像的輪廓更加明顯……”

……

二十多分鐘後,江寒搞定了圖像預處理的相關代碼。

這部分要做的事情很簡單,就是將攝像頭拍到的圖像,先處理成灰度圖,然後二值化,只留下LED燈部分。

接下來,要在圖像中遍歷像素、尋找LED燈的輪廓。

這是整個算法中計算量最大的部分。

好在江寒對圖片的預處理,做得相當到位,將這一步所消耗的時間,基本上壓縮到了極限。

找到LED燈後,下面的事情就簡單了,遍歷輪廓、提取LED燈,再匹配篩選、找到機體輪廓,然後就可以鎖定目標攻擊了。

在做機體輪廓分析時,江寒考慮了一下,使用了模板匹配技術。

這樣一來,就進一步減少了運算量,節省了時間。

到了這裡,目標識別就基本完成了。

接下來,就可以測算目標的方位和距離了。

這一步涉及到圖片座標系與大地座標系之間的換算,算法複雜度相當高。

但江寒豈是欺軟怕硬的人呢?

只要捨得腦力全開,肯定是搞得定的。

然而,這樣又有一個新問題,可別不等完成編碼,大腦的能量就消耗殆盡了。

那種空虛乏味的感覺,可是相當難受的……

所以江寒想了想,就笑眯眯地說:“小蚊子,可以拜託你一件事嗎?”

靳雪雯精神一振,摩拳擦掌地說:“江寒哥哥,快說、快說,是什麼事?”

自己閒了這麼久,總算可以派上點兒用場了……

江寒微微一笑,說:“幫我打個電話給前臺,要點宵夜。”

“沒問題!”靳雪雯脆生生地答應了一聲。

然後拿出手機,喜滋滋地問:“江寒哥哥,你想吃什麼呀?”

“冰島紅極參,問問哪裡有,然後讓前臺幫忙訂做兩盤,送到大廳來。”

“好的。”靳雪雯立即撥號。

江寒想了想,又補充說:“口味隨便,紅燒、清蒸無所謂……哦,對了,讓他們把點餐的錢加到我賬單裡。”

靳雪雯一擺手:“不用,你教我改程序,我還不知道怎麼感謝呢!

再說咱們戰隊剛剛成立,本隊長請吃個宵夜,也是應該的吧?”

江寒呵呵一笑:“小蚊子啊,你可能不太清楚,這種地方,一條紅極參只怕得7、8百塊。”

靳雪雯嘻嘻一笑:“沒事,讓爸爸買單就行了,他賺錢就是給我和媽媽花的嘛。”

江寒:“……”

有點無言以對的感覺。

眼前這一隻,莫非就是傳說中的富蘿莉?

畢竟有句話說得好,十個蘿莉九個富,還有一個……

靳雪雯很快安排完宵夜,然後繼續看江寒編程。

江寒接下來就開始編寫目標測算模塊。

靳雪雯原本使用的辦法,是直接用像素座標來計算旋轉角度。

這樣做倒也不是一定不行,但比較麻煩,而且效果也不會太好。

這是因爲像素座標差與角度之間,並不是線性關係,必須根據像素的座標,隨時矯正換算比例,才能得到一個不很精確的近似值。

江寒思考了一下,根據“小孔成像”的原理,設計了一個簡單而又巧妙的算法,通過像素座標算出了正確的轉角。

想要從圖像數據中得到物理世界的座標,需要先標定攝像頭,從而得到攝像頭的內參。

這一步可以使用OpenCV中的標定工具來做。

標定完攝像頭後,就能得到攝像頭的內參矩陣和畸變參數。

根據這兩組參數,對像素值的座標進行矯正,然後就可以通過反三角函數,來計算出需要的角度了。

寫完算法之後,江寒又設計了一個小實驗,對其進行了驗證。

實驗結果表明,這個算法完全OK,準確率和速度都優於靳雪雯原來的算法。

但這種算法也有一個相當明顯的缺陷,由於缺失了深度信息,因此無法對座標系進行變換操作。

這樣一來,就只能得到相對於攝像頭中心的轉角……

那麼如何解決深度的問題,得到三維座標呢?

江寒又設計了一種算法,通過求解PNP問題,來得到敵我雙方在真實空間中的座標偏移。

PNP問題,就是 Perspective N-Point Problem 。

江寒對這個算法不是十分熟悉,只知道可以用來處理空間定位問題。

所以,他先去網上找了幾篇文獻,仔細瀏覽,理解了原理之後,纔開始編寫自己的代碼。

首先標定攝像頭,得到相機的內參矩陣和畸變參數,然後測量物體的尺寸,得到物體在世界座標系中的座標。

接下來,從圖像中得到機體的像素座標,然後通過SolvePnP函數計算出平移向量,對座標進行平移操作。

最後再修正一下y軸和z軸的座標,就可以通過反三角函數,計算出所需要的角度值了。

這種算法可以得到物體在三維空間中的座標,缺點是需要計算四個點,而第一種算法,利用小孔成像的原理,只需要計算一個點就夠了。

兩種辦法各有優缺點,可以分情況,靈活運用。

當目標距離十分遙遠時,就用“小孔成像法”計算角度;距離合適的時候,則不妨切換成PNP法……

這樣一來,就能兼顧效率與精準了。

破費!

最後還有一件事,那就是目標動作預測。

第236章 意志堅強,沒有毛病第132章 做個小遊戲第175章 一億一個第86章 蘇婉瑩的預測第166章 意外的變化第155章 到底什麼關係?第173章 磨刀不誤砍柴工第54章 專利第176章 現學現賣第58章 作報告?第241章 學習改變命運第26章 週一凡的震驚第211章 就當幫他們改進一下服務質量了第196章 背黑鍋我來第204章 是男人就餵飽她第80章 碰碰船和真人CS第360章 造了什麼孽?第392章 深度卷積神經網絡第236章 意志堅強,沒有毛病第234章 恐高症第133章 過去的自己,以及自己的過去第195章 二八佳人體如酥第6章 三個系統倒有四種資源?第157章 找個清靜的地方第217章 超級粉絲第373章 肉體永生,還是機械飛昇?第65章 論文過審第402章 讀書之樂,臨行之前第219章 點到爲止第312章 阱中有坑,坑裡有釘第138章 避蚊胺,登山第291章 驚動了各路神仙第376章 很像一臺成熟的計算機了第90章 衣進爵的戰役第160章 只能看到文章本身第13章 “感知機”和“M-P模型”第248章 需要對答案嗎?第126章 八樓的直升飛機第28章 老宋的算盤第343章 差之毫釐,謬以千里第208章 有埋伏第34章 遊戲發佈第236章 意志堅強,沒有毛病第126章 八樓的直升飛機第263章 一切都在算計中第338章 脫胎換骨,戰神軍團第268章 最終版本第183章 成功的路上沒有僥倖第290章 其實已經有點過時了第186章 有我七成功力了第184章 眼神這麼好使的嗎?第158章 查崗?第188章 金風玉露一相逢第194章 睡不着怎麼辦?第219章 點到爲止第38章 賣歌第292章 江寒的靈氣與編程之道第228章 恐怖如斯第19章 一切爲了押韻第315章 故伎重施第279章 一舉成名天下知第24章 投稿AMC第411章 不可不防,防不勝防第22章 名偵探婉瑩第308章 敬可愛又無常的命運第417章 江寒的圍棋水平第259章 江寒的秘奧義第382章 電動車和機械臂第276章 丟1分和拿滿分,哪個更難?第288章 合理避稅第254章 數據解析和FCN的拓撲結構第358章 27個學術點第255章 調整超參數,以及防止過擬合第349章 說錯了什麼?第150章 全+1!第361章 有點像“年輕”時的自己第7章 所謂“取整”,就是……第340章 實力還是運氣?第5章 三個系統準備就緒第207章 複賽環境和Arbiter評測系統第211章 就當幫他們改進一下服務質量了第281章 當場搶人第345章 意外連連第172章 誰是誰的小糖人?第42章 P站阿婆主第236章 意志堅強,沒有毛病第400章 不可逾越的高山第155章 到底什麼關係?第218章 爲人實在,夠給面子第428章 Hack Me的獎品第160章 只能看到文章本身第296章 攪動風雲第292章 江寒的靈氣與編程之道第80章 碰碰船和真人CS第264章 不知人間疾苦第271章 破壞永遠比建設更容易第65章 論文過審第58章 作報告?第100章 談判
第236章 意志堅強,沒有毛病第132章 做個小遊戲第175章 一億一個第86章 蘇婉瑩的預測第166章 意外的變化第155章 到底什麼關係?第173章 磨刀不誤砍柴工第54章 專利第176章 現學現賣第58章 作報告?第241章 學習改變命運第26章 週一凡的震驚第211章 就當幫他們改進一下服務質量了第196章 背黑鍋我來第204章 是男人就餵飽她第80章 碰碰船和真人CS第360章 造了什麼孽?第392章 深度卷積神經網絡第236章 意志堅強,沒有毛病第234章 恐高症第133章 過去的自己,以及自己的過去第195章 二八佳人體如酥第6章 三個系統倒有四種資源?第157章 找個清靜的地方第217章 超級粉絲第373章 肉體永生,還是機械飛昇?第65章 論文過審第402章 讀書之樂,臨行之前第219章 點到爲止第312章 阱中有坑,坑裡有釘第138章 避蚊胺,登山第291章 驚動了各路神仙第376章 很像一臺成熟的計算機了第90章 衣進爵的戰役第160章 只能看到文章本身第13章 “感知機”和“M-P模型”第248章 需要對答案嗎?第126章 八樓的直升飛機第28章 老宋的算盤第343章 差之毫釐,謬以千里第208章 有埋伏第34章 遊戲發佈第236章 意志堅強,沒有毛病第126章 八樓的直升飛機第263章 一切都在算計中第338章 脫胎換骨,戰神軍團第268章 最終版本第183章 成功的路上沒有僥倖第290章 其實已經有點過時了第186章 有我七成功力了第184章 眼神這麼好使的嗎?第158章 查崗?第188章 金風玉露一相逢第194章 睡不着怎麼辦?第219章 點到爲止第38章 賣歌第292章 江寒的靈氣與編程之道第228章 恐怖如斯第19章 一切爲了押韻第315章 故伎重施第279章 一舉成名天下知第24章 投稿AMC第411章 不可不防,防不勝防第22章 名偵探婉瑩第308章 敬可愛又無常的命運第417章 江寒的圍棋水平第259章 江寒的秘奧義第382章 電動車和機械臂第276章 丟1分和拿滿分,哪個更難?第288章 合理避稅第254章 數據解析和FCN的拓撲結構第358章 27個學術點第255章 調整超參數,以及防止過擬合第349章 說錯了什麼?第150章 全+1!第361章 有點像“年輕”時的自己第7章 所謂“取整”,就是……第340章 實力還是運氣?第5章 三個系統準備就緒第207章 複賽環境和Arbiter評測系統第211章 就當幫他們改進一下服務質量了第281章 當場搶人第345章 意外連連第172章 誰是誰的小糖人?第42章 P站阿婆主第236章 意志堅強,沒有毛病第400章 不可逾越的高山第155章 到底什麼關係?第218章 爲人實在,夠給面子第428章 Hack Me的獎品第160章 只能看到文章本身第296章 攪動風雲第292章 江寒的靈氣與編程之道第80章 碰碰船和真人CS第264章 不知人間疾苦第271章 破壞永遠比建設更容易第65章 論文過審第58章 作報告?第100章 談判