1. 程式人生 > >單目視覺定位測距的兩種方式

單目視覺定位測距的兩種方式

  單目定位和雙目定位的選擇,我覺得主要還是成本和時間的考慮。之前也嘗試過雙目定位,感覺要更精準些,但雙目測距需要對兩幅影象進行影象變換和極線匹配,稍微耗時了一些。這幾天嘗試了一下單攝像頭進行測距定位,主要有兩個思路:
  1.定位測量插值得到每個畫素的實際座標  
  該方法總覺得有很大的問題:一個是攝像頭安裝後就必須固定不動,稍微的旋轉都會導致之間測量的畫素點對應的座標偏移。另一個是人工測量的工程量之大,對於1024*1280畫素的攝像頭,準確的測量就應該是130萬個點,而就算我們按米來分割地面,10*20m2的地面也要測量200個點,就算可以通過演算法自動識別,做200個標誌就算測量畫線也是令人頭疼的。考慮到針孔成像模型的等比例放大,我們通過直接列印佈滿等距陣列圓點的紙來進行測量。
  其原理如下:
        幾何


  根據相似三角形的等比例關係,有:

EGBD=AGAD 

GFDC=AGAD 
   
  同時又有:
EGEB=AEAB 
  
  通過等式傳遞有:
EGBD=GFDC=AEAB 
  

  如此一來,可以在較高距離測量等距陣列點(如標定板),經過插值,再進行等比例放大即可得到每個畫素點對應的實際地面的座標。
  
  處理的示意圖如下:


幾何

  這樣操作可以省去人工在地面測量繪畫標誌。測量好紙上的點距後再進行H/h的放大就可以得到畫素對應實際地面的座標。但實際操作過程中遇到的問題是影象上邊緣的梯形失真過於嚴重,導致列印紙上的標誌點不容易識別,因此還需要準備不同距離的等距陣列圓點圖。

  2.根據相似三角比例計算出對應畫素點的實際座標  
  這個方法對攝像機標定的要求比較高,同時要求鏡頭本身造成的畸變就比較小,但總體來說這種方法的可移植性和實用性都較強。其主要的思路還是小孔成像的模型。
   模型一:假設測量的點都在Y軸上,此時無X軸分量  
這裡寫圖片描述
  該圖主要有三個座標系,分別是影象座標系UO1V,以O2為原點的攝像機座標系,世界座標系XO3Y。(相關的內容我就不復述了,不懂的百度和知乎上都有,搜搜相機標定的知識)
  我們可以看到,世界座標中的點通過光軸成像在影象座標的點是成比例的,其比例媒介就是相機鏡頭中心在影象上的畫素點O1與其在世界座標中的實際點M,通過推導可以求解O

