首页 > 编程知识 正文

图像处理分割算法,图像处理常用算法

时间:2023-05-05 17:05:15 阅读:124513 作者:2930

关于影像的球面投影,这是全景APP应用中常见的技术,但现有的资源大多写得不多,也很模糊。 摸索了一会儿,发现这个博客写了比较好的东西。 本文的实现也作为重要参考。 读了本论文后,如果有不明白或者觉得不好的地方请看一下。

在展开这篇文章之前,先看看下面两张照片。

左边的图像投影到球面上后,其正视图为右边的图像。 我们需要研究的是投影的过程。

可以想象,左边的图像是一条极薄的线,覆盖在大小正好的球面上(薄纱过了中点的横轴正好覆盖了球赤道的半周),看着过去会怎么样。 可以看到接近上面右侧图像的图像。 为什么说近不说一样,是因为大小不同。 如果左侧图像的赤道正好复盖球的一半平面,则球的周长是左侧图像宽度的两倍。 设左侧图像的宽度为w,球的半径为r,则如下所示

R=W

因此,球主视图的球的直径

2R=2*W/

也就是说,球的正视图不会碰到图像的边缘,但为了让我们看起来更轻松,我们希望球的正视图正好碰到图像的边缘。 因此,球投影后,其正视图需要以/2的等倍率放大。 放大后,得到右侧的图像。 然后,将放大率设为k。

现在正式进入图像投影的研究,还是按照上面的构想,假设左边的图像像极薄的线,把它盖在大小正好的球面上。 然后,左侧图像的中点位于右侧图像的中点,也就是球正面顶点的位置。

接着,将图像的中心点设为点0,将左图像上的任意点设为点a。 假设点a位于经过中点的横轴上,则很容易想象即使经过投影也位于经过右图中心点的赤道上。 此外,如果左图以中心为中心旋转角度,则本来未经过中点的横轴上的点有可能成为其上的点,相应地,该点的投影也有可能落在经过右图中心点的赤道上。 也就是说,图像上的任意点投影后,会落在连接原始图和中心点的线上。 接下来,沿着连接切断,得到以下切断面。

这是本文推导的关键。 其中最重要的是弧长等于OA*k这个词。 从上面的薄纱模型可以很容易地看出,这条弧左边的OA是弯曲的,长度自然相同。 另一方面,*k是因为图像被放大了。 如果有这样的条件,就可以举出以下公式。

导出到最后,可以看到原始图像坐标(x,y )和投影后的图像坐标(x ',y ' )的换算关系,但与上述博客最不同的地方是将x,y写在左边,将x ',y '写在右边。 在本人看来,这是合理的。 因为之后需要去原图像找到对应的像素点取像素值,但在扫描映射后的图像时坐标需要知道,是已知的条件。 详情请参考我之前写的东西

好的,到此为止,导出过程全部结束,按照上式完成图像映射。 经过本人测试,每次直接这样计算效率很低,后来本人用检针法完成了上述工作。 这个工程和可执行程序已经打包上传了。 (因为是用X64编译的,所以电脑必须是64位操作系统才能运行。 如果是32位,可以通过修正工程解决。 工程由OpenCV解码,需要自己配置。 否则不能执行。 感兴趣的人请下载

拿出一张下一张处理结果图

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。