- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 Opencv 将普通全景图转换为立体投影。生成的图像就是此链接中显示的图像。
在创建这个的步骤中,有一个步骤是在 photoshop 中将矩形转换为极坐标。可以解释一下 d 转换背后的逻辑吗
最佳答案
是的,有。 http://mathworld.wolfram.com/StereographicProjection.html
查看此维基链接:https://en.wikipedia.org/wiki/Equirectangular_projection
将您的 360 度全景图想象成一个球体的等距柱状投影。也就是说,x 对应于经度,其范围从左侧的 -180 到中心的 0,然后到右侧的 180 度。 y 对应纬度,范围从顶部的 -90 度到中间的 0 度到底部的 90 度。
按照第一个链接中的逆映射公式为每个像素构建一个 map_x、map_y,然后使用 cv2.remap 函数获得图像的立体投影,也就是一个小星球。
如果你的图片 width = 2 * height 因为上面提到的经纬度范围,结果会更好。
我从这篇很棒的博文中学到了所有这些 http://www.semifluid.com/2014/04/20/equirectangular-to-stereographic-projections-little-planets-in-matlab/
关于opencv - 是否有将全景图转换为小星球(立体投影)的直接公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27189368/
我正在使用 D3.js 沿着旋转行星的示例代码做一些事情: http://rveciana.github.io/geoexamples/?page=d3js/d3js_svgcanvas/rotati
我是一名优秀的程序员,十分优秀!