前言
在近一年的AVM算法開發(fā)工作中,魚眼相機(jī)去畸變的玩法前前后后基本過了個遍。從最開始的調(diào)用Opencv API,到后來由于算法需要自己實(shí)現(xiàn)、正向的undis2fish、反向的fish2undis、魚眼上檢測、undis上標(biāo)定,總之遇到很多坑,還好都解決了。正好最近有同學(xué)在AVM的帖子下面問這個東西的實(shí)現(xiàn),今天在這里討論一下。本帖從魚眼相機(jī)模型開始講起,包含Opencv API調(diào)參、基于畸變表的參數(shù)擬合、魚眼相機(jī)去畸變算法原理和C++實(shí)現(xiàn)。1. 魚眼相機(jī)基礎(chǔ)
1.1 魚眼相機(jī)模型
![b3bca714-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlCWAMgBVAAGHt7fBXVk097.png)
![b3d3824a-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlCWAVBEeAAJHFdV8Vnc076.png)
![b3f6ec26-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlCWALXAWAAAQPO9Prz0392.png)
1.2 基于畸變表的擬合方法
每個相機(jī)都有它固定的相機(jī)參數(shù),包含內(nèi)參、畸變系數(shù)。可以使用特定的相機(jī)標(biāo)定方法,得到這些相機(jī)參數(shù)。通常,我們可以使用相機(jī)在不同位置、不同角度對著標(biāo)定板拍攝幾十張照片,然后用某種優(yōu)化方法,計(jì)算出相機(jī)參數(shù)的最優(yōu)解,例如張正友棋盤格標(biāo)定法。然而,基于標(biāo)定板的方法標(biāo)定出的結(jié)果取決于光照是否充足、圖像序列是否充足、全部的標(biāo)定板序列是否能夠充滿整個圖像幅面等因素。也就是說汽車標(biāo)定的過程中需要人工擺放標(biāo)定板的位置,指望算法工程師將產(chǎn)線上的工人培訓(xùn)得和他們一樣專業(yè)顯然不現(xiàn)實(shí)。大部分標(biāo)定車間都是車開到標(biāo)定場中間,十幾秒標(biāo)定出AVM系統(tǒng)所需要的參數(shù),主要是4個魚眼相機(jī)的外參,而非相機(jī)本身的參數(shù)(內(nèi)參、畸變系數(shù))。大概幾十秒搞定一輛車,不可能有人工標(biāo)定相機(jī)內(nèi)參的過程。好在相機(jī)在出廠時廠家一般都會提供相機(jī)的必要參數(shù)- 內(nèi)參
![b4071e48-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlCWAFWAVAABxTLDMEUg349.png)
- 畸變表:
![b41866c6-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlCWAf2jHAAFpdBC86LU895.png)
- opencv Kannala-Brandt相機(jī)畸變模型描述的是光線的入射角與其經(jīng)過折射后在相機(jī)歸一化平面上的投影點(diǎn)距離歸一化平面中心的距離r
- 畸變表描述的是光線的入射角與其經(jīng)過折射后在相機(jī)的真實(shí)的成像平面上的投影點(diǎn)距離成像中心的距離r
![b42f3c84-e379-11ed-ab56-dac502259ad0.png](http://www.zgszdi.cn/images/chaijie_default.png)
theta_input=data[:,0]*3.14/180 theta_fit=np.arctan(self.data[:,1]/0.95)#focal_lenth=0.95 distort_data,_=curve_fit(func1,theta_input,theta_fit) 綜上,我們通過曲線擬合的方法得到了畸變參數(shù)。
2 Opencv API 魚眼圖像去畸變方法
Opencv提供了基于Kannala-Brandt數(shù)學(xué)模型的魚眼去畸變方法: cv::initUndistortRectifyMap,該函數(shù)使用相機(jī)的內(nèi)參和畸變參數(shù)計(jì)算出映射圖mapx和mapy。2.1 基礎(chǔ)魚眼圖像去畸變
其中入?yún)?strong>K為魚眼相機(jī)內(nèi)參,D為,,, 畸變參數(shù),R我們一般設(shè)置為單位陣,P為去畸變圖像的相機(jī)內(nèi)參,size為輸出圖像的大小;map1,map2為輸出的映射圖。@paramKCameraintrinsicmatrixf$cameramatrix{K}f$. @paramDInputvectorofdistortioncoefficientsf$distcoeffsfisheyef$. @paramRRectificationtransformationintheobjectspace:3x31-channel,orvector:3x1/1x3 1-channelor1x13-channel @paramPNewcameraintrinsicmatrix(3x3)ornewprojectionmatrix(3x4) @paramsizeUndistortedimagesize. @paramm1typeTypeofthefirstoutputmapthatcanbeCV_32FC1orCV_16SC2.SeeconvertMaps() fordetails. @parammap1Thefirstoutputmap. @parammap2Thesecondoutputmap. */ CV_EXPORTS_WvoidinitUndistortRectifyMap(InputArrayK,InputArrayD,InputArrayR,InputArrayP, constcv::Size&size,intm1type,OutputArraymap1,OutputArraymap2); 相機(jī)內(nèi)參矩陣表示如下,其中 表示相機(jī)焦距 f 與相機(jī)cmos參數(shù) 的比值,這個 的物理意義為每個像素的實(shí)際長度,單位可以是mm/像素。 表示相機(jī)主點(diǎn),即光心與圖像平面相交的坐標(biāo),單位為像素。
![b43ed7b6-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlC-AZesaAAAjaXci9d0779.png)
cv::MatR=cv::eye(3,3,CV_32F); cv::Matmapx_open,mapy_open; cv::Matintrinsic_undis; fish_intrinsic.copyTo(intrinsic_undis); //intrinsic_undis.at<float>(0,2)*=2; //intrinsic_undis.at<float>(1,2)*=2; cv::initUndistortRectifyMap( fish_intrinsic,m_undis2fish_params,R,intrinsic_undis, cv::Size(intrinsic_undis.at<float>(0,2)*2, intrinsic_undis.at<float>(1,2)*2), CV_32FC1,mapx_open,mapy_open); cv::Mattest; cv::remap(disImg[3],test,mapx_open,mapy_open,cv::INTER_LINEAR);
![b45164bc-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDCAeLhFAALzjsa5FPk695.png)
2.2 相機(jī)主點(diǎn)參數(shù)調(diào)節(jié)
我們發(fā)現(xiàn),上圖中右側(cè)去畸變之后雖然圖像幅面大小與魚眼圖相同都是1280*960,但是可視范圍變得很小。標(biāo)定所需要的大方格沒有包含進(jìn)來。因此,需要進(jìn)一步調(diào)參,下面代碼中將去畸變之后圖像相機(jī)參數(shù)中的主點(diǎn) , 擴(kuò)大為原來的兩倍,且initUndistortRectifyMap函數(shù)輸出的去畸變圖像大小size是與去畸變之后圖像相機(jī)參數(shù)主點(diǎn)相關(guān)的,也就是圖像大小同樣跟著放大了兩倍。記住一點(diǎn):initUndistortRectifyMap函數(shù)中的size參數(shù)一般都是與去畸變之后圖像的相機(jī)參數(shù)中主點(diǎn)大小強(qiáng)相關(guān)的。這一點(diǎn)在后面C++代碼手撕算法流程時候會提到。cv::MatR=cv::eye(3,3,CV_32F); cv::Matmapx_open,mapy_open; cv::Matintrinsic_undis; fish_intrinsic.copyTo(intrinsic_undis); intrinsic_undis.at<float>(0,2)*=2; intrinsic_undis.at<float>(1,2)*=2; cv::initUndistortRectifyMap( fish_intrinsic,m_undis2fish_params,R,intrinsic_undis, cv::Size(intrinsic_undis.at<float>(0,2)*2, intrinsic_undis.at<float>(1,2)*2), CV_32FC1,mapx_open,mapy_open); cv::Mattest; cv::remap(disImg[3],test,mapx_open,mapy_open,cv::INTER_LINEAR);
![b48007a4-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDCAfuegAANBdp6nJHA478.png)
cv::MatR=cv::eye(3,3,CV_32F); cv::Matmapx_open,mapy_open; cv::Matintrinsic_undis; fish_intrinsic.copyTo(intrinsic_undis); intrinsic_undis.at<float>(0,2)*=4; intrinsic_undis.at<float>(1,2)*=4; cv::initUndistortRectifyMap( fish_intrinsic,m_undis2fish_params,R,intrinsic_undis, cv::Size(intrinsic_undis.at<float>(0,2)*2, intrinsic_undis.at<float>(1,2)*2), CV_32FC1,mapx_open,mapy_open); cv::Mattest; cv::remap(disImg[3],test,mapx_open,mapy_open,cv::INTER_LINEAR);
![b4a3707c-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDCAXSSPAAOEXMd2GXU195.png)
2.3 相機(jī)f參數(shù)調(diào)節(jié)
到目前位置,我們只討論了相機(jī)參數(shù)中主點(diǎn)的調(diào)參,想要解決上述問題還需要調(diào)整相機(jī)的 ,先不說理論,直接看調(diào)參結(jié)果,這里我們代碼中只調(diào)整了去畸變圖像相機(jī)參數(shù)中的,使它們縮小為原來的1/4。cv::MatR=cv::eye(3,3,CV_32F); cv::Matmapx_open,mapy_open; cv::Matintrinsic_undis; fish_intrinsic.copyTo(intrinsic_undis); intrinsic_undis.at<float>(0,0)/=4; intrinsic_undis.at<float>(1,1)/=4; /*intrinsic_undis.at<float>(0,2)*=4; intrinsic_undis.at<float>(1,2)*=4;*/ cv::initUndistortRectifyMap( fish_intrinsic,m_undis2fish_params,R,intrinsic_undis, cv::Size(intrinsic_undis.at<float>(0,2)*2, intrinsic_undis.at<float>(1,2)*2), CV_32FC1,mapx_open,mapy_open); cv::Mattest; cv::remap(disImg[3],test,mapx_open,mapy_open,cv::INTER_LINEAR);
![b4bd8e76-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDCATvCBAANhE5Hu02Y116.png)
3 魚眼去畸變算法及其實(shí)現(xiàn)
![b4f83030-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDCAFUl7AAIoiWVv3B0631.png)
/* func:warpfromdistorttoundistort @paramf_dx:f/dx @paramf_dy:f/dy @paramlarge_center_h:undisimagecentery @paramlarge_center_w:undisimagecenterx @paramfish_center_h:fishimagecentery @paramfish_center_w:fishimagecenterx @paramundis_param:factoryparam @paramx:inputcoordinatexontheundisimage @paramy:inputcoordinateyontheundisimage */ cv::Vec2fwarpUndist2Fisheye(floatfish_scale,floatf_dx,floatf_dy,floatlarge_center_h, floatlarge_center_w,floatfish_center_h, floatfish_center_w,cv::Vec4dundis_param,floatx, floaty){ f_dx*=fish_scale; f_dy*=fish_scale; floaty_=(y-large_center_h)/f_dy;//normalizedplane floatx_=(x-large_center_w)/f_dx; floatr_=static_cast<float>(sqrt(pow(x_,2)+pow(y_,2))); //Lookuptable /*intnum=atan(r_)/atan(m_d)*1024; floatangle_distorted=m_Lut[num];*/ floatangle_undistorted=atan(r_);//theta floatangle_undistorted_p2=angle_undistorted*angle_undistorted; floatangle_undistorted_p3=angle_undistorted_p2*angle_undistorted; floatangle_undistorted_p5=angle_undistorted_p2*angle_undistorted_p3; floatangle_undistorted_p7=angle_undistorted_p2*angle_undistorted_p5; floatangle_undistorted_p9=angle_undistorted_p2*angle_undistorted_p7; floatangle_distorted=static_cast<float>(angle_undistorted+ undis_param[0]*angle_undistorted_p3+ undis_param[1]*angle_undistorted_p5+ undis_param[2]*angle_undistorted_p7+ undis_param[3]*angle_undistorted_p9); //scale floatscale=angle_distorted/(r_+0.00001f);//scale=r_disonthecameraimgplane //divider_undisonthenormalizedplane cv::Vec2fwarp_xy; floatxx=(x-large_center_w)/fish_scale; floatyy=(y-large_center_h)/fish_scale; warpPointOpencv(warp_xy,fish_center_h,fish_center_w,xx,yy,scale); returnwarp_xy; } voidwarpPointOpencv(cv::Vec2f&warp_xy,floatmap_center_h,floatmap_center_w, floatx_,floaty_,floatscale){ warp_xy[0]=x_*scale+map_center_w; warp_xy[1]=y_*scale+map_center_h; } 針對上述代碼,我們由淺入深地講述算法流程
3.1 基礎(chǔ)的魚眼去畸變(主點(diǎn)相關(guān))
![b3bca714-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlCWAMgBVAAGHt7fBXVk097.png)
- 首先,對于圖像平面上的像素點(diǎn),要用相機(jī)的內(nèi)參f、dx、dy,將其轉(zhuǎn)化到歸一化平面,對應(yīng)上圖中的e點(diǎn)。并計(jì)算其距離歸一化平面中心的距離r_。并計(jì)算對應(yīng)的入射角,即上圖中的 theta角
- 根據(jù)Kannala-Brandt的魚眼模型公式,使用事先擬合的k1,k2,k3,k4參數(shù)計(jì)算歸一化平面上去畸變之后點(diǎn)的位置r_distorted
- 在歸一化平面上計(jì)算去畸變前后點(diǎn)位置的比值:r_distorted/r_
- 3中計(jì)算的比值為歸一化平面上,同樣可以應(yīng)用到相機(jī)成像平面以及圖像平面上。因此,可以對圖像平面上的像素點(diǎn),乘上這個系數(shù),就得到了魚眼圖上像素點(diǎn)的位置。
![b537bd22-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDCAKiTgAACQq9cm0x0441.png)
![b555ada0-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDCAGr2mAABeQyCb26U923.png)
![b56b8486-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDGAZaIRAAISvsx_t0I809.png)
3.2 進(jìn)階的 魚眼去畸變(如何調(diào)整f)
正如第2節(jié)所說,我們需要在很小的圖像上呈現(xiàn)出大方格。這就需要調(diào)整f,這個過程不太容易理解,我們畫個圖來理解一下:![b589ad62-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDGAKTHoAAH_zxCRe1g033.png)
![b5a51f3e-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDGAYY7UAAEiP02jeU4063.png)
- 將相機(jī)焦距調(diào)整為 f/2 后,使用新的焦距將 點(diǎn)轉(zhuǎn)換到歸一化平面上去,得到
- 使用去畸變參數(shù) ,,, 計(jì)算其畸變狀態(tài)下在歸一化平面上的位置
- 使用前兩步的結(jié)果,計(jì)算去畸變前后線段的長度比例scale
- 根據(jù)已知的 與 前面計(jì)算的scale計(jì)算出
- *2將點(diǎn)映射到 f 平面上,就得到了在 f/2 成像平面上的去畸變映射關(guān)系。
- 當(dāng)我們調(diào)整 f 使其更小時,相同的內(nèi)容集中于更小的分辨率上,對于后續(xù)的圖像處理算法會更友好。很多鋸齒和模糊的問題都能得到改善
- 在魚眼上檢測棋盤格角點(diǎn)要比在去畸變圖上檢測棋盤格角點(diǎn)更加準(zhǔn)確,因?yàn)槿セ兒蟠蠓礁癖焕斓暮車?yán)重。這個結(jié)論的依據(jù)是重投影誤差以及將魚眼檢測到的角點(diǎn)坐標(biāo)映射到去畸變圖上后與直接在畸變圖上的位置做視覺上的比較。
3.3 Opencv API undistortPoints的實(shí)現(xiàn)
前面所有討論的都是undis2fish的過程。在實(shí)際的AVM標(biāo)定中,通常是對魚眼相機(jī)檢測角點(diǎn),因?yàn)槿セ冎髨D像拉伸效果嚴(yán)重,提取的角點(diǎn)不準(zhǔn)確。參考張正友標(biāo)定法標(biāo)定相機(jī)參數(shù)時,也是在獲取到的圖像上直接提取角點(diǎn),解一個全局優(yōu)化問題。因此,除了前面講到的undis2fish映射過程以外,我們還需要實(shí)現(xiàn)fish2undis的過程。這個過程Opencv提供了函數(shù)undistortPoints,即輸入為魚眼相機(jī)上點(diǎn)的坐標(biāo),輸出為去畸變圖像上點(diǎn)的坐標(biāo)。這個過程是一個解![b5bbb848-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDGAN8xAAAAQKV_U9Wg486.png)
#forward self.distor_para,_=curve_fit(self.func,self.data[:,0],self.data[:,1]) #inverse f_inverse_para,_=curve_fit(self.func_inverse,self.data[:,1],self.data[:,0]) 計(jì)算fish2undis的過程與undis2fish(3.1,3.2)的過程略有不同,但都是尋找 與 之間的映射關(guān)系,因?yàn)?f 平面才是我們真實(shí)拿到的fish圖,我們最終還是要在這個原始的fish圖上找點(diǎn)。
![b5ce122c-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDGAdAzJAAFIAo5ZOWs176.png)
cv::Vec2fCalibrateInit::warpFisheye2Undist(floatfish_scale,floatf_dx,floatf_dy,floatundis_center_h, floatundis_center_w,floatfish_center_h, floatfish_center_w,cv::Vec4dundis_param,floatx, floaty){ //f_dx*=fish_scale; //f_dy*=fish_scale; floaty_=(y-fish_center_h)/f_dy;//normalizedplane floatx_=(x-fish_center_w)/f_dx; floatr_distorted=static_cast<float>(sqrt(pow(x_,2)+pow(y_,2))); floatr_distorted_p2=r_distorted*r_distorted; floatr_distorted_p3=r_distorted_p2*r_distorted; floatr_distorted_p4=r_distorted_p2*r_distorted_p2; floatr_distorted_p5=r_distorted_p2*r_distorted_p3; floatangle_undistorted=static_cast<float>(r_distorted+ undis_param[0]*r_distorted_p2+ undis_param[1]*r_distorted_p3+ undis_param[2]*r_distorted_p4+ undis_param[3]*r_distorted_p5); //scale floatr_undistorted=tanf(angle_undistorted); floatscale=r_undistorted/(r_distorted+0.00001f);//scale=r_disonthecameraimgplane //divider_undisonthenormalizedplane cv::Vec2fwarp_xy; floatxx=(x-fish_center_w)*fish_scale; floatyy=(y-fish_center_h)*fish_scale; warpPointInverse(warp_xy,undis_center_h,undis_center_w,xx,yy,scale); returnwarp_xy; } voidCalibrateInit::Vec2f&warp_xy,floatmap_center_h,floatmap_center_w, floatx_,floaty_,floatscale){ warp_xy[0]=x_*scale+map_center_w; warp_xy[1]=y_*scale+map_center_h; }
總結(jié)
本貼討論的內(nèi)容為魚眼相機(jī)圖像基于畸變表的處理方法,AVM中畸變的運(yùn)用非常靈活,所以筆者必須對它進(jìn)行實(shí)現(xiàn)才可以靈活運(yùn)用。據(jù)筆者所知有些AVM供應(yīng)商的魚眼畸變參數(shù)并不一定是依賴畸變表,有的也會拿來一批攝像頭自行標(biāo)定。具體那種方法更優(yōu),可能需要更多同行同學(xué)的實(shí)驗(yàn)和討論得到結(jié)論。![b5e3e4ee-e379-11ed-ab56-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/BB/wKgaomTnlDGAEnjYAANiqDCctHw436.png)
審核編輯 :李倩
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
模型
+關(guān)注
關(guān)注
1文章
3313瀏覽量
49231 -
AVM
+關(guān)注
關(guān)注
0文章
12瀏覽量
10745 -
相機(jī)成像
+關(guān)注
關(guān)注
0文章
15瀏覽量
5689
原文標(biāo)題:AVM環(huán)視系統(tǒng):魚眼相機(jī)去畸變算法及實(shí)戰(zhàn)
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
高速球的完美結(jié)合 魚眼全景的發(fā)展方向
眼全景攝像機(jī)是對現(xiàn)有監(jiān)控系統(tǒng)的改造與升級。在魚眼全景監(jiān)控系統(tǒng)中,只需要一臺魚
發(fā)表于 08-07 10:21
環(huán)視全景攝像頭應(yīng)用在那些場合和起到作用有哪些
,技術(shù)上有其局限性,如上文所述的圖像失真等問題,以及魚眼環(huán)視全景攝像頭的超廣角效果,雖然能監(jiān)控大范圍面積,但相對來說,它的焦距很短,使得偵測范圍大受限制,大約在半徑5米內(nèi)可以看清人臉,更遠(yuǎn)的話就會顯得模糊
發(fā)表于 05-23 10:30
一種新的魚眼圖像匹配策略
魚眼相機(jī)具有較大的視角,已在視覺監(jiān)控等領(lǐng)域得到了較為廣泛的應(yīng)用。魚眼圖像具有嚴(yán)重的畸變,
發(fā)表于 01-15 11:37
?22次下載
汽車環(huán)視系統(tǒng)設(shè)計(jì)完整硬件平臺設(shè)計(jì)方案
一、項(xiàng)目背景 1.1 研究背景 本項(xiàng)目研究內(nèi)容是開展汽車環(huán)視系統(tǒng)((AVM)技術(shù)與產(chǎn)品的研究與開發(fā),通過駕駛員實(shí)時實(shí)景環(huán)視輔助系統(tǒng),提高汽車
發(fā)表于 11-20 15:34
?19次下載
![汽車<b class='flag-5'>環(huán)視</b><b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)完整硬件平臺設(shè)計(jì)方案](https://file.elecfans.com/web2/M00/49/5F/poYBAGKhwKiAeHhhAABPCYJhvBs564.png)
魚眼相機(jī)與PTZ相機(jī)相結(jié)合的主從目標(biāo)監(jiān)控系統(tǒng)
提出了一種將魚眼相機(jī)和PTZ相機(jī)相結(jié)合的主從目標(biāo)監(jiān)控系統(tǒng),充分利用魚
發(fā)表于 11-22 17:39
?6次下載
![<b class='flag-5'>魚</b><b class='flag-5'>眼</b><b class='flag-5'>相機(jī)</b>與PTZ<b class='flag-5'>相機(jī)</b>相結(jié)合的主從目標(biāo)監(jiān)控<b class='flag-5'>系統(tǒng)</b>](https://file.elecfans.com/web2/M00/49/64/poYBAGKhwKuAO4nVAAAbecmhsns636.jpg)
KUS集團(tuán)目前已研發(fā)出3D AVM全景環(huán)視系統(tǒng)
3D AVM 全景環(huán)視系統(tǒng),在汽車所有視場范圍安裝4到8個廣角攝像頭,收集同一時刻的多路視頻影像,處理成一幅360°的鳥瞰圖。通過中控顯示屏進(jìn)行顯示,讓駕駛員直觀、清晰查看車輛周邊路況信息。幫助駕駛員輕松停泊車輛,并有效減少刮蹭
基于可變形卷積網(wǎng)絡(luò)的魚眼圖像目標(biāo)檢測方法
環(huán)視魚眼圖像具有目標(biāo)形變大和圖像失真的缺點(diǎn),導(dǎo)致傳統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)在對魚眼圖像進(jìn)行目標(biāo)檢測時效果不佳。為解決
發(fā)表于 04-27 16:37
?4次下載
![基于可變形卷積網(wǎng)絡(luò)的<b class='flag-5'>魚</b><b class='flag-5'>眼</b>圖像目標(biāo)檢測方法](https://file.elecfans.com/web1/M00/ED/34/pIYBAGCH0rKAM2whAADX9vj8HDA536.png)
基于除法畸變模型的鏡頭線性標(biāo)定方法
針對魚眼鏡頭的高精度標(biāo)定需求,提岀一種基于除法畸變模型的線性標(biāo)定方法。通過除法模型將題轉(zhuǎn)換為線性方程組求解問題相機(jī)畸變中心后對畸變方程矩陣進(jìn)
發(fā)表于 05-19 11:39
?7次下載
魚眼相機(jī)的成像原理與成像模型解析
而魚眼相機(jī)為了將盡可能大的真實(shí)世界投影到有限的成像平面內(nèi),魚眼相機(jī)允許了
一種基于相位靶標(biāo)的攝像機(jī)標(biāo)定迭代畸變補(bǔ)償算法
相機(jī)畸變是影響相機(jī)標(biāo)定精度的關(guān)鍵因素。由于畸變補(bǔ)償不準(zhǔn)確,傳統(tǒng)的標(biāo)定方法不能滿足要求較高標(biāo)定精度的測量系統(tǒng)的要求。本文提出了一種基于迭代
AVM系統(tǒng)算法框架搭建的方法
AVM(Around View Monitor),中文:全景環(huán)視系統(tǒng)。AVM已經(jīng)是一種較為成熟的技術(shù),中高端車型均有部署,但詳細(xì)講述AVM
![<b class='flag-5'>AVM</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>算法</b>框架搭建的方法](https://file1.elecfans.com/web2/M00/82/C6/wKgZomRh3kOAH1ixAAAm793uZ_Y120.png)
ESP32CAM-PSRAM魚眼廣角圖像識別開發(fā)板
隨著虛擬現(xiàn)實(shí)、全景相機(jī)等應(yīng)用的發(fā)展,魚眼攝像機(jī)的應(yīng)用也隨之越來越多。而相對于傳統(tǒng)魚眼攝像機(jī),M5Stack的
![ESP32CAM-PSRAM<b class='flag-5'>魚</b><b class='flag-5'>眼</b>廣角圖像識別開發(fā)板](https://file.elecfans.com/web2/M00/7D/DA/pYYBAGN-zMaAF9QdAAAZUkbIjzU950.png)
關(guān)于魚眼相機(jī)標(biāo)定的畸變與矯正的分享
在目標(biāo)追蹤任務(wù)中,通常的球機(jī)或者槍機(jī)方案,無法避免人群遮擋的問題,從而導(dǎo)致較高的ID Swich,造成追蹤不穩(wěn)定。
![關(guān)于<b class='flag-5'>魚</b><b class='flag-5'>眼</b><b class='flag-5'>相機(jī)</b>標(biāo)定的<b class='flag-5'>畸變</b>與矯正的分享](https://file1.elecfans.com/web2/M00/A9/09/wKgaomUve46AX3EZAABKMAFnaaA899.png)
360全景環(huán)視原理說明
總述全景環(huán)視系統(tǒng)是通過安裝在汽車前、后、左、右四個廣角攝像頭采集的車輛四周的實(shí)時畫面,通過攝像頭內(nèi)參標(biāo)定,外參標(biāo)定,魚眼圖像畸變矯正,全景模
發(fā)表于 01-17 09:51
?24次下載
評論