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

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

?? matrixoperator.cpp

?? Gabor Transformation based on a Exocortex dsp d
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

#pragma managed

#include "stdafx.h"
#include "matrixOperator.h"
//#include "fft2.h"

#using <mscorlib.dll>
#using ".\dll\Exocortex.DSP.v1.dll"

using namespace std;
using namespace System;
//using namespace System::Math;
using namespace Exocortex;
using namespace Exocortex::DSP;

const int GaborWidth = 101, GaborHeight = 101;
//#pragma push_macro("new")
//#undef new	
//Complex KernelFFT2[];//=new Complex[256*256];
//GaborResult gaborResult;
//#pragma pop_macro("new")

//FFTGaborTransform
//void FFTGaborTransform(HBIO hBIO);
void PrepareKernel(Complex KernelFFT2[],int Orientation, int Frequency);
void CalculateKernel(Complex KernelFFT2[],int Orientation, int Frequency);
double KernelRealPart(int x, int y, int Orientation, int Frequency);
double KernelImgPart(int x, int y, int Orientation, int Frequency);
Matrix DoTransform(Matrix image, Complex KernelFFT2[],int Orientation, int Frequency, GaborResult result);


Matrix Image2Matrix(const HBIO &hBIO)
{	
	LPSTR lpBIO,lpBIOBits;
	lpBIO = (LPSTR) ::GlobalLock((HGLOBAL) hBIO);
	lpBIOBits=::FindDIBBits(lpBIO);	
	int nWidth=DIBWidth(lpBIO);
	int nHeight=DIBHeight(lpBIO);
	DWORD dwBitsSize=nWidth*nHeight;

	Matrix m_matBits(nHeight,nWidth);
	int wPos,hPos;
	for(hPos=0;hPos<nHeight;hPos++)
	{
		for(wPos=0;wPos<nWidth;wPos++)
		{
			m_matBits(hPos,wPos)=*(lpBIOBits+wPos+hPos*nWidth);
			//*
			if(m_matBits(hPos,wPos)<0)
			{
				m_matBits(hPos,wPos)+=256;
			}
			//*/
		}
	}
	::GlobalUnlock((HGLOBAL) hBIO);
	return m_matBits;	
}

HBIO Matrix2Image(const Matrix &m_matBits)
{
	unsigned int nWidth,nHeight;
	nWidth=m_matBits.ColNo();
	nHeight=m_matBits.RowNo();
	DWORD dwBitsSize=nWidth*nHeight;

	BIOFILEHEADER fileHeader;			
	fileHeader.flag=5;
	fileHeader.Width=nWidth;
	fileHeader.Height=nHeight;
	fileHeader.GrayNum=255;

	// 為BIO分配內存
	HBIO hBIO=NULL;
	LPSTR pBIO;
	hBIO = (HBIO) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize+FileHeadLen);
	if (hBIO == 0)
	{	
		return NULL;
	}	
	
	pBIO= (LPSTR)::GlobalLock((HGLOBAL) hBIO);
	memcpy(pBIO,(char*)&fileHeader,FileHeadLen);

	int wPos,hPos;
	for(hPos=0;hPos<nHeight;hPos++)
		for(wPos=0;wPos<nWidth;wPos++)
			*(pBIO+wPos+hPos*nWidth+FileHeadLen)=m_matBits(hPos,wPos);

	::GlobalUnlock((HGLOBAL) hBIO);

	return hBIO;
}

Matrix Buffer2Matrix(const HBIO &hBIO)
{	
	LPSTR lpBIO,lpBIOBits;
	lpBIO = (LPSTR) ::GlobalLock((HGLOBAL) hBIO);
	lpBIOBits=::FindDIBBits(lpBIO);
	BIOFILEHEADER fileH;
	//FILEDATA fileData;
	memcpy((char*)&fileH,lpBIO,FileHeadLen);
	int nWidth=fileH.Width;
	int nHeight=fileH.Height;
	int dbsize=sizeof(double);
	DWORD dwBitsSize=nWidth*nHeight*dbsize;

	Matrix m_matBits(nHeight,nWidth);
	int wPos,hPos;
	for(hPos=0;hPos<nHeight;hPos++)
	{
		for(wPos=0;wPos<nWidth;wPos++)
		{
			m_matBits(hPos,wPos)=double(*((double*)(lpBIOBits+dbsize*(wPos+hPos*nWidth))));
			
		}
	}
	
	::GlobalUnlock((HGLOBAL) hBIO);
	return m_matBits;	
}

