learn example opencv transformation distortion homography

opencv - example - homography transformation



¿CÓMO usar Homography para transformar imágenes en OpenCV? (2)

Tengo dos imágenes (A y B) ligeramente distorsionadas una de la otra, donde hay diferencias de traducción, rotación y escala entre ellas (por ejemplo, estas imágenes :)

Ssoooooooo lo que necesito es aplicar un tipo de transformación en la imagen B para que compense la distorsión / traducción / rotación que existe para hacer ambas imágenes con el mismo tamaño, orientación y sin traducción

Ya extraje los puntos y encontré la Homografía, como se muestra a continuación. Pero no sé cómo usar la Homografía para transformar Mat img_B para que parezca Mat img_A . ¿Alguna idea?

//-- Localize the object from img_1 in img_2 std::vector<Point2f> obj; std::vector<Point2f> scene; for (unsigned int i = 0; i < good_matches.size(); i++) { //-- Get the keypoints from the good matches obj.push_back(keypoints_object[good_matches[i].queryIdx].pt); scene.push_back(keypoints_scene[good_matches[i].trainIdx].pt); } Mat H = findHomography(obj, scene, CV_RANSAC);

Aclamaciones,


Desea la función warpPerspective . El proceso es análogo al presentado en este tutorial (para transformaciones afines y urdimbres)


No necesitas homografía para este problema. Puede calcular una transformación afín en su lugar. Sin embargo, si desea utilizar la homografía para otros fines, puede consultar el siguiente código. Fue copiado de este artículo muy detallado sobre homografía .

Ejemplo de C ++

// pts_src and pts_dst are vectors of points in source // and destination images. They are of type vector<Point2f>. // We need at least 4 corresponding points. Mat h = findHomography(pts_src, pts_dst); // The calculated homography can be used to warp // the source image to destination. im_src and im_dst are // of type Mat. Size is the size (width,height) of im_dst. warpPerspective(im_src, im_dst, h, size);

Ejemplo de Python

'''''' pts_src and pts_dst are numpy arrays of points in source and destination images. We need at least 4 corresponding points. '''''' h, status = cv2.findHomography(pts_src, pts_dst) '''''' The calculated homography can be used to warp the source image to destination. Size is the size (width,height) of im_dst '''''' im_dst = cv2.warpPerspective(im_src, h, size)