3P的長度。(注意,由於相機安裝一般都有誤差,所以鏡頭中心點不一定是影象的中點,所以ucenter,vcenter不一定為0) 

  一步步推導如下:
  已知量:攝像機高度H
      影象座標中心對應的世界座標點與攝像頭在y軸上的距離O3M
      鏡頭中心點的影象座標(ucentervcenter)
      測量畫素點的影象座標P1(u0      
      實際畫素的長度xpix
      實際畫素的寬度ypix。
      攝像頭焦距f
      (鏡頭中心點影象座標,焦距,畫素長寬都可以由標定直接求解出來,通過halcon的標定助手可以很容易的得到,openCV也有相應的程式)
      α=arctan(HO3M)

      γ=arctan(O1P1×ypixf)=(vvcenter)ypixf

      β=αγ

      O3P=Htan(β)
  
  這樣就可以得到垂直方向的座標 Y=O3P
  
   模型二:假設測量的點有X軸、Y軸分量  

  針對以下模型圖我們將進行說明:
這裡寫圖片描述
  一步步推導如下:
  已知量:攝像機高度H
      影象座標中心對應的世界座標點與攝像頭在y軸上的距離O3M
      鏡頭中心點的影象座標O1(ucentervcenter)
      測量畫素點的影象座標P1(u0Q1uv      
      實際畫素的長度xpix
      實際畫素的寬度ypix
      攝像頭焦距f
(y軸方向計算和上一個模型相同,x軸計算是y軸座標通過比例計算得到)
      α=arctan(HO3M)

      γ=arctan(O1P1×ypixf)=(vvcenter)ypixf

      β=αγ

      O3P=Ht

相關推薦

視覺定位測距方式

  單目定位和雙目定位的選擇,我覺得主要還是成本和時間的考慮。之前也嘗試過雙目定位,感覺要更精準些,但雙目測距需要對兩幅影象進行影象變換和極線匹配,稍微耗時了一些。這幾天嘗試了一下單攝像頭進行測距定位,主要有兩個思路:   1.定位測量插值得到每個畫素的實際

瀏覽器原生 form 表POST 數據的方式

mes 但是 lba lose -s ipa mvm 默認 字串 我們在提交表單的時候,form表單參數中會有一個enctype的參數。enctype指定了HTTP請求的Content-Type。 常用有兩種:application/x-www-form-urlencod

配置Spring項上傳的方式(全解析)

enc element xml配置 很多 files dir 前言 name 兩種 歡迎查看Java開發之上帝之眼系列教程,如果您正在為Java後端龐大的體系所困擾,如果您正在為各種繁出不窮的技術和各種框架所迷茫,那麽本系列文章將帶您窺探Java龐大的體系。本系列教程希望

iText G (Android)PDF文字定位書寫方式介紹

閒言少敘,直接進入話題(相關基礎知識不瞭解,請使用百度之類惡補),有不當之處,請高人批准指正。。 方法一(絕對定位),參考形如: PdfContentByte pdfContentByte = pdfWriter.getDirectContent(); Base

例模式(java方式實現)

//測試類 public class SingletonTest1 { public static void main(String[] args) { //檢驗產生的例項是否是同一個例項 Singleton s

OpenCV視覺定位(測量)系統(新增 含程式碼)

OpenCV單目視覺定位(測量)系統 The System of Vision Location with Signal Camera Abstract:This passage mainly describes how to locate with signalcame

form表提交的方式

btn border 前端 () input onclick sub 輸入 判斷 1.當輸入用戶名和密碼為空的時候,需要判斷。這時候就用到了校驗用戶名和密碼,這個需要在jsp的前端頁面寫;有兩種方法,一種是用submit提交。一種是用button提交。方法一:在jsp的前端

讀取數據庫配置信息的方式(以後開發項用java鏈接數據庫)-------java基礎知識

dmi 信息 bsp lock 開發 res port src font 第一步:先建立jdbc.properties 1 user=root 2 password=123456 3 url=mysql:jdbc://localhost:3306/yanlong 4 d

form表中get和post提交方式的區別

name bsp inpu get div post input 普通 表單 一、form表單中get和post兩種提交方式的區別?   1.get提交表單中的內容在鏈接處是可見的。post不可見   2.post相比於get是安全的   3.post不收限制大小,get有

JavaWeb後臺從input表獲取文本值的方式

out script body throws ioe spa ava set action JavaWeb後臺從input表單獲取文本值的兩種方式 #### index.html <!DOCTYPE html> <html

python 視覺測距

# import the necessary packages import numpy as np  import cv2 import sys reload(sys) sys.setdefaultencoding('utf8') cap = cv2.VideoCaptu

springboot項啟動成功後執行一段代碼的方式

參數 註解 etime mman pac cycle net org 啟動 springboot項目啟動成功後執行一段代碼的兩種方式 實現ApplicationRunner接口 package com.lnjecit.lifecycle; import

基於視覺的移動機器人室內定位與運動目標跟蹤

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Axios傳參的方式,表資料和json字串(Form Data和Request Payload)

第一種方式:Form Data Axios引數配置: 1、引入 import Qs from 'qs' 2、 return request({ headers: { 'Content-Type': 'application/x-www-form-

Node.js —— 方式傳送頁面

1、安裝socket.io和express和生成package.json npm install socket.io --save npm install --save express nam init 2、app.js const express = re

zTree實現樹節點選的方式

方式一:利用setting配置來實現單選按鈕功能         原理:取消父子節點聯動,設定節點的選擇框為radio單選框。    程式碼設定:     var setting = { ...... check: {

提交的方式submit,onsubmit(當滿足條件之後才提交)

在form標籤設定onsubmit屬性,當return true之後才提交: <%@ page language="java" contentType="text/html; charset=U

不同VLAN之間相互通訊的方式臂路由、三層交換)

2、將PC5和PC6分別連線到交換機SW3的f0/6和f0/1上,然後配置PC5的IP地址為192.168.2.1/24,閘道器為192.168.2.254。PC6的IP地址為192.168.1.1,閘道器為192.168.1.254。然後用PC5 ping PC6,看是否能ping通。

js form表傳送資料方式(post get)區別

<!DOCTYPE HTML> <html> <head> <title>please enter your title</

不同VLAN之間相互通訊的方式臂路由、三層交換)

2、將PC5和PC6分別連線到交換機SW3的f0/6和f0/1上,然後配置PC5的IP地址為192.168.2.1/24,閘道器為192.168.2.254。PC6的IP地址為192.168.1.1,閘道器為192.168.1.254。然後用PC5 ping PC6,看是否能ping通。