灰度共生矩阵VC++实现
//////////////////////////////////////////////////////////////////////
// GrayShow.cpp: implementation of the CGrayShow class. // 灰灰灰灰灰灰灰灰灰灰
//
//////////////////////////////////////////////////////////////////////
delete []PMatrixH; }
//135灰度度度度灰灰灰灰灰灰 //90灰度度度度灰灰灰灰灰灰
//////////////////////////////////////////////////////////////////// //功功:装装原原 //参原:FilePathName-原原图图图图图
//计灰ux double ux = 0.0; double localtotal = 0.0; for(i=0; i<dim; i++) {
localtotal = 0.0; for(j=0; j<dim; j++) {
localtotal += pdMatrix[i*dim+j]; } ux += (double)i * localtotal; }
{
int i,j;
double *pdMatrix;
pdMatrix = new double[dim*dim];
int total = 0; for(i=0; i<dim; i++) {
for(j=0; j<dim; j++) {
total += pMatrix[i*dim+j]; } }
for(i=0; i<dim; i++) {
//
FeatureCorrelation-相相
//
FeatureLocalCalm-局局局局
//
pMatrix-灰灰灰灰
//
dim-灰灰灰灰度共原
///////////////////////////////////////////////////////////////////////////////////
for(j=0; j<dim; j++) {
pdMatrix[i*dim + j] = (double)pMatrix[i*dim + j]/(double)total; } }
FeatureEnergy = 0.0; FeatureEntropy = 0.0;
2
FeatureInertiaQuadrature = 0.0; FeatureLocalCalm = 0.0;
//计灰sigmay double sigmay = 0.0; for(j=0; j<dim; j++) {
localtotal = 0.0; for(i=0; i<dim; i++) {
localtotal += pdMatrix[i*dim+j]; } sigmay += (double)(j-uy) * (double)(j-uy) * localtotal; }
//
m_tOriPixelArray[i][j].rgbReserved = 0;
//
m_tResPixelArray[i][j]=m_tOriPixelArray[i][j];
//
ImageArray[i][j] = (BYTE)(((unsigned int)m_tOriPixelArray[i][j].rgbBlue
//计灰相相 FeatureCorrelation = 0.0; for(i=0; i<dim; i++) {
for(j=0; j<dim; j++)
3
{ FeatureCorrelation += (double)(i-ux) * (double)(j-uy) * pdMatrix[i*dim+j];
// m_tResPixelArray = new RGBQUAD*[ImageHeight];
// ImageArray = new BYTE*[ImageHeight];
// for(int l=0 ; l<ImageHeight; l++)
// {
//
m_tOriPixelArray[l] = new RGBQUAD[ImageWidth];
#include "stdafx.h"
#include "GrayShow.h" #include "math.h"
#ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif
//
{
//
delete m_tOriPixelArray[i];
1
//
delete m_tResPixelArray[i];
//
delete ImageArray[i];
//
}
// }
//
// m_dib->Open(FilePathName);
// ImageWidth = m_dib->GetWidth();
//
PMatrixV[i] = new int[GrayLayerNum];
// }
}
CGrayShow::~CGrayShow() {
if(PMatrixRD)
delete []PMatrixRD ; if(PMatrixLD)
delete []PMatrixLD ; if(PMatrixV)
delete []PMatrixV ; if(PMatrixH)
// for(i=0; i<GrayLayerNum; i++)
// {
//
PMatrixH[i] = new int[GrayLayerNum];
//
PMatrixLD[i]= new int[GrayLayerNum];
//
PMatrixRD[i]= new int[GrayLayerNum];
for(j=0; j<ImageWidth; j++)
//
{
//
m_tOriPixelArray[i][j].rgbBlue =colorTable[count++];
//
m_tOriPixelArray[i][j].rgbGreen=colorTable[count++];
//
m_tOriPixelArray[i][j].rgbRed =colorTable[count++];
FeatureEntropy -= pdMatrix[i*dim+j]*log(pdMatrix[i*dim+j]); }
//惯惯灰 FeatureInertiaQuadrature += (double)(i-j)*(double)(i-j)*pdMatrix[i*dim+j];
//局局局局 FeatureLocalCalm += pdMatrix[i*dim+j]/(1+(double)(i-j)*(double)(i-j)); } }
//m_tOriPixelArray = NULL;//原原原原原原 //m_tResPixelArray = NULL;//参参原原原原
// m_dib = new CDib();
distance = 5;
FilterWindowWidth = 16; GrayLayerNum = 16; //初原初初初8个灰灰个,可可可可 //这这灰灰灰灰这初GrayLayerNum×GrayLayerNum
// ImageHeight = m_dib->GetHeight();
//
// BYTE *colorTable;
// colorTable = (BYTE *)m_dib->m_pDibBits;
// int byteBitCount = m_dib->GetBiBitCount()/8;
//
// m_tOriPixelArray = new RGBQUAD*[ImageHeight];
// }
//}
////////////////////////////////////////////////////////////////////////////////////
//函原功功:计灰计计计计
//参原:FeatureEnergy-功能
//
FeatureEntropy-熵
//
Fea惯灰
// void CGrayShow::LoadImage(CString &FilePathName)
// {
//
// }
// {
// int i,j; // //检检检检初检,不初检不不不不不不
// if(m_tOriPixelArray !=NULL)
// {
//
for(i=0; i<ImageHeight; i++)
//计灰功能、熵、惯惯灰、局局局局 for(i=0; i<dim; i++) {
for(j=0; j<dim; j++) {