⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fnmatrix.h

📁 在人脸检测的基础之上,对嘴部的运动表情进行分析,进行语音模拟.
💻 H
字号:
// FnMatrix.h: interface for the FnMatrix class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_FNMATRIX_H__30B7D889_BB9B_11D2_9B76_204C4F4F5020__INCLUDED_)
#define AFX_FNMATRIX_H__30B7D889_BB9B_11D2_9B76_204C4F4F5020__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#include "Matrix.h"
#include "stdafx.h"

#define Max_cost 255

struct HSI{
	double Hue;
	double Sat;
	double Inten;
};

struct SeedCandidate{
	CPoint seed_cand;
	struct SeedCandidate* nextCand;
	double HueError;
	double GradMagError;
	double PositionError;
};

struct Contour{
	CPoint boundary;
	struct Contour* next_point;
};


struct Active_List_elem{
	CPoint pixel;
	struct Active_List_elem* down;
};

struct Graph_elem{
	BOOL  expand;
	long int cumul_cost;
	double local_cost[9];
	CPoint pixel;
    struct Graph_elem* parent;
	int redraw;
	struct Active_List_elem* listElem;
};

struct Live_wire_elem{
	CPoint pixel;
	struct Live_wire_elem* next;
	int red;
	int green;
	int blue;
};


/*BOOL Create_Active_List(Active_List_elem* min_cost,Graph_elem *first);*/
struct Active_List_elem* Add_Active_List(struct Active_List_elem* min_cost,CPoint pixel);
BOOL Remove(struct Active_List_elem* remove_this,struct Active_List_elem** index_array);
int Remove_to_Expand(int start_index,Active_List_elem** list_pointer);
CPoint CursorSnap(CPoint seed,matrix &GradientMagnitude);

matrix operator*(const matrix& x, const matrix& y);
matrix operator&(const matrix& x, const matrix& y);    // a .* b
matrix operator/(const matrix& x, const matrix& y);   // a ./ b
matrix operator+(const matrix& x, const matrix& y);
matrix operator+(const matrix& x, double a);
matrix operator+(double a, const matrix& x);
matrix operator-(const matrix& x, const matrix& y);
matrix operator-(const matrix& x, double a); 
matrix operator-(double a, const matrix& x);
matrix operator*(const matrix& x, double a);
matrix operator*(double a, const matrix& x);
matrix operator/(const matrix& x, double a); 
matrix operator/(double a, const matrix& x);
matrix operator|(matrix& x, matrix& y);  // convolve
matrix operator!(const matrix &in);  // transpose 

matrix Laplacian(matrix &img,int kernel_size);
matrix filterGaussSmooth( double sigma); // returns nx1 matrix
matrix filterGaussDeriv( double sigma); // returns nx1 matrix
matrix filterReduce(); // returns nx1 matrix
matrix filterExpand(); // returns nx1 matrix
void Dijkstra(CPoint seed,matrix &imgNext,Graph_elem **graph_array,Active_List_elem **index_array);
matrix LiveWireDrawer(CPoint seedPrev,CPoint seedCurrent,matrix &imgNext,Graph_elem **graph_array,Active_List_elem **index_array,Contour *&Last);

matrix zeros(int k, int l, int n = 1);
matrix eye(int k);
matrix ones(int k, int l, int n = 1);

matrix cutr(const matrix& a, int k);   //cut row and column
matrix cutc(const matrix& a, int k);   //paste functions are members

matrix diag(const matrix& a);
matrix sort(const matrix& A);

double sum(const matrix& a);
matrix exp(const matrix& a);
matrix trps(const matrix &a);
matrix power(const matrix& a, double p );
matrix abs(const matrix& a);

double norm2(const matrix& a);
matrix inv(const matrix& a);  //inverse
matrix cov(const matrix& x);  //covariance
double FindMax(matrix a);
double FindMin(matrix a);
double MinFind(matrix &a,int bandno);
double MaxFind(matrix &a,int bandno);
double** Gradient_Mag(matrix &img,matrix &GradientMagnitude,int kernel_size);
void Gradient_Dir(CPoint p,int N,int M,double **grads,double* local_cost,double coeff);


void   ConvertMatrixTo2DArray( matrix& inImage, double** outImage);
matrix Convert2DArrayToMatrix( double** inImage, int ysi, int xsi);

// was used for Lucas-Kanade motion estimation
matrix DownsampleRow(matrix& mat, int factor);
matrix DownsampleColumn(matrix& mat, int factor);
matrix UpsampleRow(matrix& mat, int factor);
matrix UpsampleColumn(matrix& mat, int factor);
matrix reduce( matrix& image);
matrix expand( matrix& image);
matrix calcSmoothBoth( matrix& image, double spread);
matrix calcDerivHor( matrix& image, double spread);
matrix calcDerivVert( matrix& image, double spread);

int    svdcmp(matrix& inmatrix, matrix& U_mat, matrix& diagonal, matrix& square); 
matrix inverse(matrix& inMatrix);
matrix OuterProduct(matrix& a, matrix& b);
double determinant(matrix& a);

#endif // !defined(AFX_FNMATRIX_H__30B7D889_BB9B_11D2_9B76_204C4F4F5020__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -