• 大小: 38KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: 其他
  • 标签: mean  shift  

资源简介

在国外大学的网页上下载的,mean shift用于分割,分类图像。大家都知道 mean shift算法的应用领域是很广泛的,在跟踪,分割方面效果还是不错的。所以嘛,下载看看喽!

资源截图

代码片段和文件信息

/////////////////////////////////////////////////////////////////////////////
// Name:        fams.cpp
// Purpose:     fast adaptive meanshift implementation
// Author:      Ilan Shimshoni
// Modified by: Bogdan Georgescu
// Created:     08/14/2003
// Version:     v0.1
/////////////////////////////////////////////////////////////////////////////

#include 
#include 
#include 
#include 
#include 
#include 
#include “fams.h“


FAMS::FAMS(int no_lsh)
{
   hasPoints_ = 0;
   nsel_ = 0;
   npm_ = 0;
   hashCoeffs_ = NULL;
   noLSH_=no_lsh;

   time_t tt1;
   time(&tt1);
   srand((unsigned)tt1);
//   srand(100);

   nnres1_ = 0;
   nnres2_ = 0;
}

FAMS::~FAMS()
{
   CleanData();
   
}

void FAMS::CleanData()
{
   CleanPoints();
   CleanSelected();
   CleanPrunedModes();
   CleanHash();
}

void FAMS::CleanPoints()
{
   if (hasPoints_)
   {
      delete [] points_;
      delete [] data_;
      delete [] rr_;
      hasPoints_ = 0;
   }
}

void FAMS::CleanSelected()
{
   if (nsel_ > 0)
   {
      delete [] psel_;
      delete [] modes_;
      delete [] hmodes_;
      nsel_ = 0;
   }
}

void FAMS::CleanPrunedModes()
{
   if (npm_ > 0)
   {
      delete [] prunedmodes_;
      delete [] nprunedmodes_;
      npm_ = 0;
   }
}

void FAMS::CleanHash()
{
   if (hashCoeffs_ != NULL)
   {
      delete [] hashCoeffs_;
      hashCoeffs_ = NULL;
   }
}

int FAMS::LoadPoints(char* filename)
{
   bgLog(“Load data points from %s...“filename);
   CleanPoints();
   FILE* fd;
   fd = fopen(filename “r“);

   if (!fd)
   {
      bgLog(“Error opening %s\n“ filename);
      return 1;
   }
   fscanf(fd “%d %d“ &n_ &d_);
   if ((n_<1) || (d_<1))
   {
      bgLog(“Error reading %s\n“ filename);
      fclose(fd);
      return 1;
   }

   // allocate data
   float* pttemp;
   pttemp = new float[n_*d_];
   int i;
   for (i=0; (i<(n_*d_)) && (fscanf(fd “%g“ &pttemp[i]) == 1); i++);
   fclose(fd);

   if (i!= (n_*d_))
   {
      bgLog(“Error reading %s\n“ filename);
      delete [] pttemp;
      return 1;
   }

   // allocate and convert to integer
   for (i=0 minVal_=pttemp[0] maxVal_=pttemp[0]; i<(n_*d_); i++)
   {
      if (minVal_>pttemp[i])
         minVal_ = pttemp[i];
      else if (maxVal_         maxVal_ = pttemp[i];
   }
   data_ = new unsigned short[n_*d_];
   rr_ = new double[d_];
   hasPoints_ = 1;
   float deltaVal = maxVal_-minVal_;
   if (deltaVal == 0) deltaVal = 1;
   for (i=0; i<(n_*d_); i++)
      data_[i] = (unsigned short) (65535.0*(pttemp[i]-minVal_)/deltaVal);
   delete [] pttemp;
   dataSize_ = d_*sizeof(unsigned short);

   points_ = new fams_point[n_];
   unsigned short* dtempp;
   for (i=0 dtempp=data_; i   {
      points_[i].data_ = dtempp;
      points_[i].usedFlag_ = 0;
   }
   bgLog(“done\n“);
   return 0;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       91136  2003-11-27 14:22  fams.ncb
     文件       54784  2003-11-27 14:22  fams.opt
     文件        1228  2003-11-27 14:22  fams.plg
     文件       36476  2003-11-27 14:22  fams.cpp
     文件       11187  2003-11-27 13:56  fams.h
     文件        4336  2003-11-26 10:22  fams.dsp
     文件        3370  2003-10-05 15:43  README.txt
     文件         531  2003-08-14 13:39  fams.dsw

评论

共有 条评论