gpt4 book ai didi

opencv - 在LabView和/或OpenCV中对图像进行插值和变形

转载 作者:行者123 更新时间:2023-12-02 17:16:01 26 4
gpt4 key购买 nike

我正在处理图像处理问题。我有一台投影到屏幕上的投影仪,还有一台照相机为之拍照。通过在屏幕上投影点并在相机上找到结果区域的质心,我可以在投影仪坐标子集和相机像素子集之间建立1:1对应关系。因此,我有一张 map

proj_x, proj_y <--> cam_x, cam_y for scattered point pairs



我最初的计划是使用Mathscript函数griddata对 map 进行正则化。可以在MATLAB中正常工作,如下所示
[pgridx, pgridy] = meshgrid(allprojxpts, allprojypts)
fitcx = griddata (proj_x, proj_y, cam_x, pgridx, pgridy);
fitcy = griddata (proj_x, proj_y, cam_y, pgridx, pgridy);

相机到投影仪的映射则相反

不幸的是,此代码导致Labview在网状网格步骤上内存不足(相机为5兆像素,对于Labview来说显然太过处理了)

然后,我开始浏览openCV,并找到了cvRemap函数。不幸的是,该函数以像我上面试图生成的那样的规则化像素-像素图为起点。但是,这使我希望在openCV中可以使用用于创建此类 map 的功能。我在openCV 1.0 API中找不到它(出于遗留原因,我坚持使用1.0),但是我希望它在那里,或者有人容易犯错。

所以我的问题是以下之一

1)如何在openCV中从分散的点插值到网格; (即,对于x和y的分散值给定z = f(x,y),如何用f(im_x,im_y)填充图像?

2)鉴于我知道坐标系统1中的点到坐标系统2的离散映射,我如何执行将图像1映射到图像2的图像变换。可以在Labview或OpenCV中实现。

注意:我在delaunay上标记了此帖子,因为这是进行分散插值的一种方法,但是更好的标记是“分散插值”

最佳答案

因此,这最终成为Labview 8.5中漏洞的特定修复程序。不过,由于它们的文献记录不多,而且我花了一天的时间在痛苦上,所以我认为我会张贴它们,以便其他人搜索这个问题。

1)Meshgrid炸弹。不知道何时修复此问题,绝对是8.5中的错误。解决方案:改为在插值和外推托盘上使用类似于网状网格的功能。或升级到显然有效的LV2009(感谢Underflow)

2)8.5中的Griddata有缺陷。这是有据可查的。 8.6升级说明说griddata和“cubic”设置存在问题,但事实上也是DEFAULT LINEAR设置存在问题。解决方案按顺序降序排列:1)通过“v4”标志,该标志执行某种样条插值,但没有错误。 2)至少升级到8.6版。 3)用芦苇打败ni工程师,直到他们正确记录错误为止。

3)我能够使用openCV重映射功能来完成从一个图像到另一个图像的实际转换。我尝试仅使用内置在interp2 vi中的matlab,但是在大型阵列上遇到了阻塞,并给了我内存不足的错误。另一方面,将IMAQ镜像映射到IPL镜像非常简单,因此,除了添加外部库之外,还不错。

关于opencv - 在LabView和/或OpenCV中对图像进行插值和变形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2900715/

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