亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? grayshow.cpp

?? 這是一本書上的圖象的紋理分析方法的代碼
?? CPP
字號:
//////////////////////////////////////////////////////////////////////
// GrayShow.cpp: implementation of the CGrayShow class.
// 灰度共現矩陣算法實現
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Texture.h"
#include "GrayShow.h"
#include "math.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CGrayShow::CGrayShow()
{
	PMatrixRD = NULL;	//45度方向上的灰度共現矩陣
	PMatrixLD = NULL;	//135度方向上的灰度共現矩陣
	PMatrixV = NULL;		//90度方向上的灰度共現矩陣
	PMatrixH = NULL;		//0度方向上的灰度共現矩陣
	ImageArray = NULL;	//原始的圖像數據數組

	m_tOriPixelArray = NULL;//原始位圖數據
	m_tResPixelArray = NULL;//參考位圖數據
	m_dib = new CDib();

	distance = 5;
	FilterWindowWidth = 16;
	GrayLayerNum = 8; //初始化設為8個灰度層,可以修改
	//這樣共現矩陣均為GrayLayerNum×GrayLayerNum
	int i;
	PMatrixH = new int*[GrayLayerNum];
	PMatrixLD= new int*[GrayLayerNum];
	PMatrixRD= new int*[GrayLayerNum];
	PMatrixV = new int*[GrayLayerNum];
	for(i=0; i<GrayLayerNum; i++)
	{
		PMatrixH[i] = new int[GrayLayerNum];
		PMatrixLD[i]= new int[GrayLayerNum];
		PMatrixRD[i]= new int[GrayLayerNum];
		PMatrixV[i] = new int[GrayLayerNum];
	}

}

CGrayShow::~CGrayShow()
{

}

////////////////////////////////////////////////////////////////////
//功能:裝載圖像
//參數:FilePathName-圖像文件路徑名
void CGrayShow::LoadImage(CString &FilePathName)
{
	int i,j;
	//檢測是否為空,不為空則要釋放內存
	if(m_tOriPixelArray !=NULL)
	{
		for(i=0; i<ImageHeight; i++)
		{
			delete m_tOriPixelArray[i];
			delete m_tResPixelArray[i];
			delete ImageArray[i];
		}
	}

	m_dib->Open(FilePathName);
	ImageWidth = m_dib->GetWidth();
	ImageHeight = m_dib->GetHeight();

	BYTE	*colorTable;
	colorTable = (BYTE *)m_dib->m_pDibBits;
	int byteBitCount  = m_dib->GetBiBitCount()/8;

	m_tOriPixelArray  = new RGBQUAD*[ImageHeight];
	m_tResPixelArray  = new RGBQUAD*[ImageHeight];
	ImageArray = new BYTE*[ImageHeight];
	for(int l=0 ; l<ImageHeight; l++)
	{
		m_tOriPixelArray[l] = new RGBQUAD[ImageWidth];
		m_tResPixelArray[l] = new RGBQUAD[ImageWidth];
		ImageArray[l] = new BYTE[ImageWidth];
	}

	int count = 0;
	for(i=ImageHeight-1; i>=0; i--)
	{
		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++];
			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
								+(unsigned int)m_tOriPixelArray[i][j].rgbGreen
								+(unsigned int)m_tOriPixelArray[i][j].rgbRed)/3);
			count += byteBitCount-3;
		}
		count += (4-(ImageWidth*byteBitCount)%4)%4;
	}
}

