我發(fā)現(xiàn)了如何繪制線性透鏡,從一個destination坐標到另一個source坐標。您如何計算從中心到魚眼到直線的徑向距離?1)。我實際上很難扭轉(zhuǎn)它,并將源坐標映射到目標坐標。按照我發(fā)布的轉(zhuǎn)換函數(shù)的樣式,代碼的反函數(shù)是什么? 2)。我還看到我的失真在某些鏡頭上不完美-大概不是嚴格線性的。這些鏡頭的等效源坐標和源坐標是什么?同樣,請?zhí)峁└嗟拇a,而不僅僅是數(shù)學(xué)公式... 最初陳述的問題:我有一些要點描述用魚眼鏡頭拍攝的照片中的位置。我想將這些點轉(zhuǎn)換為直線坐標。我想使圖像不失真。我已經(jīng)找到了關(guān)于如何產(chǎn)生魚眼效果的描述,但沒有找到如何扭轉(zhuǎn)它的描述。還有一篇博客文章,描述了如何使用工具來完成該任務(wù)。輸出:校正后的圖像(從技術(shù)上講,也可以進行透視校正,但這是一個單獨的步驟)。您如何計算從中心到魚眼到直線的徑向距離?我的函數(shù)存根看起來像這樣:Point correct_fisheye(const Point& p,const Size& img) { // to polar const Point centre = {img.width/2,img.height/2}; const Point rel = {p.x-centre.x,p.y-centre.y}; const double theta = atan2(rel.y,rel.x); double R = sqrt((rel.x*rel.x)+(rel.y*rel.y)); // fisheye undistortion in here please //... change R ... // back to rectangular const Point ret = Point(centre.x+R*cos(theta),centre.y+R*sin(theta)); fprintf(stderr,"(%d,%d) in (%d,%d) = %f,%f = (%d,%d)\n",p.x,p.y,img.width,img.height,theta,R,ret.x,ret.y); return ret;}另外,我可以在找到點之前以某種方式將圖像從魚眼轉(zhuǎn)換為直線,但是我完全被OpenCV文檔所迷惑。在OpenCV中是否有一種簡單的方法可以做到這一點,并且它的性能足以將其用于實時視頻供稿?
以編程方式校正魚眼失真
翻閱古今
2019-12-10 10:40:45