I have to assume incident angle is gaussian distributed, and use uncertainty propagation rule.

 

I= F(O,A) = arccos(<O,A>/|A|)

where I is the incident angle, A= [a,b,c] is the surface normal before normalization, Σ is [σa,σb,σc], O is the camera pose vector. <> is inner product symbol

The preciseness of this method depends on the ratio between sigma term and partial derivative term. It is relatively precise when sigma term is smaller than partial derivative term.

 

Experiment

 

let surface normal N be a random vector

 

let uncertainty of N be sigma = N.*(rand(1,3)*0.1+0.1)

 

let camera pose be an random vector

 

figure: ratio between estimated σI and the real σI from 1000000 points simulation. A result from 1000 trial experiment.

 

和monte carlo的对照看来效果并不理想

误差传递公式用的是一阶泰勒展开

https://zh.wikipedia.org/wiki/%E8%AF%AF%E5%B7%AE%E4%BC%A0%E6%92%AD

二阶貌似是这样:

http://stats.stackexchange.com/questions/13004/propagation-of-error-using-2nd-order-taylor-series

 

实验以后发现二阶分量小到忽略不计,无法改善

难道是求导错了?

Copyright © 2024 Pallashadow
Powered by .NET 8.0 on Kubernetes