當前位置: 每日小說 玄幻奇幻 重生學神有系統 第330章 小孔成像和PNP問題

《重生學神有系統》 第330章 小孔成像和PNP問題

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Advertisement

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

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

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

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

……

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

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

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

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

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

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

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

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

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

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

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

但江寒豈是欺的人呢?

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

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

Advertisement

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

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

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

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

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

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

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

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

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

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

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

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

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

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

江寒:“……”

有點無言以對的覺。

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

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

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

Advertisement

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

破費!

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

猜你喜歡

分享

複製如下連結,分享給好友、附近的人、Facebook的朋友吧!
複製鏈接

問題反饋

反饋類型
正在閱讀: