導航:首頁 > 文檔加密 > 灰度函數圖像加密流程

灰度函數圖像加密流程

發布時間:2022-05-07 14:32:44

A. 灰度圖像時0到255之間的像素,哪個函數能把它變成0到1之間的

用這個函數:void cvNormalize( const CvArr* src, CvArr* dst,double a=1, double b=0, int norm_type=CV_L2,const CvArr* mask=NULL );
還有
我這個控制項設定的高度是510,寬度是10,
我寫了一個染色的函數,fun.
public static Bitmap fun(Bitmap Bmp)
{
int j=255;
int width=Bmp.width;
int Height=Bmp.Height;
BitmapData data = Bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
unsafe
{
byte* p = (byte*)data.Scan0;//p是點陣圖像素首地址。
int offset = data.Stride - width *3;
for (int y =0; y <255; y = y +1)
{

for (int x = 0; x <10; x++)
{

for (int i = 0; i <12; i++)
{
p[i] = (byte)j;

}
p +=6
}
p += offset;

j=j-1;

}

}
Bmp.UnlockBits(data);

return Bmp;

}

在窗體的load事件里我調用了一下
private void Form1_Load(object sender, EventArgs e)
{
private Bitmap ruler= new Bitmap(MainImage.Width,MainImage.Height);
fun(ruler);
MainImage.Image = ruler;
}
這樣實現了灰度條的功能,但是灰度條的高度不能改變,我希望可以更改灰度條的大小,並且這個更改大小後的灰度條的范圍還是255到0.
這些都是我目前找到的方法

B. 圖像加密時是如何保證加密後的灰度直方圖能均衡化的

參考答案: 樹德務滋,除惡務盡。

C. 如何把灰度化的圖像進行偽色處理matlab

用函數medfilt2 語法格式:g=medfilt2(f,[m,n],padopt) padopt為邊界填充方式:默認值是「zeros」 f代表你要進行處理的圖像

D. 在MATLAB的sift演算法中,怎麼用一個模板與多幅圖像進行匹配

(1) 尺度不變特徵變換(SIFT演算法)概要

是一種計算機視覺的演算法,用來偵測與描述影像中的局部性特徵,它在空間尺度中尋找極值點,並提取出其位置、尺度、旋轉不變數。

此演算法由 David Lowe 在1999年所發表,2004年完善總結。其應用范圍包含物體辨識、機器人地圖感知與導航、影像縫合、3D模型建立、手勢辨識、影像追蹤和動作比對。此演算法有其專利,專利擁有者為 英屬哥倫比亞大學。

局部影像特徵的描述與偵測可以幫助辨識物體,SIFT 特徵是基於物體上的一些局部外觀的興趣點而與影像的大小和旋轉無關。 對於光線、雜訊、些微視角改變的容忍度也相當高。基於這些特性,它們是高度顯著而且相對容易擷取,在母數龐大的特徵資料庫中,很容易辨識物體而且鮮有誤認。使用 SIFT特徵描述對於部分物體遮蔽的偵測率也相當高,甚至只需要3個以上的SIFT物體特徵就足以計算出位置與方位。在現今的電腦硬體速度下和小型的特徵資料庫條件下,辨識速度可接近即時運算。SIFT特徵的信息量大,適合在海量資料庫中快速准確匹配。

(2 ) Matlab代碼主要功能函數如下: match.m:測試程序

