Sampson Error/Sampson Distance

Sampson误差是复杂性介于代数误差和几何误差之间,但非常近似于几何误差的一种误差

先介绍一下代数误差,代数误差简单的说就是误差函数值的模,例如 A h = ϵ Ah=\epsilon Ah=ϵ的代数误差为 ∣ ∣ A h ∣ ∣ 2 ||Ah||^2 Ah2,其中 ϵ \epsilon ϵ为误差向量,代数误差计算简便,但一般没有实际的物理意义,利用代数误差求出来的解可以用来做初值

几何误差,在图像中可以看成点和点之间的几何距离,若 x ^ = H x \hat x=Hx x^=Hx,那么几何误差为 d ( x ^ , H x ) d(\hat x,Hx) d(x^,Hx),想要使几何误差最小,需要同时估计 x , x ^ , H x,\hat x,H x,x^,H,复杂性太高,因此引入了sampson误差(或者说sampson距离)

sampson error

对于一点 X X X,满足 C H ( X ) = 0 C_H(X)=0 CH(X)=0,他的估计点为 X ^ = X + δ x , C H ( X ^ ) = 0 \hat X=X+\delta_x,C_H(\hat X)=0 X^=X+δx,CH(X^)=0
C H ( X + δ X ) = C H ( X ) + ∂ C H ∂ X δ X C_H(X+\delta_X)=C_H(X)+\frac{\partial C_H}{\partial X}\delta_X CH(X+δX)=CH(X)+XCHδX

C H ( X ) + ∂ C H ∂ X δ X = 0 C_H(X)+\frac{\partial C_H}{\partial X}\delta_X=0 CH(X)+XCHδX=0

记为
J δ X = − ϵ J\delta_X=-\epsilon JδX=ϵ

因此问题转化为求满足上式条件下使 ∣ ∣ δ X ∣ ∣ ||\delta_X|| δX最小的 δ X \delta_X δX

利用拉格朗日乘数法,引入拉格朗日乘子 λ \lambda λ,问题转化为最小化 δ X T δ X − λ T ( J δ X + ϵ ) \delta_X^T\delta_X-\lambda^T(J\delta_X+\epsilon) δXTδXλT(JδX+ϵ)
不难求得Sampson误差为
∣ ∣ δ X ∣ ∣ 2 = δ X T δ X = ϵ T ( J J T ) − 1 ϵ ||\delta_X||^2=\delta_X^T\delta_X=\epsilon^T(JJ^T)^{-1}\epsilon δX2=δXTδX=ϵT(JJT)1ϵ

x ′ F x = 0 x'Fx=0 xFx=0中, ϵ t ϵ J J t = ( x ′ F x ) 2 J J T \frac{\epsilon^t\epsilon}{JJ^t}=\frac{(x'Fx)^2}{JJ^T} JJtϵtϵ=JJT(xFx)2

J J T = ( F x i ) 1 2 + ( F x i ) 2 2 + ( F T x i ′ ) 1 2 + ( F T x i ′ ) 2 2 JJ^T=(Fx_i)_1^2+(Fx_i)_2^2+(F^Tx_i')_1^2+(F^Tx_i')_2^2 JJT=(Fxi)12+(Fxi)22+(FTxi)12+(FTxi)22
Sampson Distance为
∣ ∣ ϵ ∣ ∣ 2 = ( x ′ F x ) 2 ( F x i ) 1 2 + ( F x i ) 2 2 + ( F T x i ′ ) 1 2 + ( F T x i ′ ) 2 2 ||\epsilon||^2=\frac{(x'Fx)^2}{(Fx_i)_1^2+(Fx_i)_2^2+(F^Tx_i')_1^2+(F^Tx_i')_2^2} ϵ2=(Fxi)12+(Fxi)22+(FTxi)12+(FTxi)22(xFx)2

参考文献

Hartley R, Zisserman A. Multiple view geometry in computer vision[M]. Cambridge university press, 2003.

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:在使用sqlparse进行解析时,首先需要获取原始的SQL输入,然后创建解析器对象,使用解析器解析SQL生成具有层次结构的Java类,最后可以通过访问者模式对解析后的SQL对象进行操作和修改。\[1\]引用\[2\]:sqlparse使用Antlr4将SQL语句解析成语法树,生成未绑定的逻辑执行计划。在Spark中,可以使用spark.sqlContext.sql或sparkSession.sql方法执行SQL查询,这些方法会将SQL语句解析成DataFrame。\[2\]引用\[3\]:sqlparse的parse包是该组件中最重要的部分,它将SQL解析成一组有血缘关系的对象集合。对于使用者来说,了解如何对解析后的SQL进行修改即可,不需要深入了解语法解析的原理。\[3\] 因此,sqlparse的原理是通过解析器将SQL语句解析成具有层次结构的对象,并提供了操作和修改这些对象的方法。它使用Antlr4进行词法和语法解析,生成未绑定的逻辑执行计划或DataFrame,以便进行后续的数据处理和分析。 #### 引用[.reference_title] - *1* *3* [Sql解析转换之JSqlParse完整介绍](https://blog.csdn.net/Interest1_wyt/article/details/123744612)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Spark | 解析SparkSQL运行原理之Sql Parse 阶段](https://blog.csdn.net/Sampson_Hugo/article/details/107065741)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值