• 大小: 4KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: C/C++
  • 标签: tamura  texture  c++  

资源简介

tamura texture c++ 使用openCV2.4.6 + vs2010 实现.

资源截图

代码片段和文件信息

#include “tamura.h“
#include “fstream“
#define PI (3.141592653589793)


class MYERROR: public runtime_error{
public: 
MYERROR(const char * msg = “ “): runtime_error(msg){}
};


void disMat( Mat mat  string path ){
if( NULL == mat.data ){
throw MYERROR(“ “) ;
}
int rows = mat.rows ;
int cols = mat.cols ;
fstream out ; 
out.open( path  ios::out | ios::app ) ;

for( int i = 0 ; i < rows ; i ++ ){
for( int j = 0 ; j < cols ; j++ ){
if( mat.type() == CV_64FC1 ){
 double temp = *(double*)( mat.data + i * mat.step.p[0] + j * mat.step.p[1] )  ;
 out << temp  << ‘\t‘ ;
}
else{
out << (int)*( mat.data + i * mat.step.p[0] + j * mat.step.p[1] ) << ‘\t‘ ;
}
}
out << endl ;
}
out.close() ;
}

TAMURA::TAMURA( Mat& mat  int inkValue  int inhistBins ){
imgMat = mat ; 
kValue = inkValue ; 
histBins = inhistBins ;
coarHist = new double[histBins] ;
coarseness = 0 ; 
contrast = 0 ;
directionality = 0 ;

calFeatures() ;
}
//======================================================
/// constructor
//======================================================
TAMURA::TAMURA( const string& imgPath  int inkValue  int inhistBins ){
imgMat = imread( imgPath  0 ) ;
kValue = inkValue ; 
histBins = inhistBins ;
coarHist = new double[histBins] ;
coarseness = 0 ; 
contrast = 0 ;
directionality = 0 ;

calFeatures() ;
}

//====================================================
/// deconstructor
//====================================================
TAMURA::~TAMURA(){

if( NULL != coarHist ){
delete [] coarHist ;
coarHist = NULL ;
}
}



//======================================================
/// calculate features
//======================================================
void TAMURA::calFeatures( void ){
// coarseness 
coarseness = calCoarseness( imgMat  coarHist  kValue  histBins ) ;

// constrast
contrast = calContrast( imgMat ) ;

//directionality
directionality = calDirectionality( imgMat ) ;
}


//=====================================================
/// calculate coarseness for a greylevel image
//=====================================================
double TAMURA::calCoarseness( Mat& mat  double* coarHist  int kVal   int histBins ){
if( NULL == mat.data ){
throw MYERROR( “ mat is empty “ ) ;
}
if( kVal < histBins ){
throw MYERROR( “ input parameters error !!“ ) ;
}

// mats for average horizonal and vertical engergy differece  with size k*k
Mat *AverK = new Mat[kValue] ;
Mat *EnKh = new Mat[kValue] ;
Mat *EnKv = new Mat[kValue] ;

for( int i = 0 ; i < kVal ; i ++ ){
AverK[i] = Mat::zeros( mat.size()  CV_64FC1 ) ;
EnKh[i] = Mat::zeros( mat.size()  CV_64FC1 ) ;
EnKv[i] = Mat::zeros( mat.size()  CV_64FC1 ) ;
}

int rows = mat.rows ; 
int cols = mat.cols ;
int lenOfk = 1 ;

//step 1 : sum over different window size
for( int i = 0 ; i < kVal ; i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       13482  2013-08-04 20:47  Tamura texture C++\tamura.cpp
     文件        1082  2013-08-04 20:47  Tamura texture C++\tamura.h
     目录           0  2013-08-04 20:48  Tamura texture C++\

评论

共有 条评论