我想从计算机程序中的3D体积中获取随机2D切片以产生噪声。我决定使用旋转矩阵,我理解它必须是旋转组SO(3)的成员。如何创建该组的统一随机成员?
答案 0 :(得分:3)
选择三个随机值u 1 ,u 2 ,u 3 在0和1之间。
统一随机四元数is given by:
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 )
然后,您可以使用this formula生成适当的旋转矩阵:
| 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 |
| |
答案 1 :(得分:1)
您可以绘制随机3D矢量,由三个独立随机变量的组合形成每个轴。然后,您可以将此向量定义为随机2D切片的法线向量以及该2D切片与原点的距离。我很确定(尽管没有正式的证明)这种方法应该在可能的2D切片上给出均匀分布(之前的陈述基本上是非正式的)。
编辑:第二个想法,您应该绘制一个自变量来表示2D切片与原点的距离。否则,您将拥有2D切片的分布,这些切片更可能距离原点一定距离。