////////////////////////////////////////////////////////////////////////////////////
//函數功能:計算紋理特征
//參數:FeatureEnergy-能量
//      FeatureEntropy-熵
//      FeatureInertiaQuadrature-慣性矩
//      FeatureCorrelation-相關
//      FeatureLocalCalm-局部平穩
//      pMatrix-共現矩陣
//      dim-共現矩陣的維數
///////////////////////////////////////////////////////////////////////////////////
void CGrayShow::ComputeFeature(double &FeatureEnergy, double &FeatureEntropy, 
							   double &FeatureInertiaQuadrature, double &FeatureCorrelation, 
							   double &FeatureLocalCalm, int** pMatrix, int dim)
{
	int i,j;
	double **pdMatrix;
	pdMatrix = new double*[dim];
	for(i=0; i<dim; i++)
		pdMatrix[i] = new double[dim];

	int total = 0;
	for(i=0; i<dim; i++)
	{
		for(j=0; j<dim; j++)
		{
			total += pMatrix[i][j];
		}
	}

	for(i=0; i<dim; i++)
	{
		for(j=0; j<dim; j++)
		{
			pdMatrix[i][j] = (double)pMatrix[i][j]/(double)total;
		}
	}
	
	FeatureEnergy = 0.0;
	FeatureEntropy = 0.0;
	FeatureInertiaQuadrature = 0.0;
	FeatureLocalCalm = 0.0;


	//計算能量、熵、慣性矩、局部平穩
	for(i=0; i<dim; i++)
	{
		for(j=0; j<dim; j++)
		{
			//能量
			FeatureEnergy += pdMatrix[i][j]*pdMatrix[i][j];

			//熵
			if(pdMatrix[i][j]>1e-12)
			{
				FeatureEntropy -= pdMatrix[i][j]*log(pdMatrix[i][j]);
			}

			//慣性矩
			FeatureInertiaQuadrature += (double)(i-j)*(double)(i-j)*pdMatrix[i][j];

			//局部平穩
			FeatureLocalCalm += pdMatrix[i][j]/(1+(double)(i-j)*(double)(i-j));
		}
	}

	//計算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][j];
		}
		ux += (double)i * localtotal;
	}

	//計算uy
	double uy = 0.0;
	for(j=0; j<dim; j++)
	{
		localtotal = 0.0;
		for(i=0; i<dim; i++)
		{
			localtotal += pdMatrix[i][j];
		}
		uy += (double)j * localtotal;
	}

	//計算sigmax
	double sigmax = 0.0;
	for(i=0; i<dim; i++)
	{
		localtotal = 0.0;
		for(j=0; j<dim; j++)
		{
			localtotal += pdMatrix[i][j];
		}
		sigmax += (double)(i-ux) * (double)(i-ux) * localtotal;
	}

	//計算sigmay
	double sigmay = 0.0;
	for(j=0; j<dim; j++)
	{
		localtotal = 0.0;
		for(i=0; i<dim; i++)
		{
			localtotal += pdMatrix[i][j];
		}
		sigmay += (double)(j-uy) * (double)(j-uy) * localtotal;
	}

	//計算相關
	FeatureCorrelation = 0.0;
	for(i=0; i<dim; i++)
	{
		for(j=0; j<dim; j++)
		{
			FeatureCorrelation += (double)(i-ux) * (double)(j-uy) * pdMatrix[i][j];
		}
	}
	FeatureCorrelation /= sigmax;
	FeatureCorrelation /= sigmay;
}

