How to compute the homography

46 views (last 30 days)
Sushil  Sharma
Sushil Sharma on 18 Apr 2019
Commented: Matt J on 28 Dec 2019
Dear Community,
I have some issue to getting the trasnform image for homography
I want to apply the homography to an image, I do have homography martix from the general formulation
H = R+1/d*n*t'
H = rotation_matrix + t.* Normal
H =
0 -1.0000 0
-0.3420 0 -0.9397
5.9397 5.0000 4.6580
The basic concept of idea is to trying get image from vitrual camera, so the question I that how I can get the image from virtual camera ?
As you can see figure below , I have perspective image but I want to use inverse perspective mapping
Thanking you so much
3D2D.jpg

Accepted Answer

darova
darova on 19 Apr 2019
Hi, that green trapezoid is what you want. Can be found as line intersections of plane
mmm.png
But having all those point on a plane (in 3D) dont know how to convert them into 2D (to get that trapezoid in XY):
mm1.png
And how to convert image (pixels position) having that trapezoid?
mm2.png
See attached files
  3 Comments
darova
darova on 21 Apr 2019
Create vectors Nx, Ny first:
NX = cross([0 0 1],-NZ); % camera X-axis
NX = NX/norm(NX);
NY = cross(NX, NZ); % camera Y-axis
NY = NY/norm(NY);
Then using dot product convert each point in 2D:
Where, P = (x,y,z) - point on plane
Untitled.png
Sushil  Sharma
Sushil Sharma on 21 Apr 2019
Thank you so much darova for your answer,
I get some idea, now I understand how to deal with situation,
Really apppericate for your help,
I wish in future you will clear my doubt as you did now
Thanks in advance

Sign in to comment.

More Answers (1)

Matt J
Matt J on 19 Apr 2019
tform = projective2d(H);
newImage = imwarp(oldImage,tform);
  2 Comments
Omar Ali
Omar Ali on 28 Dec 2019
how i can apply it on input image?
Matt J
Matt J on 28 Dec 2019
That's what this line does
newImage = imwarp(oldImage,tform);

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!