HBIO Matrix2Buffer(const Matrix &m_matBits)
{
	unsigned int nWidth,nHeight;
	nWidth=m_matBits.ColNo();
	nHeight=m_matBits.RowNo();
	int dbsize=sizeof(double);
	DWORD dwBitsSize=nWidth*nHeight*dbsize;

	BIOFILEHEADER fileHeader;			
	fileHeader.flag=5;
	fileHeader.Width=nWidth;
	fileHeader.Height=nHeight;
	fileHeader.GrayNum=255;

	// 為BIO分配內存
	HBIO hBIO=NULL;
	LPSTR pBIO;
	hBIO = (HBIO) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize+FileHeadLen);
	if (hBIO == 0)
	{	
		return NULL;
	}	
	
	pBIO= (LPSTR)::GlobalLock((HGLOBAL) hBIO);
	memcpy(pBIO,(char*)&fileHeader,FileHeadLen);

	int wPos,hPos;
	for(hPos=0;hPos<nHeight;hPos++)
		for(wPos=0;wPos<nWidth;wPos++)
			*((double*)(pBIO+FileHeadLen+dbsize*(wPos+hPos*nWidth)))=m_matBits(hPos,wPos);

	::GlobalUnlock((HGLOBAL) hBIO);

	return hBIO;
}


//注意此處未作調試
Matrix Convolution2D(Matrix mImage,Matrix mKernel)
{
	Matrix result(mImage);
	int nHeight=mImage.RowNo();
	int nWidth=mImage.ColNo();
	int sizeH=mKernel.RowNo();
	int sizeW=mKernel.ColNo();

	int kPosX,kPosY;
	double sum=0;
	//Matrix exatrctM(sizeH,sizeW);

	int resultPosX=sizeW/2,resultPosY=sizeH/2;

	for(resultPosX=sizeH/2;resultPosX<nHeight-sizeH/2;resultPosX++)
	{
		for(resultPosY=sizeW/2;resultPosY<nWidth-sizeW/2;resultPosY++)
		{

			//convolution
			for(kPosX=0;kPosX<sizeH;kPosX++)
			{
				for(kPosY=0;kPosY<sizeW;kPosY++)
				{
					sum=sum+mKernel(kPosX,kPosY)*mImage(resultPosX+kPosX-sizeW/2,resultPosY+kPosY-sizeH/2);
				}
				
			}

			result(resultPosX,resultPosY)=sum;//(int)
			sum=0;			
		}
	}
	
	return result;
}

void printMatrix(Matrix &m,HDC hdc)
{
	char str[10];
	strncpy(str,"\0",10);
	for(int i=0;i<m.RowNo();i++)
	{
		for(int j=0;j<m.ColNo();j++)
		{
			sprintf(str,"%4.2f ",(float)m(i,j));
			::TextOut(hdc,384*2+40*j,+i*20,str,strlen(str));
		}
	}
}


void SaveMatrix(Matrix &m,string fstr)
{	
	string sPath;
	TCHAR lpBuffer[MAX_PATH];
	GetModuleFileName(NULL,lpBuffer,MAX_PATH);
	sPath=lpBuffer;
	
	int nPos;
	nPos=sPath.rfind ("\\");
	sPath=sPath.substr (0,nPos);
	string fil=sPath+"\\";
	fil+="result\\";
	fil+=fstr;
	std::ofstream f(fil.c_str());

	for(int y=0;y<m.RowNo();y++)
	{
		for(int x=0;x<m.ColNo();x++)
		{
			
			f<<m(y,x)<<" ";
		}
		f<<endl;
	}
	return;
}

Matrix LoadMatrix(int row,int col,string fstr)
{
	string sPath;
	TCHAR lpBuffer[MAX_PATH];
	GetModuleFileName(NULL,lpBuffer,MAX_PATH);
	sPath=lpBuffer;
	
	int nPos;
	nPos=sPath.rfind ("\\");
	sPath=sPath.substr (0,nPos);
	string fil=sPath+"\\";
	fil+="result\\";
	fil+=fstr;
	std::ifstream f(fil.c_str());
	Matrix m(row,col);

	for(int y=0;y<row;y++)
	{
		for(int x=0;x<col;x++)
		{
			
			f>>m(y,x);
		}
		//f>>endl;
	}
	return m;
}


