首頁







玄幻奇幻 都市言情 武俠仙俠 軍事歷史 網游競技 科幻靈異 二次元 收藏夾
  • 放肆文學 » 網游競技 » 重生學神有系統» 第330章 小孔成像和PNP問題
  • 熱門作品最新上架全本小說閱讀紀錄

    重生學神有系統 - 第330章 小孔成像和PNP問題字體大小: A+
     

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ……

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    江寒:“……”

    有點無言以對的感覺。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    破費!

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



    上一頁 ←    → 下一頁

    風流小農民後來偏偏喜歡你大宋的智慧翻窗做案:老公手下留情都市特種兵之暗影
    殭屍保鏢鳳囚凰遮天贅婿重生影后小軍嫂