求矩形金字塔内uniform sampling (by volume)实现方法(已知相机内参)
矩形金字塔(相机视锥体)内按体积均匀采样实现方案
核心思路
体积均匀采样的本质是让采样点的概率密度与微元体积成正比,即每个微小体积单元被采样到的概率相同。结合相机内参,可将问题转化为相机坐标系下的参数化采样,通过逆变换采样生成符合要求的随机点。
步骤1:结合相机内参定义矩形金字塔范围
相机内参包含焦距f、图像宽W、高H、主点坐标(cx, cy),近平面深度z_near,远平面深度z_far。在相机坐标系下:
- 任意深度
z(满足z_near ≤ z ≤ z_far)对应的投影面上,x方向范围为[z*(0 - cx)/f, z*(W - cx)/f],y方向范围为[z*(0 - cy)/f, z*(H - cy)/f] - 若主点在图像中心(
cx=W/2,cy=H/2),则x、y范围简化为[-z*W/(2f), z*W/(2f)]和[-z*H/(2f), z*H/(2f)]
步骤2:体积均匀采样的具体实现
采用分层采样:先采样深度z,再采样对应深度下的x、y坐标,确保联合概率密度符合均匀体积分布:
- 生成3个
[0,1]区间的均匀随机数u1, u2, u3 - 采样深度
z:
由于体积随z³增长,深度的累积分布函数为CDF(z) = (z³ - z_near³)/(z_far³ - z_near³),逆变换得到:z = (z_near³ + u1*(z_far³ - z_near³))^(1/3) - 采样x、y坐标:
- 先采样图像平面上的像素坐标
u = W*u2,v = H*u3(均匀分布在图像尺寸范围内) - 通过透视投影关系转换到相机坐标系:
X = z*(u - cx)/f Y = z*(v - cy)/f
- 先采样图像平面上的像素坐标
- 最终得到的
(X, Y, z)即为矩形金字塔内按体积均匀采样的点。
步骤3:底面(截面)宽度/长度的概率分布
以x方向的截面宽度w=2|X|为例,其概率分布推导如下:
- X的边缘概率密度:
分两种情况:- 当
|X| ≤ z_near*(W - 2cx)/(2f)(主点偏移时的近平面X范围),X的概率密度为常数:p(X) = 3f*(z_far + z_near)/(2W*(z_far² + z_far*z_near + z_near²)) - 当
z_near*(W - 2cx)/(2f) < |X| ≤ z_far*(W - 2cx)/(2f),X的概率密度随X²递减:
(注:若主点在中心,可简化为p(X) = 3f/(2W*(z_far³ - z_near³)) * (z_far² - (f²X²)/( (u - cx)² ) )p(X) = 3f/(2W*(z_far³ - z_near³))*(z_far² - 4f²X²/W²))
- 当
- 宽度w的概率分布:
由于w=2|X|,通过变量替换可得w的概率密度与X=w/2处的密度相等,即p(w) = p(X=w/2),分布趋势为:在近平面宽度范围内为常数,超出后随w²递减。
y方向的长度分布与x方向完全类似,只需将公式中的W替换为H,cx替换为cy即可。
内容的提问来源于stack exchange,提问作者Marianne Sheridan
相关产品推荐
相关产品推荐