功能:該函數讀入兩幅(灰度)圖像,找出各自的 SIFT 特徵, 並顯示兩連接兩幅圖像中被匹配的特徵點(關鍵特徵點(the matched keypoints)直線(將對應特徵點進行連接)。判斷匹配的准則是匹配距離小於distRatio倍於下一個最近匹配的距離( A match is accepted only if its distance is less than distRatio times the distance to the second closest match. 該程序返回顯示的匹配對的數量。( It returns the number of matches displayed.) 調用實例: match('desk.jpg','book.jpg');

( 假如,想測試一個含有一本書的桌面的圖像 和一本書的圖像之間特徵匹配) 調用方法和參數描述:略。 注意:(1)圖像為灰度圖像,如果是彩色圖像,應該在調用前利用rgb2gray轉換為灰度圖像。

(2)參數distRatio 為控制匹配點數量的系數,這里取 0.6,該參數決定了匹配點的數量,在Match.m文件中調整該參數,獲得最合適的匹配點數量。 sift.m :尺度不變特徵變換(SIFT演算法)的核心演算法程序

功能:該函數讀入灰度圖像,返回SIFT 特徵關鍵點( SIFT keypoints.) 調用方法和參數描述:

調用方式:[image, descriptors, locs] = sift(imageFile) 輸入參數( Input parameters):

imageFile: 圖像文件名.

輸出或返回參數( Returned):

image: 是具有double format格式的圖像矩陣

descriptors: 一個 K-by-128 的矩陣x, 其中每行是針對找到的K個關鍵特徵點(the K keypoints)的不變數描述子. 這個描述子(descriptor)是一個擁有128個數值並歸一化為單位長度向量.

locs: 是K-by-4 矩陣, 其中的每一行具有四個數值,表示關鍵點位置信息 (在圖像中的行坐標,列坐標(row, column) ,注意,一般圖像的左上角為坐標原點), 尺度scale,高斯尺度空間的參數,其中該參數也決定了frame(結構)確定的圖像disk的大小, 最後一個參數是方向orientation). 方向參數的范圍是[-PI, PI] 單位為弧度.

appendimages.m: 該函數創建一個新的圖像分別包含兩個匹配的圖像和他們之間

的匹配對的連接直線. (3) 實際案例執行結果:

程序代碼使用matlab和c混合編程。用matlab打開文件中的sift_match.m文件,並執行。如下圖所示:


E. 求解關於基於matlab的灰度圖像處理 辦法 具體在問題補充部分(學校實驗考核)

這么多文字 沒細看 基礎的置亂演算法不難

matlab中文論壇 你搜索下 一搜一大把 不讓發網址啊

F. 急求一個完整的c語言圖像置亂加密演算法!!!

#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庫讀取,加密的思路是類似的,最簡單方法是把奇數位和偶數位的高程值置換一下

G. 灰度圖像的製作方法

在photoshop cs4以及以上版本中,都也可以實現[2]。
方法:打開你所編輯的圖片,依次打開圖像,在選擇模式,再擇灰度。

H. 任選一種計算機語言,採用加密演算法對灰度圖像進行加密,並保證在傳輸過程中得完整性

這個。。。。20分誰給寫啊?
建議自己做吧。。。。

I. 圖像灰度化用什麼函數

沒有現成的函數吧,好像。我給你一個24bit灰度化程序,編程環境VC

//Bitmap.h

#include<malloc.h>
#include<string.h>
#include<stdio.h>

#ifdef _BITMAP_
#undef _BITMAP_
#endif

typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef BYTE* LPBYTE;
typedef unsigned int UINT;
typedef unsigned long LONG;

#pragma pack(1)

typedef struct tagBITMAPFILEHEADER{
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
}BITMAPFILEHEADER,*LPBITMAPFILEHEADER;

typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPalanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
}BITMAPINFOHEADER,*LPBITMAPINFOHEADER;

typedef struct tagRGBQUAD{
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
}RGBQUAD,*LPRGBQUAD;

//Put data into the struct
typedef struct tagBMPINFOMATION{
LPBITMAPFILEHEADER lpBmpFileHeader;
LPBITMAPINFOHEADER lpBmpInfoHeader;
LPRGBQUAD lpRgbQuad;
LPBYTE lpBmpData;
LONG nBmpWidth;
LONG nBmpHeight;
}BMPINFOMATION;

#pragma pack()

typedef unsigned int UINT;
typedef unsigned int BOOL;
#define TRUE 1;
#define FALSE 0;

//Bitmap.cpp

#include"Bitmap.h"
#include<stdlib.h>

typedef struct tagDibFile{
LPBITMAPFILEHEADER m_lpFileHeader;
LPBITMAPINFOHEADER m_lpInfoHeader;
LPRGBQUAD m_lpRgbQuad;
LPBYTE m_lpBmpData;
}DibFile,*LPDibFile;

typedef char* LPSTR;

UINT NumOfDibColor(DibFile dibFile){
UINT nColors=0;
switch(dibFile.m_lpInfoHeader->biBitCount){
case 1:nColors=2;break;
case 4:nColors=16;break;
case 8:nColors=256;break;
default:nColors=0;
}

return nColors;
}

BOOL LoadDibFile(DibFile& dibFile,LPSTR m_lpFileName){

FILE* fp=fopen(m_lpFileName,"rb");
if(!fp) return FALSE;

UINT nCount,size;

//Read File Header
size=sizeof(BITMAPFILEHEADER);
dibFile.m_lpFileHeader=(LPBITMAPFILEHEADER)malloc(size);
nCount=fread(dibFile.m_lpFileHeader,1,size,fp);
if(nCount!=size) return FALSE;

//Read Info Header
size=sizeof(BITMAPINFOHEADER);
dibFile.m_lpInfoHeader=(LPBITMAPINFOHEADER)malloc(size);
nCount=fread(dibFile.m_lpInfoHeader,1,size,fp);
if(nCount!=size) return FALSE;

//Read RgbQuad
size=NumOfDibColor(dibFile)*sizeof(RGBQUAD);
if(size==0) dibFile.m_lpRgbQuad=NULL;
else{
dibFile.m_lpRgbQuad=(LPRGBQUAD)malloc(size);
nCount=fread(dibFile.m_lpRgbQuad,1,size,fp);
if(nCount!=size) return FALSE;
}

//Read File Data
fseek(fp,dibFile.m_lpFileHeader->bfOffBits,SEEK_SET);
UINT lineOfBits=(dibFile.m_lpInfoHeader->biWidth*dibFile.m_lpInfoHeader->biBitCount)/8;
size=lineOfBits*dibFile.m_lpInfoHeader->biHeight;
dibFile.m_lpBmpData=(LPBYTE)malloc(size);
nCount=fread(dibFile.m_lpBmpData,1,size,fp);
if(nCount!=size) return FALSE;
fclose(fp);

return TRUE;
}

