Image Correction for Surface Projection with OpenCV

What is the best way to apply correction to an image projected onto a 3D surface in OpenCV, as in my examples, or shown in Projection onto a 3D surface ?

My first OpenCV corner angle tests didn’t look very promising. If the camera angle was too steep, the image was too distorted or too small (too far), the angle was not detected. Also, if there were too many fields on the chessboard.

My idea was to use the algorithm that 3D scanners use to detect surfaces (objects), but I have no idea if this is possible using OpenCV. Even if this is not possible in OpenCV, what are the algorithms used to scan such an object?

These images show how it looks without any correction. Uncorrected projection on surface

Green rectangles are adjusted projections. Corrected projection (green)

+5
source share
1 answer

Markers, as I used for ProCamCalib , should be detected more reliably than a checkerboard pattern. You can use ARToolkitPlus , as in ProCamCalib, but there are other alternatives, or you can make your own small detector. :) Then, with the detected angular coordinates of the markers, we can calibrate in the same way using the rest of the OpenCV calibration functions.

And I can also make cool stuff, as shown on the ProCamTracker page .

EDIT: , , , OpenCV . , , . ( ) . ( , , , .) , , 100% . , :

Zollmann, S., Langlotz, T. Bimber, .
-
http://140.78.90.140/medien/ar/Pub/PAGC_final.pdf
-: http://140.78.90.140/medien/ar/Pub/PAGC.avi

EDIT2: - , , . , ... OpenCV . , , , . 2 . , : 00, 01, 10 11. , , . () 11 () 00, cvAbsDiff(), cvThreshold() ( ) cvFindContours(). , cvContourArea(), cvMoments(). . cvBoundingRect() cvCountNonZero() ( cvThreshold()) , cvSetImageROI(). , 1, , 0.

, , .

+2

All Articles