Ask Your Question

more accuracy getAffineTransform()

asked 2019-08-02 03:50:39 -0500

Kevin Kuei gravatar image

updated 2019-08-05 03:27:11 -0500

Hi all,

The getAffineTransform and invertAffineTransform output the transformation matrix with dtype='float64'. Is there anyway to make it output more accuracy? say dtype='float128'? I MAY need more accuracy in my applications.

In my application, I choose three points with gps locations and xy-points in the image to compute the matrix and I compute the inverse_matrix too. Then, I use the same three points and the inverse_matrix, input the xy values and compute them back to the gps locations. The largest error between the computed gps location and measured gps location is about
3.04283202e-06 which is not really bad. (about 30cm )

M2 = np.array([51, 788, 1.0])
M2 = M2.reshape(3, 1)
result = np.matmul(inv_M, M2)
# p = inv_M * p'  
diff = result - np.array([23.90368083, 121.53650361]).reshape(2,1)
print diff
 [ 3.04283202e-06]]

But for other test points, the errors are too much. For example, let's see the bottom point (gps 23.90377194, 121.53645972). The error is 0.00021149 in longitude which is too much (about 21 meters).

M2 = np.array([910, 958, 1.0])
M2 = M2.reshape(3, 1)
result = np.matmul(inv_M, M2)   # p = inv_M * p'  
diff = result - np.array([23.90377194, 121.53645972]).reshape(2,1)   //compare to the measured gps location
print diff

Here is my ipynb link text

original image // you can use mouse to get the xy values of feature points. link text

feature points with gps locations // note that this is a resized diagram, the xy value is meanless. link text the gps locations were provided by vendor and they claimed the errors should be <= 30cm...

To check if the gps locations is trustable or not, I tried to plot those gps locations to ROS rviz and check their relative locations to the labeled image. Finally, I think the gps locations is trustable,

here is the png for checking gps locations link text

Any idea?

edit retag flag offensive close merge delete



I don't understand float64 = 15 digits. with 1e6 km (7 digits) precision is micrometer. With modern GPS when you get 10cm error it's really good

LBerger gravatar imageLBerger ( 2019-08-02 04:19:16 -0500 )edit

I think the main source of error could be the image and the precision of pinpointing the three points. Are you using some sort of image processing to get subpixel accuracy or just mark three points with a mouse or something?

Witek gravatar imageWitek ( 2019-08-02 16:02:25 -0500 )edit

hi, thanks for the reply. I've attached my images and code. Please help to identify the problem. Thank you!

Kevin Kuei gravatar imageKevin Kuei ( 2019-08-05 02:49:51 -0500 )edit

I think your question is off topics. Here it's an opencv forum. You should read this. As @Witek wrote may be problem is in data precision and not in matrix inversion

LBerger gravatar imageLBerger ( 2019-08-05 03:03:59 -0500 )edit

I think the pinpointing and the image is not the problem. Even, I tried to plot those gps locations to ROS rviz ahd check their locations with my eyes. I think the gps locations is trustable,

Kevin Kuei gravatar imageKevin Kuei ( 2019-08-05 03:12:32 -0500 )edit

1 answer

Sort by ยป oldest newest most voted

answered 2019-08-05 05:33:21 -0500

Witek gravatar image

So it seems that your goal is to get the GPS (or real-world metric) coordinates from pixel coordinates based on 3-point affine transform from a lens distorted image that includes a perspective view? Well, this is not going to work. You need to undistort your image first and then use at least 4 points to get the persepctive transform or even better, use all points that you have and findhomography (assuming the scene/road is flat). You probably do not have your camera model and probably cannot calibrate it in a standard way using a chessboard as you probably have no free access to the camera. In such a case you may use the Tsai method with coplanar data points. Unfortunately I have never done the calibration part yet, so I cannot help you further with it now (I have a very similar problem and need to undistort a street scene, but I just seem not to be able to find time to do it).

edit flag offensive delete link more


If there is someone here that can help with camera calibration from a single planar view, that would be nice.

Witek gravatar imageWitek ( 2019-08-05 09:28:22 -0500 )edit

Question Tools

1 follower


Asked: 2019-08-02 03:50:39 -0500

Seen: 202 times

Last updated: Aug 05 '19