当前位置:首页 > 代码 > 正文

包含图像加密matlab代码的词条

admin 发布:2022-12-19 18:35 138


今天给各位分享图像加密matlab代码的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

基于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 Ix400Iy300

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)=165145=cb(i,j)cb(i,j)=1800.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中如何利用参数调制实现图像加密解?

基于Arnold变换的图像7a686964616fe4b893e5b19e31333264636332加密: 记住把注释掉的程序单独写个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;

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_zhiluan = zhiluan(F1,F2); pic2_zhiluan = zhiluan(F3,F4); %显示置乱后的图像 pic1_zhiluan = uint8(pic1_zhiluan); figure,imshow(pic1_zhiluan),title('pic1 zhiluan') pic2_zhiluan = uint8(pic2_zhiluan); figure,imshow(pic2_zhiluan),title('pic2 zhiluan') %将两幅置乱图像进行隐藏 X1 = input('请输入一个混合迭代参数:'); pic1_hide = hide(pic1_zhiluan,X1,pic2_zhiluan); %对隐藏后的图像进行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_zhiluan,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_zhiluan(pic1_huifu); [image3,image4] = ni_zhiluan(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的直方图'

各位大侠,急求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

以验证数据存储是否成功

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

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

图像加密matlab代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、图像加密matlab代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/17749.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载