资源简介
KLT算法C++实现,与大家分享
KLT
An implementation of the Kanade-Lucas-Tomasi feature tracker
代码片段和文件信息
/*********************************************************************
* convolve.c
*********************************************************************/
/* Standard includes */
#include
#include
#include /* malloc() realloc() */
/* Our includes */
#include “base.h“
#include “error.h“
#include “convolve.h“
#include “klt_util.h“ /* printing */
#define MAX_KERNEL_WIDTH 71
typedef struct {
int width;
float data[MAX_KERNEL_WIDTH];
} ConvolutionKernel;
/* Kernels */
static ConvolutionKernel gauss_kernel;
static ConvolutionKernel gaussderiv_kernel;
static float sigma_last = -10.0;
/*********************************************************************
* _KLTToFloatImage
*
* Given a pointer to image data (probably unsigned chars) copy
* data to a float image.
*/
void _KLTToFloatImage(
KLT_PixelType *img
int ncols int nrows
_KLT_FloatImage floatimg)
{
KLT_PixelType *ptrend = img + ncols*nrows;
float *ptrout = floatimg->data;
/* Output image must be large enough to hold result */
assert(floatimg->ncols >= ncols);
assert(floatimg->nrows >= nrows);
floatimg->ncols = ncols;
floatimg->nrows = nrows;
while (img < ptrend) *ptrout++ = (float) *img++;
}
/*********************************************************************
* _computeKernels
*/
static void _computeKernels(
float sigma
ConvolutionKernel *gauss
ConvolutionKernel *gaussderiv)
{
const float factor = 0.01f; /* for truncating tail */
int i;
assert(MAX_KERNEL_WIDTH % 2 == 1);
assert(sigma >= 0.0);
/* Compute kernels and automatically determine widths */
{
const int hw = MAX_KERNEL_WIDTH / 2;
float max_gauss = 1.0f max_gaussderiv = (float) (sigma*exp(-0.5f));
/* Compute gauss and deriv */
for (i = -hw ; i <= hw ; i++) {
gauss->data[i+hw] = (float) exp(-i*i / (2*sigma*sigma));
gaussderiv->data[i+hw] = -i * gauss->data[i+hw];
}
/* Compute widths */
gauss->width = MAX_KERNEL_WIDTH;
for (i = -hw ; fabs(gauss->data[i+hw] / max_gauss) < factor ;
i++ gauss->width -= 2);
gaussderiv->width = MAX_KERNEL_WIDTH;
for (i = -hw ; fabs(gaussderiv->data[i+hw] / max_gaussderiv) < factor ;
i++ gaussderiv->width -= 2);
if (gauss->width == MAX_KERNEL_WIDTH ||
gaussderiv->width == MAX_KERNEL_WIDTH)
KLTError(“(_computeKernels) MAX_KERNEL_WIDTH %d is too small for “
“a sigma of %f“ MAX_KERNEL_WIDTH sigma);
}
/* Shift if width less than MAX_KERNEL_WIDTH */
for (i = 0 ; i < gauss->width ; i++)
gauss->data[i] = gauss->data[i+(MAX_KERNEL_WIDTH-gauss->width)/2];
for (i = 0 ; i < gaussderiv->width ; i++)
gaussderiv->data[i] = gaussderiv->data[i+(MAX_KERNEL_WIDTH-gaussderiv->width)/2];
/* Normalize gauss and deriv */
{
const int hw = gaussderiv->width / 2;
float den;
den = 0.0;
for (i = 0 ; i < gauss->width ; i++) den += gauss->data[i];
for (i = 0 ; i < ga
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2007-08-30 19:52 klt\
文件 694 2005-08-17 15:09 klt\ba
文件 8204 2005-08-17 14:46 klt\convolve.c
文件 649 1998-10-07 16:15 klt\convolve.h
目录 0 2007-08-30 19:52 klt\doc\
文件 182 1998-10-07 16:15 klt\doc\home_motif.gif
文件 2896 2006-11-08 17:47 klt\doc\index.html
文件 2100 2007-08-30 19:55 klt\doc\installation.html
文件 9797 2007-08-30 19:59 klt\doc\log.html
文件 164 1998-10-07 16:15 klt\doc\next_motif.gif
文件 212 1998-10-07 16:15 klt\doc\previous_motif.gif
文件 2317 2007-08-30 19:54 klt\doc\previous_versions.html
目录 0 2007-08-30 19:52 klt\doc\ref\
文件 1421 1998-10-07 16:15 klt\doc\ref\change_pyramid.html
文件 621 1998-10-07 16:15 klt\doc\ref\count.html
文件 1680 1998-10-07 16:15 klt\doc\ref\create.html
文件 1968 1998-10-07 16:15 klt\doc\ref\feature.html
文件 1264 1998-10-07 16:15 klt\doc\ref\fh.html
文件 1238 1998-10-07 16:15 klt\doc\ref\fl.html
文件 1220 1998-10-07 16:15 klt\doc\ref\ft.html
文件 1384 1998-10-07 16:15 klt\doc\ref\index.html
文件 561 1998-10-07 16:15 klt\doc\ref\print_tc.html
文件 2264 1998-10-07 16:15 klt\doc\ref\replace.html
文件 3368 1998-10-07 16:15 klt\doc\ref\select.html
文件 1076 1998-10-07 16:15 klt\doc\ref\stop.html
文件 1885 1998-10-07 16:15 klt\doc\ref\store.html
文件 9511 2007-08-30 19:48 klt\doc\ref\tc.html
文件 4109 1998-10-07 16:15 klt\doc\ref\track.html
文件 943 1998-10-07 16:15 klt\doc\ref\update_border.html
文件 674 1998-10-07 16:15 klt\doc\ref\verbosity.html
文件 3064 2005-08-22 20:38 klt\doc\ref\write.html
............此处省略55个文件信息
- 上一篇:RSA加解密源码VC++实现
- 下一篇:ccs 图像锐化工程
评论
共有 条评论