将图像从圆柱体内部投影到二维平面 [Matlab]

Posted

技术标签:

【中文标题】将图像从圆柱体内部投影到二维平面 [Matlab]【英文标题】:Projection of a image from inside a cylinder to a plane 2D [Matlab] 【发布时间】:2015-10-10 19:53:56 【问题描述】:

我用圆柱体内的相机拍摄图像。我想将该图像转换为平面 2d。圆柱体内部的图像有很多点,形成一个网格。

我试图做的是估计转换。通过斑点分析,我可以检测每个点的中心并获得以像素为单位的坐标。我将其保存在名为 ImCilynder 的矩阵中。之后,我创建了一个矩阵,其中包含平面中这些点的坐标,名称为 Im2d。

我计算变换(H)求解方程:

Imcilynder * H= Im2d;

H= matrix [9x1]

H=pinv(Imcilynder) * Im2d

但是,当我用相同的点进行测试时,结果是完全随机的,所以我做错了。

有没有更好的方法来解决这个问题?你能帮助我吗?

解释得更好,

我正在尝试找到将上面的图像转换为该图像的转换:

所以,澄清一下,我希望将我在第一张图像中看到的点投影到平面上。基本上我想打开圆柱体。

经过变换矩阵的计算。我期望将第一张图像与变换矩阵相乘并获得平面中的点。或者将黑点中心的坐标相乘,得到这些点在平面上的坐标。这可能吗?

非常感谢,

阿方索

【问题讨论】:

我不确定线性变换是否可以从 cilinder2plane 中描述。不过很有趣。 第二个 Ander Biguri,这绝对不是线性变换。 可能相关:***.com/questions/7981815/… 【参考方案1】:

好吧,你希望在飞机上拥有什么?形成网格的圆圈?因为如果是这种情况,您需要消除径向失真,这些模型由一些参数表示,顺便说一下是非线性的。如果你能找到一个非常好的算法,你可能会得到这样的东西:

如果这不是你的想法,你需要应用弹性变换,这种变换需要使用一种网格,它是变换的模型,你需要提出你的网格模型。如果您想自动执行此操作,则需要使用弹性注册算法,您可以使用这样的模型:

任何方式,这都不是一件小事,如果你想自动获得转换,当然有很多关于复杂转换的研究。否则你可以使用 Photoshop ;)。

【讨论】:

感谢您的回答,它解释了很多。我在投影/变换算法方面的经验非常少,所以我对这个主题有点迷茫。您是如何获得第一张图像的?你是用photoshop吗?我想如果你能解释我如何获得第一张图片,它可以解决我的问题。但是,理想的解决方案是使用您的第二个想法计算转换。你有什么网站可以提供给我关于弹性转换的第二个想法吗?谢谢,阿方索 好吧,我假设第一张图像是我想象的径向变换如何影响原始图像。但是,如果您对图像注册过程感兴趣,您可以从this 开始,您可以初步了解什么是图像注册以及它是否对您的应用程序有用。尽管弹性注册有点复杂,您可以观看this。 你好,我一直在阅读你给我的链接,但我真的不了解这个主题,我尝试过的一切都失败了,你能帮帮我吗?我试图实现这一点:mathworks.com/help/images/point-mapping.html 可能有用的是您所期望的图形示例,以便尝试帮助您 您不需要使用算法,我真正想看到的是您所期望的结果,您可以在一张纸上完成并上传它的照片:)

以上是关于将图像从圆柱体内部投影到二维平面 [Matlab]的主要内容,如果未能解决你的问题,请参考以下文章

快速搭建简单的LBS程序——地图服务

matlab投影到坐标平面

简述高斯投影原理

怎么利用matlab做一张地图的投影

机器视觉——图像投影

OpenCV图像处理--平面单应性