//OneDimension Convolution
vector<float> Convolution(vector<float> h,vector<float> g)
{
	int M=h.size();
	int N=g.size();
	int resultSize=M+N-1;
	vector<float> result;
	float sum=0;
	int resultPos=0,mPos=0,nPos=0;

	while(resultPos<M+N)
	{
		for(mPos=0,nPos=resultPos-mPos;mPos<M,nPos>=0;mPos++,nPos--)
		{
			if(nPos<N)
				sum=sum+h[mPos]*g[nPos];
		}
		result.push_back(sum);
		resultPos++;
		sum=0;
		
	}
	return result;
}


//#pragma managed
//*
Matrix DoFFTConv2(Matrix data,Matrix kernel)
{
	int dWidth=data.ColNo();
	int dHeight=data.RowNo();
	int kWidth=kernel.ColNo();
	int kHeight=kernel.RowNo();

	int M=dHeight+kHeight+1;
	int N=dWidth+kWidth+1;
	int size=M*N;

	Complex Kernel[]= new Complex[size];
	Complex Data[]=new Complex[size];
	Complex Result[]=new Complex[size]; 

	for(int y=0;y<kHeight;y++)
		for(int x=0;x<kWidth;x++)
			Kernel[y*N+x].Re=kernel(y,x);

	for(int y=0;y<dHeight;y++)
		for(int x=0;x<dWidth;x++)
			Data[y*N+x].Re=data(y,x);

	Fourier::FFT2(Data, M, N, FourierDirection::Forward);
	Fourier::FFT2(Kernel, M, N, FourierDirection::Forward);
//*
	for(int i=0;i<size;i++)
		Result[i]=Data[i]*Kernel[i]/size;

	Fourier::FFT2(Result, M, N, FourierDirection::Backward);
//*/	
	Matrix result(dHeight+1,dWidth+1 );
	for(int y=0; y<dHeight+1; y++)//dHeight+1
    {
        for(int x=0; x<dWidth+1 ; x++) //dWidth+1        
		  result(y,x)=Result[y*N+x].Re;
        
     }
	return result;
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩不卡免费视频| 亚洲精品综合在线| 精品制服美女丁香| 日韩免费成人网| 另类人妖一区二区av| 久久亚洲一区二区三区四区| 狠狠网亚洲精品| 中文字幕一区二区在线播放| 一本色道久久加勒比精品| 亚洲综合色网站| 日韩一级二级三级| 粉嫩av一区二区三区粉嫩| 中文字幕五月欧美| 欧美三级电影网站| 精品一区二区三区久久久| 国产日产欧美精品一区二区三区| 不卡的av电影| 五月天久久比比资源色| 久久嫩草精品久久久精品一| www.欧美日韩国产在线| 亚洲黄色录像片| 欧美一二三在线| 成人av电影免费观看| 亚洲国产人成综合网站| 日韩欧美一二三| 不卡在线观看av| 婷婷开心激情综合| 久久久精品2019中文字幕之3| 99精品黄色片免费大全| 奇米影视一区二区三区| 国产精品美女一区二区在线观看| 欧洲一区二区av| 国产精品中文欧美| 亚洲国产精品久久久男人的天堂 | 欧美精品高清视频| 国产精品18久久久| 三级欧美在线一区| 国产日韩亚洲欧美综合| 欧美日韩性生活| 成人av动漫网站| 国产一区美女在线| 天天色天天操综合| 中文字幕在线视频一区| 日韩一区二区三区精品视频| 不卡电影免费在线播放一区| 精品一区二区综合| 亚洲成人精品在线观看| 国产精品色婷婷久久58| 精品久久久久久久人人人人传媒 | 国产精品一区二区三区四区| 亚洲成av人片观看| 中文字幕在线观看不卡| 久久精品亚洲一区二区三区浴池 | 国模套图日韩精品一区二区 | 日韩网站在线看片你懂的| 91影视在线播放| 国产成人精品一区二区三区四区 | 亚洲高清免费观看高清完整版在线观看| 精品国产乱码久久久久久久| 欧美日韩国产高清一区二区| 色综合视频在线观看| bt欧美亚洲午夜电影天堂| 国产精品18久久久久久久网站| 欧美a级一区二区| 五月开心婷婷久久| 亚洲www啪成人一区二区麻豆| 亚洲色图一区二区| 中文字幕在线不卡| 亚洲欧洲一区二区在线播放| 国产精品美女久久久久aⅴ| 久久色在线观看| 精品国产1区二区| 2014亚洲片线观看视频免费| 日韩欧美在线1卡| 日韩欧美综合一区| 亚洲精品一区二区三区香蕉 | 99麻豆久久久国产精品免费优播| 黄一区二区三区| 精品一区二区三区欧美| 狠狠色丁香婷综合久久| 国产一区在线看| 粉嫩一区二区三区在线看| 岛国精品一区二区| av不卡免费在线观看| 91碰在线视频| 欧美在线看片a免费观看| 精品视频在线免费| 欧美日韩精品综合在线| 欧美久久久一区| 在线播放中文一区| 欧美日韩视频专区在线播放| 欧美熟乱第一页| 欧美一区二区三区四区视频 | 成人在线综合网站| 福利一区二区在线| 色综合网站在线| 欧美图区在线视频| 日韩欧美一级在线播放| 国产日韩欧美激情| 亚洲激情网站免费观看| 日韩和欧美的一区| 国产一区二区三区在线观看精品| 粉嫩蜜臀av国产精品网站| 91精品福利视频| 欧美xxxx在线观看| **性色生活片久久毛片| 日日摸夜夜添夜夜添精品视频| 男女视频一区二区| 成a人片国产精品| 欧美日韩精品系列| 国产亚洲欧美中文| 偷拍亚洲欧洲综合| 成人一级视频在线观看| 欧美在线观看视频一区二区| 精品欧美一区二区在线观看| 日韩美女久久久| 久久精品国产亚洲一区二区三区| 成人毛片视频在线观看| 制服丝袜激情欧洲亚洲| 国产精品福利一区| 免费成人在线影院| 日本韩国欧美一区| 久久精品人人做人人综合 | 色拍拍在线精品视频8848| 日韩亚洲欧美一区| 亚洲精品日韩专区silk| 国产在线麻豆精品观看| 欧美三级日韩三级国产三级| 国产欧美精品一区| 免费看欧美美女黄的网站| 91美女片黄在线观看91美女| 精品国内二区三区| 亚洲成人激情av| av在线综合网| 欧美精品一区二区久久婷婷| 亚洲韩国一区二区三区| jlzzjlzz欧美大全| 精品不卡在线视频| 免费看欧美美女黄的网站| 在线精品视频免费播放| 国产精品白丝在线| 国产高清在线精品| 精品久久久久久亚洲综合网| 日日夜夜一区二区| 在线精品观看国产| 亚洲精品高清在线观看| 成人动漫在线一区| 亚洲国产精品精华液2区45| 麻豆精品国产传媒mv男同| 欧美日韩国产小视频在线观看| 中文字幕在线观看不卡| 成人a区在线观看| 久久精品在线观看| 国产在线精品一区二区夜色 | 欧美三级三级三级爽爽爽| 亚洲欧美区自拍先锋| av在线不卡网| 中文字幕 久热精品 视频在线| 国产精品一线二线三线精华| 日韩三级.com| 精品中文字幕一区二区小辣椒| 91精品国产麻豆国产自产在线| 天使萌一区二区三区免费观看| 欧美在线观看一区二区| 亚洲国产精品久久久男人的天堂| 91福利国产精品| 亚洲已满18点击进入久久| 国产在线国偷精品免费看| 国产在线播精品第三| 奇米四色…亚洲| 日韩一区二区三| 奇米777欧美一区二区| 欧美α欧美αv大片| 国产一区二区三区蝌蚪| www国产成人免费观看视频 深夜成人网| 日韩成人免费电影| 国内精品伊人久久久久av影院 | 久久国产视频网| 国产成人免费9x9x人网站视频| 91免费版pro下载短视频| 欧美日韩国产精选| 久久久99精品免费观看| 亚洲精品国产高清久久伦理二区| 天天影视涩香欲综合网| 国产一区二区三区av电影| 色8久久精品久久久久久蜜| 日韩三级.com| 亚洲人成在线播放网站岛国| 日韩国产欧美三级| av资源网一区| 精品久久国产字幕高潮| 一区二区三区中文字幕电影| 蜜桃av一区二区三区| 91小视频免费看| 亚洲精品在线网站| 午夜欧美一区二区三区在线播放| 国产伦精品一区二区三区视频青涩 | 琪琪久久久久日韩精品| 99精品在线免费| 久久婷婷国产综合精品青草|