小编Yet*_*eti的帖子

如何将球面坐标转换为equirectangular投影坐标?

简化的问题

如何将球面坐标(θ,φ)转换为等距矩形投影(也称为"地理投影")的位置(x,y )?

其中:

  • x是经度,水平位置,从-180到180度.
  • y是纬度,垂直位置,从-90到90度.
  • θ是θ,以度为单位的水平角度,从(0,0,0)到球体表面上的点的矢量.
  • φ是phi,垂直角度,从(0,0,0)到球面上的点的矢量.

下面你会找到原来的问题,当我不能很好地理解这个问题时,我认为它仍然有助于展示这个解决方案的实际应用.

上下文

编辑:原始问题标题是:如何以给定角度转换照片成为全景照片的一部分?

如果我想以任何给定角度拍摄照片,以便我可以将得到的(扭曲/变形的)图像放置在等距矩形投影,立方体贴图上的相应特定位置,任何人都可以帮助我采取哪些步骤或任何全景照片投影?

无论哪种投影最容易做到都足够好,因为有很多资源可用于如何在不同的投影之间进行转换.我只是不知道如何从实际照片到这样的投影.

可以安全地假设摄像机将停留在固定位置,并可以从那里向任何方向旋转.我认为需要这样做的数据可能是这样的:

  • 物理相机的水平角度[-180, +180](例如+ 140deg).
  • 物理相机的垂直角度[-90, +90](例如-30度).
  • 照片分辨率w x h(例如1280x720像素).
  • 照片的水平角度(例如70度).
  • 照片的垂直角度(例如40度).
  • 镜头校正a,b,c参数(见下文).

我有这些数据,我想第一步是进行镜头校正,以便所有应该笔直的线条实际上是直的.而这是可以做到用imagemagick桶形畸变的 A,B和C:,在其中您只需要填写三个参数.应用于图像以纠正此问题的转换非常简单.

我坚持下一步.要么我不完全理解它,要么搜索引擎没有帮助我,因为大多数结果都是关于在已经给定的投影之间进行转换,或者使用高级应用程序将照片智能地拼接在一起.这些结果并没有帮助我回答我的问题.

编辑:我想,也许一个数字将有助于更好地解释:)

问题是给定的照片红色不能在没有变换的情况下放入等角矩形投影中.下图说明了这个问题.

带有

所以,我有红色,我需要把它变成绿色.蓝色显示转换的差异,但这取决于水平/垂直角度.

camera projection image-processing coordinates coordinate-systems

11
推荐指数
1
解决办法
8301
查看次数

MySQL查询随机挂起"发送数据"状态?

我正在使用MySQL 5.5.25服务器和InnoDB用于我的数据库.

由于mysqld进程大约一分钟,服务器的CPU通常工作在100%.使用SHOW PROCESSLIST:

Command | Time | State        | Info
Query   |  100 | Sending data | SELECT a.prefix, a...
Query   |  107 | Sending data | SELECT a.prefix, a...
Query   |   50 | Sending data | SELECT a.prefix, a...
Run Code Online (Sandbox Code Playgroud)

有问题的查询是:

SELECT a.prefix, a.test_id, a.method_id, b.test_id
FROM a
LEFT JOIN b ON b.test_id = a.test_id
AND user_id = ?
AND year = ?
Run Code Online (Sandbox Code Playgroud)

所有这些列都是INDEXED,因此这不是问题.此外,当我在phpMyAdmin中运行查询(具有足够的LIMIT)时,完成需要0.05秒.另外,我发现自己无法重现这个问题是非常令人沮丧的,即使同时执行此查询两次并且发送垃圾邮件只会给我40%的CPU峰值.

使用EXPLAIN前缀查询会导致:

Id | select_type | table | type | possible_keys        | key     | key_len | …
Run Code Online (Sandbox Code Playgroud)

mysql debugging innodb

8
推荐指数
1
解决办法
1万
查看次数

在Javascript中匹配IE7和IE8中不可破坏的空白区域

我想在任何相对现代的浏览器中替换空格(因此对于IE,版本> = 7).

因此,给定字符串"Hello world!"我们会做:

<script type="text/javascript">
document.write("Result: '" + "Hello world!".replace(/\s/g, '') + "'");
</script>
Run Code Online (Sandbox Code Playgroud)

我们期望输出: Result: 'Helloworld!'

但在IE7和IE8虽然它没有使用非易碎空间如这一个:&#160;== &nbsp;==\u00A0

例如:

<script type="text/javascript">
document.write("Result: '" + String.fromCharCode(160).replace(/\s/g, '') + "'");
</script>
Run Code Online (Sandbox Code Playgroud)

将输出Result: 'Helloworld!'FF和IE> = 9以及Result : ' 'IE7和IE8.我勒个去?

这让我想知道这是否是唯一的例外?我根本找不到太多关于此的信息.是否有正则表达式可以删除所有空格,包括不可破坏的空格?

regex whitespace match internet-explorer-8 internet-explorer-7

5
推荐指数
1
解决办法
1282
查看次数