#include"windows.h"
#include"stdio.h"
#include"string.h"
#include"malloc.h"
unsignedchar*pBmpBuf;//读入图像数据的指针
unsignedchar*pEnBmpBuf;//加密图像数据的指针
unsignedchar*pUnBmpBuf;//解密图像数据的指针
charkey=255;//密钥
intbmpWidth;//图像的宽
intbmpHeight;//图像的高
RGBQUAD*pColorTable;//颜色表指针
intbiBitCount;//图像类型,每像素位数
boolreadBmp(char*bmpName)
{
//二进制读方式打开指定的图像文件
FILE*fp=fopen(bmpName,"rb");
if(fp==0)return0;
//跳过位图文件头结构BITMAPFILEHEADER
fseek(fp,sizeof(BITMAPFILEHEADER),0);
//定义位图信息头结构变量,读取位图信息头进内存,存放在变量head中
BITMAPINFOHEADERhead;
fread(&head,sizeof(BITMAPINFOHEADER),1,fp);
//获取图像宽、高、每像素所占位数等信息
bmpWidth=head.biWidth;
bmpHeight=head.biHeight;
biBitCount=head.biBitCount;
//定义变量,计算图像每行像素所占的字节数(必须是4的倍数)
intlineByte=(bmpWidth*biBitCount/8+3)/4*4;
//灰度图像有颜色表,且颜色表表项为256
if(biBitCount==8){
//申请颜色表所需要的空间,读颜色表进内存
pColorTable=newRGBQUAD[256];
fread(pColorTable,sizeof(RGBQUAD),256,fp);
}
//申请位图数据所需要的空间,读位图数据进内存
pBmpBuf=newunsignedchar[lineByte*bmpHeight];
fread(pBmpBuf,1,lineByte*bmpHeight,fp);
//关闭文件
fclose(fp);
return1;
}
voidencrypt(chark)
{
//加密,奇数位置的像素使用位运算加密,偶数位置像素为原始值
intlineByte=(bmpWidth*biBitCount/8+3)/4*4;
pEnBmpBuf=newunsignedchar[lineByte*bmpHeight];
for(inti=0;i<lineByte*bmpHeight;i++)
{
if(i%2==0)
{
pEnBmpBuf[i]=pBmpBuf[i];
}
elsepEnBmpBuf[i]=pBmpBuf[i]^k;
}
}
voinencrypt(chark)
{
//解密
intlineByte=(bmpWidth*biBitCount/8+3)/4*4;
pUnBmpBuf=newunsignedchar[lineByte*bmpHeight];
for(inti=0;i<lineByte*bmpHeight;i++)
{
if(i%2==0)
{
pUnBmpBuf[i]=pEnBmpBuf[i];
}
elsepUnBmpBuf[i]=pEnBmpBuf[i]^k;
}
}
boolsaveBmp(char*bmpName,unsignedchar*imgBuf,intwidth,intheight,
intbiBitCount,RGBQUAD*pColorTable)
{
//如果位图数据指针为0,则没有数据传入,函数返回
if(!imgBuf)
{printf("error !");return0;}
//颜色表大小,以字节为单位,灰度图像颜色表为1024字节,彩色图像颜色表大小为0
intcolorTablesize=0;
if(biBitCount==8)
colorTablesize=1024;
//待存储图像数据每行字节数为4的倍数
intlineByte=(width*biBitCount/8+3)/4*4;
//以二进制写的方式打开文件
FILE*fp=fopen(bmpName,"wb");
if(fp==0)return0;
//申请位图文件头结构变量,填写文件头信息
BITMAPFILEHEADERfileHead;
fileHead.bfType=0x4D42;//bmp类型
//bfSize是图像文件4个组成部分之和
fileHead.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)
+colorTablesize+lineByte*height;
fileHead.bfReserved1=0;
fileHead.bfReserved2=0;
//bfOffBits是图像文件前3个部分所需空间之和
fileHead.bfOffBits=54+colorTablesize;
//写文件头进文件
fwrite(&fileHead,sizeof(BITMAPFILEHEADER),1,fp);
//申请位图信息头结构变量,填写信息头信息
BITMAPINFOHEADERhead;
head.biBitCount=biBitCount;
head.biClrImportant=0;
head.biClrUsed=0;
head.biCompression=0;
head.biHeight=height;
head.biPlanes=1;
head.biSize=40;
head.biSizeImage=lineByte*height;
head.biWidth=width;
head.biXPelsPerMeter=0;
head.biYPelsPerMeter=0;
//写位图信息头进内存
fwrite(&head,sizeof(BITMAPINFOHEADER),1,fp);
//如果灰度图像,有颜色表,写入文件
if(biBitCount==8)
fwrite(pColorTable,sizeof(RGBQUAD),256,fp);
//写位图数据进文件
fwrite(imgBuf,height*lineByte,1,fp);
//关闭文件
fclose(fp);
return1;
}
voidmain()
{
charinFileName[90],outFileName1[90],outFileName2[90];
printf("请输入原始位图文件的文件名:");
scanf("%s",inFileName);
printf("请输入加密程序产生的新位图文件的文件名:");
scanf("%s",outFileName1);
printf("请输入解密程序产生的新位图文件的文件名:");
scanf("%s",outFileName2);
//读入指定BMP文件进内存
readBmp(inFileName);
//输出图像的信息
printf("width=%d,height=%d,biBitCount=%d ",bmpWidth,bmpHeight,biBitCount);
//图像加密
encrypt(key);
//将加密数据存盘
saveBmp(outFileName1,pEnBmpBuf,bmpWidth,bmpHeight,biBitCount,pColorTable);
//图像解密
unencrypt(key);
//将解密数据存盘
saveBmp(outFileName2,pUnBmpBuf,bmpWidth,bmpHeight,biBitCount,pColorTable);
//清除缓冲区,pBmpBuf和pColorTable是全局变量,在文件读入时申请的空间
delete[]pBmpBuf;
if(biBitCount==8)
delete[]pColorTable;
}
读取BMP,使用位运算加密,你也可以自己改
dem数据的话,一般用GDAL库读取,加密的思路是类似的,最简单方法是把奇数位和偶数位的高程值置换一下
2. 2.为什么图像在加密后,它的直方图的分布越平越好
正如楼上所言,直方图分布越平,加密图像的可读性越差,那么信号变得越随机,还原的可能性就更小了,也就是说更安全了。
3. 图像信息处理
1.QUICKBIRD图像
QUICKBIRD图像有4个多光谱波段和1个全色波段,主要反映地物反射特征。由于空间分辨率高,能够有效反映火区微地貌结构、区分地物类型,融合图像既有清晰的线性结构信息,又有丰富色彩信息。利用ERDAS8.6、ENVI4.0图象处理软件,选择其中3个可见光波段真彩色合成并与全色波段进行融合。融合方法为主成分分析。重采样方式为二次立方卷积法,并通过增加断点进行色彩调整,尽可能接近自然色彩。通过选取地面控制点、DEM高程模型经多项式拟合完成图像正射校正。加注地名等文字信息,制作影像图。运用线性增强、缨帽变换、波段运算、锐化处理等图象处理方法提取植被、土地利用等专题信息,进行火区特征地物解译、火区范围确定和温度异常区圈定。
2.航空高光谱图像
本次获取的航空高光谱数据包含了地物从可见光、近红外、短波红外、热红外等各个波段的反射、辐射信息,可以绘制出地物完整的波谱曲线。像元亮度级差从0到4095,极大地提高了地物亮度的差异分辨能力,地物热辐射能量差异取决于地物的表面温度和发射率,由于地物热辐射能量大小与地物表面温度的四次方成正比,因此地物表面温度的微小变化就能引起辐射能量的明显差别。地面分辨率达3m,能够对地物进行准确定位。
为获得清晰图像需要对高光谱图像进行去条带和辐射校正;针对图像上难以辨别的火区信息进行数字图像处理,将高光谱图像加密到2m分辨率,重采样方法采用立方卷积法。以经过正射校正的QUICKBIRD为标准图像校正高光谱图像,确保煤火信息的定位精度。
通过105~112波段8个热红外通道的相关性分析,107与其他热红外通道相关性最大且信燥比高,所以选取107波段为热红外图象信息源。其DN值反映了地表温度的高低(图7-5)。
图7-5 夜航高光谱热异常(红色)图像
4. 图像加密利用图像对信息加密还是对图像本身加密
在图像传输中是对图像本身加密,但是如果有人想要用图像表达一个意识,就是利用图像对信息加密
5. 两个向量求互相关性,用Matlab画出图像后,应该如何分析
峰值最大表示在该处两个信号的相关性最强,所以相关系数的大小表示相关强度。
你可以看一下x1和x2的自相关是怎样的情况,一般对于伪随机序列,自相关峰只有一个很大的值,即当序列移位至和自身完全相同时才得到最大峰,其他情况基本接近于0.
评价两个信号间的相关程度,可以用互相关的峰值 与自相关峰值作简单的比较,判定它们的相关程度。如果相关性很差,应该互相关的峰值远小于自相关峰值。
6. 最近用origin做拟合的相关性分析,请问,显着性相关怎么看是P吗为何不是<0.001这样的形式
很简单,就看P值,小于0.05就可表达为,在0.05水平上,统计意义上差异显着。
7. 几种简单的图像加密方法
给图片文件加密有3种方法:
1 用系统自带的EFS加密,但要注意备份加密证书,另外在加密帐号下是看不到加密效果的。
2 用winrar的压缩加密,但速度慢,操作麻烦。
3 用超级加密3000加密文件,超级加密3000采用先进的加密算法,使你的文件加密后,真正的达到超高的加密强度,让你的加密文件无懈可击,没有密码无法解密。
您可以根据自己的实际需求选择一款属于自己的文件加密方法。
8. 明文关联的图像加密系统会很难吗
明文关联的图像加密系统会很难。明文关联的图像加密系统是迭代过程与明文的相关性,混沌序列不再能够被不同轮的加密操作所重用。很难解密。
9. 图像相关性 matlab
我们利用相关度来判定所得图像的质量,图像的相关度定义为上式。
其中Am,n和Bm,n 分别是图像A和图像B中(m,n)点的灰度值。
10. 论文翻译
This paper first introced the chaotic system theory and image encryption related knowledge, and discusses the application of the theory of chaotic systems. Research based on chaotic system image encryption algorithm, this paper proposes an image encryption scheme, through the confusion and change the position of the pixel grayscale value of the combination of the way to confuse the ciphertext image and expressly image. First of all, Arnold transform is used to disturb image pixels position, and logistic gray transform is grey value of image preprocessing, both together, through the experiments, the various its performance is analyzed. Experimental results show that the algorithm has huge key space, to key very sensitive ciphertext, and has good statistical properties, and at the same time show the algorithm is strong security.