一篇本科毕业论文的附件:图片数字水印的C语言程序代码
//本文算法实现的C语言代码,Windows XP平台DEV-CPP(4.9.9.2)环境下编译通过//
#include //
#include //
#include //头文件
#include //头文件
#include //
#include //
#define MAX_ITERA 60 //常量宏定义
#define MIN_DOUBLE (1e-30) //常量宏定义
#define F_EXTPAD 4 //常量宏定义
#define D_EXTPAD 2 //常量宏定义
//函数原型预定义区域
void RecoverWaterMark3(char *InVector,char *OutWater,double a);
void InsertWaterMark3(char *InVector,char *OutVector,char *InWater,char *OutWater,double a);
void RecoverWaterMark2(char *InVector,char *OutWater,double a);
void InsertWaterMark2(char *InVector,char *OutVector,char *InWater,char *OutWater,double a);
void RecoverWaterMark1(char *InVector,char *OutWater,double a);
void InsertWaterMark1(char *InVector,char *OutVector,char *InWater,char *OutWater,double a);
void Arnold256(char *in,char *out,unsigned char *q,int N,int k1,int k21,int k22,int k23,int k24,int type);
int SVD(double a[],int m,int n,double u[],double v[],double eps);
void Matrices(double a[],double b[],int m,int n,int k,double c[]);
void ppp(double a[],double e[],double s[],double v[],int m,int n);
void sss(double fg[2],double cs[2]);
void YIQ2RGB(char *out,double *Y,double *I,double *Q,int N);
void RGB2YIQ(char *in,char *out,double *Y,double *I,double *Q,int N);
void DWT2D(double **rows, int width, int height, int levels,int inverse);
void IDWT1D(double *x, int N);
void DWT1D(double *x_in, int N);
void CheckPSNR(double *p0,double *p1,int m,int n,double a);
unsigned char Double2Char(double d);
void Array2D1D(double **aa,double *a,int m,int n);
void Array1D2D(double *a,double **aa,int m,int n);
void errorNexit(char *s,char *d);
void MsgBox(char *s,char *a,char *b);
double MAX(double,double,double);
static double *x_alloc = NULL; //静态内存指针
//主函数
//载体图片默认为lmk.bmp-----------------必须为640*640*24bit
//水印图片默认为W.bmp-------------------必须为64*64*8bit
//W_a.bmp为水印图片加密后输出-----------大小为64*64*8bit
//lmk_w10.bmp为嵌入水印后的载体图片------大小为640*640*24bit
//lmk_w20.bmp为嵌入水印后的载体图片------大小为640*640*24bit
//---a----------------------------------水印嵌入强度,初始默认为0.05
//临时文件SLL3.dat,SLH3.dat,SHL3.d
at,SHH3.dat,W.dat,Uw.dat,Vw.dat,分别保存了
//载体图片LL3子图分解后的奇异值矩阵(double)------用于提取水印使用
//载体图片LH3子图分解后的奇异值矩阵(double)------用于提取水印使用
//载体图片HL3子图分解后的奇异