|
阅读:1314回复:1
关于配准,如何通过LeastSquareFit函数得到残差和均方差?
<P>最近做关于配准方面的开发,对于残差和均方差的概念不太熟悉,不知道都是怎么计算出来的,只知道跟多项式转换有关。</P>
<P>看了一些网上的说法,都说的不太清楚,希望哪位大牛能解释下,不胜感激。</P> <P>我的程序中,已知四组控制点以后,然后调用了IRasterGeometryProc接口下的LeastSquareFit函数,通过返回一个variant对象,其中有两个VARIANT_BOOL参数,不知道怎么搞的,我尝试了四种组合情况,但返回的都是一个4*7的double数组,而且里面没有和arcmap中在同样的控制点下计算出来的残差,而且数组里面的值行列位置貌似是颠倒的,所有数据实际上是以一个一维数组的形式存放的,请问通过这个函数到底能不能得到我想得到的残差,以及如何通过得到的残差计算均方差(RMS)?</P> <P>四个控制点确定以后,残差的计算出了跟多项式转换方式相关以外还有其他重要因素没有?</P> <P>程序中部分代码如下,希望有大牛能解燃煤之急啊。。。小弟感激涕零。。</P> <P> VARIANT pVar;<BR> m_ipRasterGeomProc->LeastSquareFit(m_ipSourceControlPoints, m_ipTargetControlPoints, esriGeoTransPolyOrder1, TRUE, FALSE, ;pVar);<BR> SAFEARRAY *safeAry = pVar.parray;<BR> long nDem = safeAry->rgsabound->cElements;<BR> double *data = (double*)safeAry->pvData;<BR> double dRMS = 0.0000;<BR> for (long i=0; i<nCount; i++)<BR> {<BR> for (int j = 0; j < 7; j ++)<BR> {<BR> double data0 = data[i*nDem + j];<BR> ... <BR> }<BR> double data1 = data[4*nCount+i*2];<BR> double data2 = data[4*nCount+i*2+1];<BR> double residual = ???; //residual残差应该怎么算。。?<BR> dRMS = ???;//RMS又应该怎么算?<BR> }</P> |
|
|
1楼#
发布于:2009-09-03 20:27
<P>已经解决...</P>
<P>看函数两天没注意到这点...</P> <P> m_ipRasterGeomProc->LeastSquareFit(m_ipSourceControlPoints, m_ipTargetControlPoints, esriGeoTransPolyOrder1, VARIANT_TRUE, VARIANT_FALSE, ;pVar);<BR></P> |
|