<form id="3hdj5"></form>

<form id="3hdj5"></form>

        <noframes id="3hdj5"><form id="3hdj5"><nobr id="3hdj5"></nobr></form>

          <form id="3hdj5"></form>

          <noframes id="3hdj5">

          基于C++的車輛裝甲板檢測自瞄系統

          資源下載地址:https://download.csdn.net/download/sheziqiong/85773209
          資源下載地址:https://download.csdn.net/download/sheziqiong/85773209

          裝甲板檢測

          由于在比賽過程中操作手是第一視角,很難用手動瞄準。通過裝甲板檢測就是自瞄系統,己方車輛可自動瞄準敵方車輛裝甲板,對敵方造成有效的傷害。大大提高了射擊精準度。

          功能:檢測裝甲板的位置并把位置發送給電控

          • 在目標旋轉時保證目標的位置的穩定性
          • 系統延時盡可能短
          • 在多目標時,保證打擊的一致性

          整體架構

          文件描述

          文件名作用
          main.cpp算法主函數,包括多線程處理步驟
          caffe_model.cpp自己訓練的裝甲板貼紙分類模型
          cctag_detector.cpp老版圓形貼紙識別圓形的方法
          coordinate_process.cpp根據通信協議對最終左邊進行處理的方法
          detector_methods.cpp裝甲板檢測的主要方法(包括預處理,邏輯判斷等)
          serialport.cppLinux 下串口使用的文件
          v4l2.cppLinux 下利用 V4L2 來調節攝像頭的曝光飽和度等參數。

          裝甲板檢測流程圖

          基本原理

          1. 如果上一幀的 ROI 標志位為 true 則當前幀的檢測區域在上一幀目標的附近,也就是用到了 ROl 方法,如果為 false 則全圖搜索,此時將與 ROI 有關的變量全部清零。
          2. 對檢測區域內的圖進行二值化,也就是預處理,思路就是先將圖片用灰度閾值進行二值化,這樣子可以將圖片中發光的物體給提取出來(裝甲板燈條以及日光燈等等),然后再用某種方法將圖片中紅色或藍色的區域提取出來,之后再膨脹腐蝕用形態學的方法連通斷開的區域,使燈條的形狀更加清晰以便于之后的邏輯判斷。
            • 一種方法是用 RGB 的紅藍通道相減,根據設定的閾值得到一張二值圖,這種方法雖好,但是在識別藍色的時候,有時候無法排除掉日光燈干擾,該方法,操作簡潔,耗時低。
            • 另一種是先將圖片轉化成 HSV 顏色空間再用通道范圍將紅色藍色提取出來,這種方法可以排除掉很多干擾,但是近距離的時候裝甲板燈條發白,如果膨脹不到位的話會出現燈條斷裂的 情況,膨脹的卷積核過大又會造成預處理耗時過久,因此要權衡一下。
            • 還有一種是在 LAB 下利用 a 通道-b 通道來提取紅色。這種方法對紅色燈條提取的效果是最好的。但是卻極容易把比較暗的,有一點帶暗紅色的物體都提取出來,容易形成過多的早點。

          3.在當前二值圖內找到所有的輪廓點,用最小旋轉矩形將他們包圍,此時得到一個個單獨的旋轉矩形,然后對旋轉矩形的四個頂點重新排序,排除長大于寬的噪點,然后根據裝甲板燈條的幾何特征首先篩除掉一些旋轉矩形。

           if((width/height)>2&&abs(angle)>25&&abs(angle)<70&&){continue;}
          

          4.將這些燈條兩兩再次組成一個大的旋轉矩形(也就是候選裝甲板),根據一些限制條件篩除掉不符合條件的裝甲板,將剩下的待選裝甲板放入一個向量中。

          //兩兩燈條間的角度差不符合的情況
          if((abs(angle_1)>5&&abs(angle_1)<20)&&(abs(angle_2)>65&&abs(angle_2)<85)&&((abs(angle_2)>5&&abs(angle_2)<20)&&(abs(angle_1)>65&&abs(angle_1)<85))){
          continue;}
          
          //中心距根據燈條的長短分開設置
          if(height_1<20||height_2<20){
              cha=10;}
          else{
              cha=20;}
          //進一步根據兩條燈條的中心距和燈條面積比例等條件進一步篩選
          //一下條件參數是根據640,480分辨率下設定的,不同分辨率條件值可能不一樣
          if(lantern_cha<cha&&(area_rate>rate2&&area_rate<rate1)) 
          {
          	double diameter=sqrt(pow(rectPoint[original_index_i].center.x-			rectPoint[original_index_j].center.x,2)+pow(rectPoint[original_index_i].center.y-rectPoint[original_index_j].center.y,2));
              if(diameter<35){continue;}
              //cout<<"d: "<<diameter<<endl;
          
              double average_height=(height_1+height_2)*0.5;
              cout<<"h: "<<average_height<<endl;
              double  bili=average_height/diameter;
              if(bili>0.8&&bili<1.8){continue;}
              if((diameter/average_height>2.5&&diameter/average_height<6)||(diameter/average_height>0.3&&diameter/average_height<2.5)){
                  Point armour_center=(rectPoint[original_index_i].center+rectPoint[original_index_j].center)*0.5;
                  circle(imgOriginal,armour_center,diameter/2,Scalar(0,255,255),1);//紫色
                  Vec3f armour_message(armour_center.x,armour_center.y,diameter);
                  armour.push_back(armour_message);
              }
          }
          
          1. 經過上述操作后,我們最終把篩選出來的裝甲板存入 amour 向量中。

            • 如果向量中沒有元素,則說明沒有找到目標,只有一個的話則這就是最終選擇的裝甲板。(只有一個裝甲板的情況下不再進一步判斷裝甲板的真實性,及不再傳入用裝甲板訓練的模型。這樣做能保證目標的穩定性和代碼的效率)
            • 兩個以上裝夾板的話就得進行接下去的比較,首先我們把距離圖像下半部分及比較近的裝甲板存為一組,然后從最近的開始用 caffe 模型進行驗證。如果模型給出這個為真,則直接輸出。

          資源下載地址:https://download.csdn.net/download/sheziqiong/85773209
          資源下載地址:https://download.csdn.net/download/sheziqiong/85773209

          評論 5 您還未登錄,請先 登錄 后發表或查看評論

          “相關推薦”對你有幫助么?

          • 非常沒幫助
          • 沒幫助
          • 一般
          • 有幫助
          • 非常有幫助
          提交
          ??2022 CSDN 皮膚主題:大白 設計師:CSDN官方博客 返回首頁

          打賞作者

          biyezuopin

          你的鼓勵將是我創作的最大動力

          ¥2 ¥4 ¥6 ¥10 ¥20
          輸入1-500的整數
          余額支付 (余額:-- )
          掃碼支付
          掃碼支付:¥2
          獲取中
          掃碼支付

          您的余額不足,請更換掃碼支付或充值

          打賞作者

          實付
          使用余額支付
          點擊重新獲取
          掃碼支付
          錢包余額 0

          抵扣說明:

          1.余額是錢包充值的虛擬貨幣,按照1:1的比例進行支付金額的抵扣。
          2.余額無法直接購買下載,可以購買VIP、C幣套餐、付費專欄及課程。

          余額充值
          狠狠激情五月丁香免费视频