gpt4 book ai didi

c++ - OpenCV中不同变形方法之间的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:07 27 4
gpt4 key购买 nike

通过使用 OpenCV 拼接图像,我发现提供了几种 warp 方法来执行此操作:

if (warp_type == "plane") warper_creator = new cv::PlaneWarper();
else if (warp_type == "cylindrical") warper_creator = new cv::CylindricalWarper();
else if (warp_type == "spherical") warper_creator = new cv::SphericalWarper();
else if (warp_type == "fisheye") warper_creator = new cv::FisheyeWarper();
else if (warp_type == "stereographic") warper_creator = new cv::StereographicWarper();
else if (warp_type == "compressedPlaneA2B1") warper_creator = new cv::CompressedRectilinearWarper(2, 1);
else if (warp_type == "compressedPlaneA1.5B1") warper_creator = new cv::CompressedRectilinearWarper(1.5, 1);
else if (warp_type == "compressedPlanePortraitA2B1") warper_creator = new cv::CompressedRectilinearPortraitWarper(2, 1);
else if (warp_type == "compressedPlanePortraitA1.5B1") warper_creator = new cv::CompressedRectilinearPortraitWarper(1.5, 1);
else if (warp_type == "paniniA2B1") warper_creator = new cv::PaniniWarper(2, 1);
else if (warp_type == "paniniA1.5B1") warper_creator = new cv::PaniniWarper(1.5, 1);
else if (warp_type == "paniniPortraitA2B1") warper_creator = new cv::PaniniPortraitWarper(2, 1);
else if (warp_type == "paniniPortraitA1.5B1") warper_creator = new cv::PaniniPortraitWarper(1.5, 1);
else if (warp_type == "mercator") warper_creator = new cv::MercatorWarper();
else if (warp_type == "transverseMercator") warper_creator = new cv::TransverseMercatorWarper();

以上代码摘自OpenCV官方示例中的stitching_detailed.cpp项目。

我尝试了所有这些来拼接一组九张图像:它们产生略有不同的输出(关于失真或透视)以及不同的处理时间。

请问有人可以详细解释一下这些区别吗?

最佳答案

想象一下将贴纸贴在某个物体上。您的源图像是贴纸,变形方法表示什么对象以及您将如何覆盖。在 PlaneWarper 的情况下,它显然是一个平面。对于 CylindricalWarperSphericalWarper,它分别是圆柱体和球体。其他变形器处理其他常见投影,如墨卡托投影和立体投影。如果您不知道它们是什么 - 这是您不需要使用它们的好兆头。 <强> http://en.wikipedia.org/wiki/Map_projection 有相当多的信息可以帮助您入门。

这些变形器之间的主要区别在于用于将源图像像素映射到生成的全景图的数学公式。根据您的任务,您应该选择合适的整经器。如果您正在拼接全景图,您可能应该使用 CylindricalWarperSphericalWarper。考虑 http://www.panoguide.com/howto/panoramas/types.jsp 了解更多详情。

关于c++ - OpenCV中不同变形方法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25264009/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com