我想从计算机程序中的 3D 体积中获取随机 2D 切片以生成噪声。我决定使用旋转矩阵,据我所知,它必须是旋转组 SO(3) 的成员。如何创建该组的统一随机成员?
问问题
199 次
2 回答
4
在 0 和 1 之间选择三个随机值 u 1、 u 2和 u 3 。
均匀随机四元数由下式给出:
w = sqrt(1 - u 1 )sin(2pi*u 2 )
x = sqrt(1 - u 1 )cos(2pi*u 2 )
y = sqrt(u 1 )sin(2pi*u 3 )
z = sqrt(u 1 )cos(2pi*u 3 )
然后,您可以使用以下公式生成适当的旋转矩阵:
| 2 2 |
| 1 - 2y - 2z 2xy - 2zw 2xz + 2yw |
| |
| 2 2 |
M = | 2xy + 2zw 1 - 2x - 2z 2yz - 2xw |
| |
| 2 2 |
| 2xz - 2yw 2yz + 2xw 1 - 2x - 2y |
| |
于 2012-05-24T22:14:54.503 回答
1
您可以绘制一个随机 3D 向量,由三个独立的随机变量作为每个轴组成。然后,您可以将此向量定义为随机 2D 切片的法线向量以及该 2D 切片与原点的距离。我很确定(尽管没有正式的证据)这种方法应该在可能的 2D 切片上提供均匀分布(前面的陈述基本上是非正式的)。
编辑:再三考虑,您可能应该绘制一个自变量来表示 2D 切片与原点的距离。否则,您将得到一个 2D 切片分布,这些切片更有可能与原点相距一定距离。
于 2012-05-24T21:10:45.580 回答