/////////////////////////////////////////////////////////////////////////////////////
//功能:計算共現矩陣
//參數:LocalImage-用來計算的局部紋理區域圖像
//      LocalImageWidth-局部紋理區域寬度
////////////////////////////////////////////////////////////////////////////////////
void CGrayShow::ComputeMatrix(BYTE **LocalImage, int LocalImageWidth)
{
	BYTE **NewImage;
	NewImage = new BYTE*[LocalImageWidth];

	int i,j;
	for(i=0; i<LocalImageWidth; i++)
		NewImage[i] = new BYTE[LocalImageWidth];

	for(i=0; i<LocalImageWidth; i++)
	{
		for(j=0; j<LocalImageWidth; j++)
		{
			//分成GrayLayerNum個灰度級
			NewImage[i][j] = LocalImage[i][j] / (256/GrayLayerNum);
		}
	}

	for(i=0; i<GrayLayerNum; i++)
	{
		//
		for(j=0; j<GrayLayerNum; j++)
		{
			PMatrixH[i][j]  = 0;
			PMatrixLD[i][j] = 0;
			PMatrixRD[i][j] = 0;
			PMatrixV[i][j]  = 0;
		}
	}

	//計算0度的灰度共現陣
	for(i=0; i<LocalImageWidth; i++)
	{
		for(j=0; j<LocalImageWidth-distance; j++)
		{
			PMatrixH[(unsigned int)NewImage[i][j]][(unsigned int)NewImage[i][j+distance]] += 1;
			PMatrixH[(unsigned int)NewImage[i][j+distance]][(unsigned int)NewImage[i][j]] += 1;
		}
	}

	//計算90度的灰度共現陣
	for(i=0; i<LocalImageWidth-distance; i++)
	{
		for(j=0; j<LocalImageWidth; j++)
		{
			PMatrixV[(unsigned int)NewImage[i][j]][(unsigned int)NewImage[i+distance][j]] += 1;
			PMatrixV[(unsigned int)NewImage[i+distance][j]][(unsigned int)NewImage[i][j]] += 1;
		}
	}

	//計算135度的灰度共現陣
	for(i=0; i<LocalImageWidth-distance; i++)
	{
		for(j=0; j<LocalImageWidth-distance; j++)
		{
			int newi, newj;
			newi = i+distance;
			newj = j+distance;
			PMatrixLD[(unsigned int)NewImage[i][j]][(unsigned int)NewImage[newi][newj]] += 1;
			PMatrixLD[(unsigned int)NewImage[newi][newj]][(unsigned int)NewImage[i][j]] += 1;
		}
	}

	//計算45度的灰度共現陣
	for(i=distance; i<LocalImageWidth; i++)
	{
		for(j=0; j<LocalImageWidth-distance; j++)
		{
			int newi, newj;
			newi = i-distance;
			newj = j+distance;
			PMatrixRD[(unsigned int)NewImage[i][j]][(unsigned int)NewImage[newi][newj]] += 1;
			PMatrixRD[(unsigned int)NewImage[newi][newj]][(unsigned int)NewImage[i][j]] += 1;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区不卡免费| 国产精品久久久久影院老司| 色婷婷久久综合| 在线亚洲免费视频| 欧美色图激情小说| 欧美丰满少妇xxxbbb| 久久久美女艺术照精彩视频福利播放| 欧美精品久久一区二区三区| 日韩视频在线一区二区| 久久综合九色欧美综合狠狠| 国产精品欧美综合在线| 亚洲免费视频中文字幕| 精品一二三四区| 97久久超碰精品国产| 欧美日韩亚州综合| 欧美不卡一区二区三区| 亚洲人精品午夜| 奇米精品一区二区三区四区| 国产一区二区在线视频| 秋霞午夜av一区二区三区| 成人aa视频在线观看| 91精品国产一区二区三区香蕉| 国产亚洲精品中文字幕| 石原莉奈一区二区三区在线观看| 国产高清不卡一区二区| 日韩亚洲欧美在线观看| 性久久久久久久久| 99热精品一区二区| 久久亚区不卡日本| 久久电影网站中文字幕| 欧美疯狂做受xxxx富婆| 亚洲五码中文字幕| 91蝌蚪porny九色| 国产精品久久久久久久久久免费看 | 色偷偷成人一区二区三区91| 久久综合色一综合色88| 久久成人免费电影| 欧美精品欧美精品系列| 图片区小说区区亚洲影院| 91视频91自| 一区二区三区高清在线| 欧美视频三区在线播放| 亚洲第一主播视频| 欧美人伦禁忌dvd放荡欲情| 国产精品毛片高清在线完整版| 午夜激情综合网| 成人黄色777网| 综合久久久久综合| 在线亚洲+欧美+日本专区| 亚洲精品免费在线| 欧美午夜电影在线播放| 亚洲福利视频一区| 欧美一级日韩免费不卡| 国产一区在线观看麻豆| 国产欧美精品国产国产专区| 国产99久久久国产精品潘金网站| 久久奇米777| 97se亚洲国产综合在线| 偷拍亚洲欧洲综合| 精品久久国产老人久久综合| 丰满岳乱妇一区二区三区| 一区精品在线播放| 欧美一区二区高清| 不卡的av网站| 日本美女一区二区| 国产情人综合久久777777| 99久久综合国产精品| 麻豆精品一区二区| 一区二区三区在线影院| 国产色综合久久| 日韩一级黄色大片| 欧美色综合影院| 国产精品1区2区3区在线观看| 三级成人在线视频| 日韩精品影音先锋| 色av综合在线| 成人激情动漫在线观看| 九色综合狠狠综合久久| 蜜臀av在线播放一区二区三区| 国产精品视频一二| 久久久久久久久久久久久久久99| 在线播放视频一区| 欧美欧美欧美欧美| 欧美一区午夜精品| 日韩欧美一级精品久久| 3d成人h动漫网站入口| 67194成人在线观看| 91精品久久久久久蜜臀| 欧美久久久久久久久中文字幕| 在线免费不卡电影| 欧美色视频在线观看| 宅男在线国产精品| 欧美一区二区三区在线看| 日韩午夜在线观看视频| 91精品久久久久久久91蜜桃| 欧美一区二区三区性视频| 在线播放日韩导航| 久久综合久久综合久久综合| 久久综合网色—综合色88| 国产日产精品1区| 亚洲精品高清在线观看| 另类人妖一区二区av| 成人性视频免费网站| 欧美精品自拍偷拍动漫精品| 久久蜜桃av一区二区天堂| 欧美日韩一卡二卡| 波多野结衣在线aⅴ中文字幕不卡| 色拍拍在线精品视频8848| 欧美军同video69gay| 精品国产成人系列| 亚洲精品国产无天堂网2021 | 99久久亚洲一区二区三区青草| 91福利在线播放| 国产区在线观看成人精品| 亚洲风情在线资源站| 成人中文字幕电影| 精品国产伦一区二区三区观看方式 | 国产精品第一页第二页第三页| 亚洲综合色网站| 99久久99久久久精品齐齐| 精品91自产拍在线观看一区| 亚洲成人激情社区| 91同城在线观看| 成人欧美一区二区三区小说| 国产一区二区三区久久悠悠色av| 3d动漫精品啪啪| 免费看欧美美女黄的网站| 3d成人h动漫网站入口| 天天综合天天做天天综合| 色综合中文字幕| 亚洲欧美国产毛片在线| 99久久久久久| 一区二区三区精品| 波多野结衣在线一区| 欧美美女直播网站| 奇米影视一区二区三区小说| 欧美日韩中文精品| 久久成人免费日本黄色| 国产婷婷一区二区| 成人精品一区二区三区中文字幕| 中文无字幕一区二区三区| 成人av先锋影音| 亚洲一区在线看| 欧美肥妇bbw| 成人听书哪个软件好| 亚洲一区二区三区四区在线观看| 欧美精品一卡两卡| 国产酒店精品激情| 亚洲超碰精品一区二区| 久久亚洲捆绑美女| 欧美又粗又大又爽| 久久99精品视频| 91麻豆精品91久久久久久清纯| 日本午夜一本久久久综合| 精品久久久久久久久久久院品网| 成人午夜免费电影| 日本sm残虐另类| 国产精品美女久久久久aⅴ| 在线播放91灌醉迷j高跟美女| 久草中文综合在线| 视频一区中文字幕国产| 国产精品福利一区二区三区| 精品福利在线导航| 欧美日韩国产中文| 91小视频免费看| 国产91精品一区二区麻豆亚洲| 亚洲成人一区在线| 一区二区三区欧美久久| 国产视频不卡一区| 久久久精品日韩欧美| 欧美日韩精品一区二区三区蜜桃 | 一本到不卡免费一区二区| 国产成人av电影在线播放| 捆绑变态av一区二区三区| 婷婷成人综合网| 日本aⅴ亚洲精品中文乱码| 一区二区三区四区亚洲| 亚洲精品中文在线影院| 国产精品美女久久久久久久网站| 日本一二三不卡| 日本一二三四高清不卡| 国产精品盗摄一区二区三区| 亚洲色图在线视频| 中文成人av在线| 一区二区在线观看视频在线观看| 亚洲免费色视频| 天天色综合成人网| 精品一二三四在线| 国产成人精品一区二区三区四区 | 中文字幕亚洲一区二区av在线 | 国产真实乱对白精彩久久| 韩国在线一区二区| 色综合天天天天做夜夜夜夜做| 91网页版在线| 精品国产一区a| 一区二区三区中文字幕精品精品 | 欧美亚洲一区二区三区四区| 欧美人体做爰大胆视频| 久久精品一区二区三区四区| 一区二区三区.www|