#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.