opencv 学习备注2

 发现cvresize后的image,值域可能超出[0,1],导致转换成bitmap失败,不知道是否和插值算法有关。以后在看了。先记下。

现在先修改下IplImage2Bmp函数加上归一功能

 

在把rob hess的代码加到winform中的时候(c++),注意要把带有fprintf的地方该掉。否则会有链接错误。

关于这个错误的说明,可以google extern c,extern c++。

rob hess中interp_step的理解,Lowe论文公式3,求亚像素精度的最佳极值点。同时求x,y,s三维的亚像素最佳值

为了保证求得稳定的结果,这个函数被循环执行5次。

void interp_step( IplImage*** dog_pyr, int octv, int intvl, int r, int c,
     double* xi, double* xr, double* xc )
{
 CvMat* dD, * H, * H_inv, X;
 double x[3] = { 0 };

 dD = deriv_3D( dog_pyr, octv, intvl, r, c );//理解一阶导数二阶导数,则deriv_3D和hessian_3D就能理解。
 H = hessian_3D( dog_pyr, octv, intvl, r, c );
 H_inv = cvCreateMat( 3, 3, CV_64FC1 );
 cvInvert( H, H_inv, CV_SVD );
 cvInitMatHeader( &X, 3, 1, CV_64FC1, x, CV_AUTOSTEP );//X只是一个指针,实际的值放在x中,
 cvGEMM( H_inv, dD, -1, NULL, 0, &X, 0 );//实际的值放在x中,看上面一行。cv的代码还是不够直观,这点比不上matlab。

 cvReleaseMat( &dD );
 cvReleaseMat( &H );
 cvReleaseMat( &H_inv );

 *xi = x[2];
 *xr = x[1];
 *xc = x[0];
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值