当前位置:首页 » 密码管理 » 图像加密matlab代码

图像加密matlab代码

发布时间: 2023-01-03 07:36:25

㈠ Matlab编程

看下这个程序function main() %主要思想是从两幅图像中选取信息,然后置乱成一幅图像。 %这样可以从要加密的多幅(2*n幅)图像中,按照上述思想,得到一半数目(n幅)的图像。 %对得到的图像进行自适应算法的隐藏,又可以得到(n-1)幅的图像。 %对(n-1)幅的图像进行Arnold变换,得到(n-1)幅的图像作为密钥,此外,密钥还有迭代次数,置乱规则,Arnold加密规则 %主要缺点是Arnold的周期较大,程序的运行的时间长些,我的电脑需要8分钟,另外,Arnold只能处理方阵 %图像的置乱加密算法很多,本程序中用到的置乱加密算法只是其中一种方法,仅仅提出一个多幅图像加密的思想,后期还有许多的工作要做。 %读入四幅图像 F1 = imread('lena.gif'); F2 = imread('monkey.gif'); F3 = imread('house.gif'); F4 = imread('cameraman.gif'); %对图像的置乱 pic1_luan = luan(F1,F2); pic2_luan = luan(F3,F4); %显示置乱后的图像 pic1_luan = uint8(pic1_luan); figure,imshow(pic1_luan),title('pic1 luan') pic2_luan = uint8(pic2_luan); figure,imshow(pic2_luan),title('pic2 luan') %将两幅置乱图像进行隐藏 X1 = input('请输入一个混合迭代参数:'); pic1_hide = hide(pic1_luan,X1,pic2_luan); %对隐藏后的图像进行Arnold置乱加密 diedai1 = input('请输入一个迭代的参数:') pic1_jiami = Arnold(pic1_hide,diedai1,0); %显示加密后的图像 pic1_jiami = uint8(pic1_jiami); figure,imshow(pic1_jiami),title('pic1 jiami') diedai2 = input('请输入一个迭代的参数:') pic2_jiami = Arnold(pic2_luan,diedai2,0); pic2_jiami = uint8(pic2_jiami); figure,imshow(pic2_jiami),title('pic2 jiami') %解密图像 pic1_jiemi = Arnold(pic1_jiami,diedai1,1); pic2_jiemi = Arnold(pic2_jiami,diedai2,1); %恢复隐藏后的图像 pic1_huifu = huifu(pic1_jiemi,X1,pic2_jiemi); %置乱的逆处理,得到恢复后的图像 [image1,image2] = ni_luan(pic1_huifu); [image3,image4] = ni_luan(pic2_jiemi); %显示各个图像 F1 = uint8(F1); figure,imshow(F1),title('F1'); figure,imhist(F1),title('F1的直方图'); image1 = uint8(image1); figure,imshow(image1),title('image1'); figure,imhist(image1),title('image1的直方图'); F2 = uint8(F2); figure,imshow(F2),title('F2'); figure,imhist(F2),title('F2的直方图'); image2 = uint8(image2); figure,imshow(image2),title('image2'); figure,imhist(image2),title('image2的直方图'); F3 = uint8(F3); figure,imshow(F3),title('F3'); figure,imhist(F3),title('F3的直方图'); image3 = uint8(image3); figure,imshow(image3),title('image3'); figure,imhist(image3),title('image3的直方图'); F4 = uint8(F4); figure,imshow(F4),title('F4'); figure,imhist(F4),title('F4的直方图'); image4 = uint8(image4); figure,imshow(image4),title('image4'); figure,imhist(image4),title('image4的直方图'

㈡ MATLAB图像的加密与水印处理程序

基于Arnold变换的图像加密: 记住把注释掉的程序单独写个M文件,放在同一路径下
clc;clear;close all;
randoma=input('请输入用户指令:','s');%
P=randoma;
%P=str2num(P);
if (P=='*****')
tu=uigetfile();
I=imread(tu);
imshow(tu);hold on;
%imshow('tu');
[M,N,P]=size(I);
rand('state',0);
% randoma=input('请输入用户指令:');%
% P=randoma;
% if (P==3.14)
T=96;
R=rand(M,N)*pi*2;
xlswrite('R.xls',R);
%kk=xlsread('jjm.xls');%32 43 55 63
a1=input('请输入a1:');
a2=input('请输入a2:');
a3=input('请输入a3:');
a4=input('请输入a4:');
kk=[a1,a2,a3,a4];
xlswrite('kk.xls',kk);
%%

I=double(I);
Ie=encrypt(I,R,kk);
figure;
imshow(Ie,[]);

%%
%%加密图像 其中调用了encrypt函数
%function Ie=encrypt(I,R,kk);
%Ir=I(:,:,1);Ig=I(:,:,2);Ib=I(:,:,3);
% [Xr,Xg,Xb]=Tmatrix(Ir,Ig,Ib,R);
% I1r=blkart2a(Xr,kk);I1g=blkart2a(Xg,kk);I1b=blkart2a(Xb,kk);
% I0r=dct2(I1r);I0g=dct2(I1g);I0b=dct2(I1b);
% [X1r,X1g,X1b]=Tmatrix(I0r,I0g,I0b,R);
% I2r=blkart2a(X1r,kk);I2g=blkart2a(X1g,kk);I2b=blkart2a(X1b,kk);
% I3r=idct2(I2r);I3g=idct2(I2g);I3b=idct2(I2b);
% Ie(:,:,1)=I3r;Ie(:,:,2)=I3g;Ie(:,:,3)=I3b;

% [Xr,Xg,Xb]=Tmatrix(Ir,Ig,Ib,R);
% Xr=Ir.*cos(R)+Ig.*sin(R).^2-Ib.*sin(R).*cos(R);
% Xg=-Ir.*sin(R)+Ig.*sin(R).*cos(R)-Ib.*cos(R).^2;
% Xb=Ig.*cos(R)+Ib.*sin(R);

a1=input('请输入a1:');
a2=input('请输入a2:');
a3=input('请输入a3:');
a4=input('请输入a4:');
kk=[a1,a2,a3,a4];
R=uigetfile();
R=xlsread('R.xls');
%%

Ii=decrypt(Ie,R,kk);
Ii=Ii-min(Ii(:));Ii=Ii/max(Ii(:));
h = waitbar(0,'Please wait...');
steps = 600;
for step = 1:steps
%figure;imshow(Ii,[]);
waitbar(step / steps)
end
close(h)
figure;imshow(Ii,[]);
h = waitbar(1,'完成解密','color','');
steps = 1;
for step = 1:steps
h = waitbar(1,'finish!','color','');
end
close(h);
warning off
end
%%
%%解密图像,调用decrypt函数
% function J=decrypt(Ie,R,kk);
% T=96; % period of Arnold transform
% J2r=Ie(:,:,1);J2g=Ie(:,:,2);J2b=Ie(:,:,3);
% J2r=dct2(J2r);J2g=dct2(J2g);J2b=dct2(J2b);
% Y1r=blkart2a(J2r,T-kk);Y1g=blkart2a(J2g,T-kk);Y1b=blkart2a(J2b,T-kk);
% [J0r,J0g,J0b]=iTmatrix(Y1r,Y1g,Y1b,R);
% J1r=idct2(J0r);J1g=idct2(J0g);J1b=idct2(J0b);
% Yr=blkart2a(J1r,T-kk);Yg=blkart2a(J1g,T-kk);Yb=blkart2a(J1b,T-kk);
% [Jr,Jg,Jb]=iTmatrix(Yr,Yg,Yb,R);
% J(:,:,1)=Jr;J(:,:,2)=Jg;J(:,:,3)=Jb;

㈢ 基于Arnold置乱的数字水印图像加密算法的设计,基于Matlab语言编程,完成Arnold置乱算法,并用Matlab GUI工

clc
clear all;
iTimes=10; %置乱次数
% 读入水印图像
file_name='3232水印.bmp';
message=double(imread(file_name));
%水印图像矩阵的行数与列数
Mm=size(message,1);
Nm=size(message,2);
%对水印图像进行arnold置乱
if Mm~=Nm
error('水印矩阵必须为方阵');
end
if Mm~=90
error('必须为90*90大小,或者修改置乱次数');
end
tempImg=message; %图像矩阵赋给tempImg
for n=1:iTimes %置乱次数
for u=1:Mm
for v=1:Nm
temp=tempImg(u,v);
ax=mod((u-1)+(v-1),Mm)+1; %新像素行位置
ay=mod((u-1)+2*(v-1),Nm)+1; %新像素列位置
outImg(ax,ay)=temp;
end
end
tempImg=outImg;
end
% 显示水印,嵌入水印图像与原始图像
figure(1)
subplot(1,3,1);
imshow(message,[]);
title('原始水印');
subplot(1,3,2)
imshow(outImg,[]);
title('置乱水印');
% arnold反置乱
message_arnold=tempImg;
iTimes1=60-iTimes
%置乱后水印图像矩阵的行数与列数
Mo=size(outImg,1);
No=size(outImg,2);
for n=1:iTimes1 % 次数
for u=1:Mo
for v=1:No
temp1=tempImg(u,v);
bx=mod((u-1)+(v-1),Mo)+1;
by=mod((u-1)+2*(v-1),No)+1;
outImg1(bx,by)=temp1;
end
end
tempImg=outImg1;
end
message=outImg1;
% 显示反置乱后水印
%figure(3)
%subplot(1,3,1);
%imshow(message_arnold,[]);
%title('提取的置乱水印');
subplot(1,3,3);
imshow(message,[]);
title('反置乱(恢复)水印');
%subplot(1,3,3);
%imshow(orig_watermark,[])
%title('原始水印')

gui 自己学学吧 matlab中文论坛 gui板块

㈣ matlab程序翻译 求详细文字说明 %% 加密 %imwrite(b_Q1,'lena2.tif','tif');

应该是视频在前面,处理图像在后面吧?
你后面的那个是每隔5帧截取一张图片储存并以i命名。
想要连接起来其实比较简单的,就是在处理图片处加一个大的for循环就可以了。
把视频程序放前面。截图储存后再读取处理,这里要注意的是你每隔5帧截一个图片,是不是有点太频了?还有弄个短点的视频,5秒左右。这样不会太浪费计算机资源,如果太大了可能会蓝屏或者死机哦。
其实,连在一起很简单的。就这样;(我在我机子上运行了一次,储存地址改了,你自己改回来吧)
clc;clear all;close all;
mov = VideoReader('C:\Users\epwqe_000\Desktop\MatlabAsa\sssss.avi');%改地址
fnum = mov.NumberOfFrames;%
for i = 1:5:fnum
frame = read(mov, i);
imshow(frame);

imwrite(frame,strcat('C:\Users\epwqe_000\Desktop\MatlabAsa\New Folder\',num2str(i),'.jpg'),'jpg');%改地址

img=strcat(num2str(i),'.jpg');
I = imread(img);

[Ix,Iy,Iz]=size(I);
if Ix>400&Iy>300
I=imresize(I,[400,Iy*400/Ix],'nearest');
end
figure
imshow(I)%输出图像
title('normal image')
I=double(I); %将I转换成double类型
[hue,s,v]=rgb2hsv(I); %将RGB格式转换成HSV格式
cb=0.148*I(:,:,1)-0.291*I(:,:,2)+0.439*I(:,:,3)+128;%将RGB转换为YCrCb格式
cr=0.439*I(:,:,1)-0.368*I(:,:,2)-0.071*I(:,:,3)+128;
[w h]=size(I(:,:,1));%获取转化后的I图像

for i=1:w
for j=1:h
if 145<=cr(i,j)&cr(i,j)<=165&145<=cb(i,j)&cb(i,j)<=180&0.01<=hue(i,j)&hue(i,j)<=0.15
segment(i,j)=1;
else
segment(i,j)=0;
end
end
end
figure
imshow(segment);

skin=segment;
% 去除小像素联通区域
skin=bwareaopen(skin,round(w*h/900));
%dilating
se=strel('square',5);%创建结构区域
skin=imdilate(skin,se); %膨胀作用
im(:,:,1)=I(:,:,1).*skin;
im(:,:,2)=I(:,:,2).*skin;
im(:,:,3)=I(:,:,3).*skin;
figure
imshow(uint8(im));
title('skin areas')
BW = skin;
L = bwlabel(BW,8);%
BB = regionprops(L, 'BoundingBox');%L等于几对应几
BB1=struct2cell(BB);%转换结构bb到bb1里
BB2=cell2mat(BB1);
figure,imshow(uint8(I));
title('result image');

[s1 s2]=size(BB2);
for k=3:4:s2-1
if (BB2(1,k)/BB2(1,k+1)) < 1.8 &&....
(BB2(1,k)/BB2(1,k+1)) > 0.4 &&....
(BB2(1,k)*BB2(1,k+1)) > 1000
hold on;
rectangle('Position',[BB2(1,k-2),BB2(1,k-1),BB2(1,k),BB2(1,k+1)],'EdgeColor','r' )%指定位置添加矩形
end
end
end

㈤ 跪求水平集matlab处理图像代码!

看看这个程序函数main() - 北美%,其主要思想是选择从两个图像信息,然后争先恐后到一个单一的形象。
%,可以从多个(2 * n个)按照上述思路的图像进行加密,得到一半的数量(n个)图像。
%所获得的图像隐藏的自适应算法中,并且能够获得第(n-1)个图像。
%对于第(n-1)个图像Arnold变换的,第(n-1)作为密钥块的图像,此外,密钥有迭代的次数,加扰规则,阿诺德加密规则 BR>%阿诺德的主要缺点是较大的周期,程序运行的时间很长,我的电脑需要8分钟,另一个,阿诺德只能处理方阵大量的扰码加密算法,程序中使用的图像
%扰码加密算法,只有一个办法,只是提出了占地多图像加密的思想,有要迟到做了很多工作。

%阅读4画面
F1 = imread('lena.gif');
F2 = imread('monkey.gif');
F3 = imread('house.gif');
F4 = imread('cameraman.gif');图像置乱
pic1_luan = luan(F1,F2) - 北美%;
pic2_luan = luan(F3,F4);

%的显示失真的图像
pic1_luan = UINT8(pic1_luan);
图,imshow(pic1_luan),标题(“图片1 luan') - 欧洲pic2_luan = UINT8(pic2_luan);
图,imshow(pic2_luan),标题(“PIC2 luan') - 中东%的两幅图像都争先恐后地隐藏
X1 =输入('请输入一个混合迭代参数:' );
pic1_hide =隐藏(pic1_luan,X1,pic2_luan);图像

%是经过Arnold置乱加密
diedai1 =输入隐藏的('输入参数迭代:')
pic1_jiami =阿诺德(pic1_hide,diedai1,0);

%,显示加密图像
pic1_jiami = UINT8(pic1_jiami);
图,imshow(pic1_jiami),标题(“图片1佳米') - 欧洲diedai2 =输入('请输入一个迭代参数:')
pic2_jiami =阿诺德(pic2_luan,diedai2,0);

pic2_jiami = UINT8(pic2_jiami);
图,imshow(pic2_jiami),标题(“PIC2佳米') - 北美%解密图像
pic1_jiemi =阿诺德(pic1_jiami,diedai1,1);
pic2_jiemi =阿诺德(pic2_jiami,diedai2,1);隐藏图像
pic1_huifu =惠福(pic1_jiemi,X1,pic2_jiemi)以后 -
%的回收率;

%争先恐后逆过程,得到的图片
恢复[较受欢迎,图像2] = ni_luan(pic1_huifu);
[为image3,为image4] = ni_luan(pic2_jiemi);

%,显示每个图像
F1 = UINT8(F1);
图,imshow(F1),标题(“F1”);
图,imhist(F1),标题(“F1直方图');

较受欢迎= UINT8(较受欢迎);
图,imshow(较受欢迎),标题(“较受欢迎”);
图,imhist(较受欢迎),标题(“较受欢迎直方图');

F2 = UINT8(F2);
图,imshow(F2),标题('F2');
图,imhist(F2),标题('F2的直方图');

较受欢迎= UINT8(图片2);
图,imshow(图片2),标题(“图像2');
图,imhist(图片2),标题(“直方图的图像2');

F3 = UINT8(F3);
图,imshow(F3),标题(“F3”);
图,imhist(F3),标题(“F3的直方图');

为image3 = UINT8(为image3);
图,imshow(为image3),标题(“为image3');
图,imhist(为image3),标题(“直方图为image3');

F4 = UINT8(F4);
图,imshow(F4),标题(“F4”);
图,imhist(F4),标题(“F4的直方图');

为image4 = UINT8(为image4);
图,imshow(为image4),标题(“为image4');
图,imhist(为image4),标题(“为image4直方图”

㈥ 对图象进行求反的matlab程序

好多人回答啊!

图像求反两种方法都可以
>> g1=imgdjust(f,[0 1],[1 0]); %f为输入图像,此为第一种方法

>> g2=imcomplement(f); %f同样为输入图像,此为第二种方法

至于邻域均值嘛,主要用 fspecial和imfilter 两个函数,具体可以看一下帮助 ^_^

下面的两个例子分别用正方形和圆形的模板进行邻域均值。

>> w1=fspecial('average'); %产生一个3x3大小的方形平均滤波模板w1
>> g1=imfilter(f,w1,'replicate'); % g1为处理后的图像。'replicate'指卷积填充边缘时用复制边界的值来扩展。
>> w2=fspecial('disk'); %产生一个半径为5的圆形平均滤波模板w2
>> g2=imfilter(f,w2,'replicate'); % 同样,g2为处理后的图像,'replicate'指卷积填充边缘时用复制边界的值来扩展。

㈦ 如何使用matlab实现jpeg图像加密算法之dct量化系数重组

加密过程中需要用两类遍历矩阵对图像进行置乱加密,一类用来对明文图像进行以8×8图像块为单位的统一置乱;
另一类用来对图像DCT变换量化后的系数重新组合后的8×8系数块内的系数进行置乱加密。
利用混沌系统产生随即序列,然后对这该序列按大小进行排序,根据排序的序号可以产生所需要的遍历矩阵。

㈧ 怎样用matlab对图像加密与水印处理

去csdn找下,或者程序员联合开发网,csdn的博客也可以找,下载那可以找相关资料找找www.csdn.netwww.pudn.com 希望对你有帮助

㈨ 各位大侠,急求AES图像加密的MATLAB代码!!!

首先说定义的函数可能在调用时出现问题,原因是函数的输入部分plot在其中并没有使用,再者输出参数应包括m和n,因此函数定义部分应该改为function
[hist,
rgbt,m,n]
=
getimagehists(imagename)。
在执行完hist
=
hist
/
(m*n),执行如下语句完成数据保存
save
hists.mat
hist
接着可以执行
clear
all
并执行
load
hists.mat
hist
及whos
以验证数据存储是否成功

热点内容
javafor循环嵌套if 发布:2025-08-18 23:28:21 浏览:299
西装配领算法 发布:2025-08-18 23:26:38 浏览:502
ecshopsql漏洞 发布:2025-08-18 23:17:01 浏览:799
mac临时文件夹 发布:2025-08-18 23:14:55 浏览:767
阿里云搭建传奇服务器 发布:2025-08-18 23:14:06 浏览:454
硬件加密卡 发布:2025-08-18 23:08:17 浏览:989
农信交易密码指的是什么密码 发布:2025-08-18 23:03:20 浏览:586
数组存储空间 发布:2025-08-18 23:01:50 浏览:748
如解压游戏 发布:2025-08-18 22:57:02 浏览:577
如何复制页游密码 发布:2025-08-18 22:49:13 浏览:387