BOOL BlackenDib256(DibFile& dibFile){

UINT size;
if(dibFile.m_lpInfoHeader->biBitCount<=8) return TRUE;

//Info Header
dibFile.m_lpInfoHeader->biBitCount=8;
dibFile.m_lpInfoHeader->biClrUsed=0;

//RgbQuad
size=NumOfDibColor(dibFile)*sizeof(RGBQUAD);
dibFile.m_lpRgbQuad=(LPRGBQUAD)malloc(size);
LPRGBQUAD RgbQuad=(LPRGBQUAD)malloc(sizeof(RGBQUAD));
for(UINT i=0;i<256;i++){
RgbQuad->rgbBlue=i;
RgbQuad->rgbGreen=i;
RgbQuad->rgbRed=i;
RgbQuad->rgbReserved=0;
memcpy(dibFile.m_lpRgbQuad+i,RgbQuad,sizeof(RGBQUAD));
}

//File Header
dibFile.m_lpFileHeader->bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+size;

//File Data
UINT lineOfBits=(dibFile.m_lpInfoHeader->biWidth*dibFile.m_lpInfoHeader->biBitCount)/8;
size=lineOfBits*dibFile.m_lpInfoHeader->biHeight;
LPBYTE lpData=(LPBYTE)malloc(size);

int r,g,b;
for(i=0;i<size;i++){
b=dibFile.m_lpBmpData[3*i];
g=dibFile.m_lpBmpData[3*i+1];
r=dibFile.m_lpBmpData[3*i+2];
memset(lpData+i*sizeof(BYTE),(BYTE)(0.4*b+0.3*g+0.3*r),sizeof(BYTE));
}
dibFile.m_lpBmpData=(LPBYTE)realloc(dibFile.m_lpBmpData,size);
memcpy(dibFile.m_lpBmpData,lpData,size);

return TRUE;
}

BOOL SaveDibFile(DibFile dibFile,LPSTR m_lpFileName){

FILE* fp=fopen(m_lpFileName,"wb");
if(!fp) return FALSE;

UINT nCount,size;

//Write File Header
size=sizeof(BITMAPFILEHEADER);
nCount=fwrite(dibFile.m_lpFileHeader,1,size,fp);
if(nCount!=size) return FALSE;

//Write Info Header
size=sizeof(BITMAPINFOHEADER);
nCount=fwrite(dibFile.m_lpInfoHeader,1,size,fp);
if(nCount!=size) return FALSE;

//Write RgbQuad
size=NumOfDibColor(dibFile)*sizeof(RGBQUAD);
if(dibFile.m_lpRgbQuad!=NULL){
nCount=fwrite(dibFile.m_lpRgbQuad,1,size,fp);
if(nCount!=size) return FALSE;
}

//Write File Data
fseek(fp,dibFile.m_lpFileHeader->bfOffBits,SEEK_SET);
UINT lineOfBits=(dibFile.m_lpInfoHeader->biWidth*dibFile.m_lpInfoHeader->biBitCount)/8;
size=lineOfBits*dibFile.m_lpInfoHeader->biHeight;
nCount=fwrite(dibFile.m_lpBmpData,1,size,fp);
if(nCount!=size) return FALSE;
fclose(fp);

return TRUE;
}

int main(){

DibFile dibFile;
LPSTR m_lpFileName="D:\\GraphTest\\in.bmp";
if(!LoadDibFile(dibFile,m_lpFileName)) return 0;
printf("bfType=%x\n",dibFile.m_lpFileHeader->bfType);
BlackenDib256(dibFile);
SaveDibFile(dibFile,"d:\\graphtest\\out.bmp");
return 1;
}

使用控制台程序,如果在tutbo c下,需要將#pragma指令去掉,你可以試試

閱讀全文

與灰度函數圖像加密流程相關的資料

熱點內容
泡沫APP在哪裡下載 瀏覽:937
簡述高級語言進行編譯全過程 瀏覽:39
管家婆輝煌2加密狗挪到另一台電腦 瀏覽:760
摩托車在哪裡app看考題 瀏覽:356
蘋果5app在哪裡設置 瀏覽:737
如何查看伺服器的磁碟使用 瀏覽:165
python蒙特卡洛模型投點圖 瀏覽:330
安卓手機屬於什麼介面 瀏覽:742
微信群推廣網站源碼 瀏覽:764
九江離鷹潭源碼 瀏覽:719
python可以當作函數的返回值 瀏覽:422
地鐵逃生體驗服怎麼進入安卓 瀏覽:833
齊魯工惠app的中獎記錄在哪裡 瀏覽:759
linuxkill命令詳解 瀏覽:104
dhcp伺服器動態分配地址 瀏覽:265
門禁卡加密了能破解嗎 瀏覽:215
在哪裡下載百度網盤app 瀏覽:917
伺服器要升級什麼意思 瀏覽:831
銀行還房貸解壓方法 瀏覽:702
伺服器主機辦公如何提速 瀏覽:920