• 大小: 22KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: 其他
  • 标签:

资源简介

Visual Geometry Group项目组开发的超分辨率重建的源码,具有很好的效果。 附有详细的文档说明,可直接运行

资源截图

代码片段和文件信息

#include “mex.h“

/* eout = elle_eval_huber(xalpbetbivbih); */

double alp;

double huber(double x) {
    if (x<0) {x=-x;}
    if (x    else { return (2*x*alp - alp*alp); } 
    return -1;
}


void mexFunction(int nlhs mxArray *plhs[] int nrhs const mxArray *prhs[]) {
   const double r2 = 1.414213562373095; /* ideally this would be sqrt(2) but the compiler is complaining.. */
   uint i=0 j=0;
   
   /* Check for proper number of arguments. */
   if(nrhs!=5) { 
       printf(“Wrong number of inputs (Should have: x alpha beta biv bih)\n“);
       printf(“I see %i and should see 5.\n“nrhs);
       return;
   }
   if(nlhs>1) { printf(“Too many output arguments“); return; }
   
   if(mxGetClassID(prhs[0])!=mxDOUBLE_CLASS) { printf(“X (1st arg) must be of type double.“); return;}
   if(mxGetClassID(prhs[1])!=mxDOUBLE_CLASS) { printf(“alpha (2nd arg) must be of type double.“); return;}
   if(mxGetClassID(prhs[2])!=mxDOUBLE_CLASS) { printf(“alpha (3rd arg) must be of type double.“); return;}
   if(mxGetClassID(prhs[3])!=mxDOUBLE_CLASS) { printf(“biv (4th arg) must be of type double.“); return;}
   if(mxGetClassID(prhs[4])!=mxDOUBLE_CLASS) { printf(“bih (5th arg) must be of type double.“); return;}
   if(mxGetM(prhs[0])>1) {printf(“X must be a row vector.“); return;}
   
   double *X = (double *) mxGetPr(prhs[0]);
   alp = (double) mxGetPr(prhs[1])[0];
   double bet = (double) mxGetPr(prhs[2])[0];
   int biv = (int) mxGetPr(prhs[3])[0];
   int bih = (int) mxGetPr(prhs[4])[0];

   plhs[0] = mxCreateDoubleMatrix(11mxREAL);
   double *eout = mxGetPr(plhs[0]);
   
   double etemp = 0;
   int c;
   for (i=0; i       for (j=0; j           c = j*biv+i;
           if (i<(biv-1)) { *eout += huber(X[c+1]-X[c]);
           if (j<(bih-1)) { *eout += huber((X[c+biv+1]-X[c])/r2); }
           }
           if (j<(bih-1)) { *eout += huber(X[c+biv]-X[c]);
           if (i>=1) { *eout += huber((X[c+biv-1]-X[c])/r2); }
           }
       }
   }
   *eout *= bet/2; /* now eout = nu*Huber(); */
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2099  2008-12-09 01:05  elleSR_0.2\elle_eval_huber.c

     文件       3121  2008-12-09 01:05  elleSR_0.2\elle_eval_huber_grad.c

     文件       9337  2008-12-09 01:05  elleSR_0.2\getAvim.c

     文件       8452  2008-12-09 01:05  elleSR_0.2\makeLR.c

     文件      12199  2008-12-09 01:05  elleSR_0.2\makeW.c

     文件       1170  2008-12-09 01:05  elleSR_0.2\nrand.h

     文件       6678  2008-12-09 01:05  elleSR_0.2\README

     文件       1704  2008-12-09 01:05  elleSR_0.2\SR_demo.m

     文件       3481  2009-02-25 23:29  elleSR_0.2\superres_huber.m

     文件       3197  2008-12-09 01:05  elleSR_0.2\superres_ml.m

     文件       2675  2008-12-09 01:05  elleSR_0.2\synthdata_demo.m

     文件       6846  2009-04-14 10:08  elleSR_0.2\新建 文本文档.txt

     目录          0  2009-05-19 10:25  elleSR_0.2

----------- ---------  ---------- -----  ----

                60959                    13


评论

共有 条评论