[求助]用VC编写程序,应用LSB和小波变换算法进行图像隐藏
这是我的毕业设计的需要,时间很紧张,可是因为没有学过Visual C++,所以感到很茫然,不知怎么去做。希望大家可以为我指点迷津。谢谢大家了!!
一个图像一次小波变换程序
void CBDBN::once(int n)
{
int i,j;
LONG wide,height,nWide,nHeight;
LPBYTE temp1, temp2, m_pData2;
PostIndex=PostDib->GetIndex();
for(int k=1;k<=n;k++)
{
wide=PostDib->Width();
height=PostDib->Height();
PostIndex=PostDib->GetIndex();
m_pData2=*PostDib->GetIndex();
//分配临时数据空间
temp1 = new BYTE[height*wide];
temp2 = new BYTE[height*wide];
nWide=wide/pow(2,k);
nHeight=height/pow(2,k);
//完成行变换
for(j = height*(1-1/pow(2,(k-1))); j < height; j ++)
{
for(i = 0; i < nWide; i ++)
{
int w = i *2;
temp1[j*wide+i] = PostIndex[j][w]; //偶
temp1[j*wide+nWide+i] = PostIndex[j][w+1]; //奇
}
}
//通过图像的差分,完成小波变换
for(j= height*(1-1/pow(2,(k-1))); j<height; j++)
{
for(i=0; i<nWide-1; i++)
{
temp1[j*wide+nWide-1+i] =temp1[j*wide+nWide-1+i] - temp1[j*wide+i]+128;
}
}
//完成列变换
for(i = 0; i < wide/pow(2,k-1); i ++)
{
for(j = height*(1-1/pow(2,(k-1))); j < height*(1-1/pow(2,(k-1)))+nHeight; j ++)
{
int m, h;
m=height*(1-1/pow(2,(k-1)));
h= (j-m)*2 ;
temp2[j*wide+i] = temp1[(m+h)*wide+i]; //even
temp2[(nHeight + j)*wide+i] = temp1[(m+h+1)*wide+i]; //odd
}
}
//通过图像的差分,完成小波变换
for(i=0; i<wide/pow(2,k-1); i++)
{
for(j = height*(1-1/pow(2,(k-1))); j < height*(1-1/pow(2,(k-1)))+nHeight; j ++)
{
temp2[ j*wide+i] = temp2[j*wide+i]-temp2[(nHeight + j)*wide+i]+128;
}
}
//小波经过处理后,放入显示缓存中
for(j = height*(1-1/pow(2,(k-1))); j < height; j ++)
{
for(i=0; i<wide/pow(2,k-1); i++)
{
PostIndex[j] = temp2[j*wide+i];
}
}
//删除临时的数据空间
delete temp1;
delete temp2;
}
}