如何将普通照片转换为等距矩形图像?

平面设计 3d 图片格式 文件转换
2021-12-31 21:19:59

我有一个常规的全景图像。如何将其转换为equirectangular 图片(正常 → equirectangular)?

我在 Google 上找到的大多数结果都是相反方向的转换(equirectangular → normal)。

这是我要转换的图像(HR 链接

在此处输入图像描述

4个回答

Equirectangular 图像呈现一个球体,它被扭曲,因此球体上的经线和平行线显示为垂直和水平直线。来自维基百科的一个例子:

在此处输入图像描述

左侧是球面图,右侧是等效平面图,即从球体到矩形的等矩形投影。

赤道上没有拉伸,但图像在其他地方水平拉伸。该点距离赤道越远,拉伸越多。顶部和底部边缘实际上只包含单个点 - 极点。

矩形的比例 W/H=2:1。这反映了沿球体的两极之间的距离恰好是沿赤道的完整往返行程的一半。

您想将图像转换为 equirectangular。看起来比例是 2:1,所以如果相应的球体是这样的,它就已经是等角矩形了:

在此处输入图像描述

一半的图像隐藏在球体后面,但它就在那里。如您所见,图像的顶部和底部边缘被捏成点,即极点。

我认为你认为这是一个无用的数学诡辩,你期待别的东西。我猜你想要

1) 一个 equirectangular 图像,它以您的图像作为表面的一部分呈现一个球体,无需用它覆盖整个球体

2)当一个人看着它坐在球体的中间时,他可以在球体上看到你的图像而没有失真,而且图像尺寸如此之大,以至于图像覆盖了视野的一小部分,比如一个 90 度宽和 45 度的扇区度数高。

如果您接受一些失真,您只需将画布大小增加到 400%

在此处输入图像描述

从外面看的球体上是这样的:

在此处输入图像描述

(对不起,我的免费软件 CAD 程序不允许编辑灯光)

Affinity Photo 具有图层 > 实时投影 > Equirectangular,可以显示球体内部的视图,就像图像被绘制到球体的内表面并且观察者位于中点一样。它显示了这一点:

在此处输入图像描述

弯曲的栅栏和地平线显然是不需要的,但太阳仍然很圆。那是因为它要小得多,而且靠近赤道线。地平线和栅栏是弯曲的,因为它们实际上是在水平圆上(=平行于球面图),人们稍微向下观察它们并将它们视为椭圆弧。

可以通过补偿失真来拉直原始图像区域,即。通过扭曲或更准确地使用数学失真方程(Affinity P 也支持它们)。

Affinity Photo 允许在实时投影模式下编辑图像。编辑应用于底层等距矩形图像,但可以观察球体上的投影。这是一个粗略的翘曲尝试:

在此处输入图像描述

也可以粘贴原始图像并将其合并到实时投影下的裸背景层:

在此处输入图像描述

但这不是一般的解决方法。观察者只要稍微转过头,他就会以一种新的方式看到扭曲的场景(=从一旁看到的平面卡片)

在此处输入图像描述

没有通用的解决方法,因为您没有 3D 场景,只有 3D 球体上的平面图像。

我的观点是,将环境作为单个图像映射到一个球体上并从中点观察它可能是合理的虚拟现实,只有当映射的场景太远以至于它不能有任何透视时。即使在那种情况下,也需要一些巧妙的视口宽失真来使视距无限,而不是=球体的半径。失真应该随着观看方向的变化而存在。

在检查了这个后来的案例之后,这个答案被完全重写了:如何绘制 equirectangular(360 度)图像?

你不能在你的图像上这样做。

1)你想要一个球体上的圆柱投影。首先,你的画布需要有一个精确的比例。3.1416:1(使用您想要的任何像素大小的画布,例如 3141x1000px)

在此处输入图像描述

2)你(通常)需要地平线位于画布的中心。

在此处输入图像描述

在圆柱投影(来自球体)上,由于垂直投影尺寸与该段的实际高度相比,您在投影上有特定的变形,因此当您在平面画布上绘制卡通时需要补偿它。

一个简单的方法是在 Photoshop 中使用 Spherize 滤镜。(在我现在在这台计算机上使用的原始版本上,滤镜 > 扭曲 > 球化)

但是你只需要在垂直轴上扭曲它。

在此处输入图像描述

但除此之外,您还需要定义您拥有的 360 全景图的哪个部分。想象另一只鸡在拍照。使用的镜头角度是多少?

我觉得它是一个广角镜头,让你拍摄的东西像 120° 角场。这意味着您需要将图像完成到鸡摄影师背后的东西。

在此处输入图像描述


您要使用的 Google VR 应用程序说需要圆柱投影,但要求您的图像比例为 2:1。2:1 投影通常是具有不同变形的球形投影,但例如在视频中更难实现。

出于实际原因,他们实际上要求的是圆柱投影,因此您只需将原始 3.1416:1 重新采样到 2:1 作为最后一步。

在此处输入图像描述

只需重新采样最终图像。如果您的画布是 3141x1000 像素,只需将其重新采样为 2000x1000 像素。不要裁剪它。这只鸡看起来会更苗条,但在 VR 应用程序上会再次变胖。


对于您的初始画布:在您的特定图像上,很难分辨视角,但让我们看看 3 个场景。

(A) 您的视野约为 120°,因此您可以容纳 3 张可爱宠物的照片,因为您发布的图像为 2048,画布需要为 2048x3=6144px,现在除以 pi = 1955px

6144x1955像素

(B) 但是如果你不希望宠物太小让我们假设照片覆盖 180° = 2048x2=4096 / pi=1303

4096x1303像素

(C) 或玩弄数字。

在此处输入图像描述

原图:

在此处输入图像描述

增加画布大小并使用内容感知填充,为图像提供更多天空和地面。我用 Photoshop:

在此处输入图像描述

您将在下一步中使用极坐标过滤器。这是一张显示极坐标如何准确工作的图像:

在此处输入图像描述

如您所见,我们将希望从下部(矩形)转换为上部透视(极性)。为此,请转到滤镜 -> 扭曲 -> 极坐标 -> 矩形到极坐标:

在此处输入图像描述

使用内容感知填充、修复工具或图章工具来修复中心和边缘周围的区域:

在此处输入图像描述

再次使用极坐标,但这次将极坐标改为矩形。您可以将此图像投影到 360° 球体上:

在此处输入图像描述

假设您有一张夜空的图像。您可以再次使用极坐标。但是由于在 equirectangular 失真后图像的中心会变成顶部,因此您只使用 Polar Coordinates Polar to Rectangular 一次:

在此处输入图像描述

在 3D 软件中(我使用免费的 Clara.io),这是纹理在球体上的外观:

在此处输入图像描述

在此处输入图像描述

您的图像信息很少,而且太小。也没有等角几何形状。但是你可以在 Blender 中完成,它是免费的。只需在“全景”>“equirectangular”>“渲染中渲染它。要在 360 度中查看 HDRI 图像,您可以使用此站点: http: //panoramaviewer.1bestlink.net/