Homography單應性矩陣程式實現

2021-07-12 04:03:30 字數 1385 閱讀 9702

單應性矩陣重要應用在求解兩幅影象的對映關係,或者影象座標與世界座標的對映關係。

這裡主要在張正有相機標定法的基礎上,求解h。

具體理論為請點:相機標定法-張正有

opencv程式實現

std::vector

pt1(4);

std::vector

pt2(4);

pt1[0] = point2f(0,0) ;

pt1[1] = point2f(1,0) ;

pt1[2] = point2f(1,1) ;

pt1[3] = point2f(0,1) ;

pt2[0] = point2f(496.01f,147.48f); 147.4822

pt2[1] = point2f(492,419);

pt2[2] = point2f(118,355);

pt2[3] = point2f(200,98);

std::vector

char> inliersmask(4);

cv::mat h = cv::findhomography( (mat)pt1, (mat)pt2, cv_fm_ransac, 1.0,inliersmask);

matlab程式實現

m=[496.01,492,118,200;147.48,419,355,98;1,1,1,1];

m=[011

0; 001

1; 111

1 ];

load ('mx1.mat');

np = size(m,2);

p=ones(2*np,9);

fori=1:np %每幅影象取np個點

p(2*i-1,:)=[m(:,i)' 0 0 0 -m(1,i)*m(:,i)'];

p(2*i,:)= [0

00 m(:,i)' -m(2,i)*m(:,i)'];

end;

[u s v]=svd(p); %正交分解

h=v(:,9); %取v的最後一列

h=h/h(9); %歸一化

options = optimset('largescale','off','levenbergmarquardt','on');% 使用lsqnonlin進行非線性最小二乘求解

x = lsqnonlin( @fun1, reshape(h,1,9) , ,,options, m, m);

h=reshape(x,3,3); % 將矩陣h恢復為3*3

h=h';

f=h;

Homography單應矩陣

在計算機視覺的背景下,2d affine是2d homography的子集。從幾何意義上講,2d homography是用來計算一堆在同乙個三維平面上的點在不同的二維影象中的投影位置的,是乙個一對一的對映。2d affine是2d homography的乙個特例,它對應著的情況是這個三維平面在無窮遠...

單應性矩陣Homography計算和優化

單應性矩陣,是用來描述兩個平面之間的變換關係,是乙個3x3的齊次矩陣。圖上的4個綠色的圈,兩兩可以對應,h可以表達第一張圖變換到第二張圖的轉換關係。具體的表示式 aa表示尺度資訊,h1 h9h 1 h 9 h1 h9 表示h hh矩陣,h hh矩陣有8個自由度,h9 1h 9 1 h9 1,所以只需...

線性求解單應矩陣 Homography

定義 2d單應 給定影象 mathbb 中的特徵點集 mathbf i 和另一幅影象在 mathbb 中對應的特徵點集 mathbf 將 mathbf i 對映到 mathbf 的射影變換。在實際情況中,點 mathbf 和 mathbf 是兩幅影象上的點,每幅影象都視為一張射影平面 mathbb ...