圖像加密的重要性可想而知,每個人都會有自己的小秘密,通過圖像加密的方法可以保護自己的照片等的安全。
一般情況下,圖像加密可以分為以下幾個步驟:
1.選擇圖像加密算法
2.根據算法獲取秘鑰
3.根據保存的秘鑰解密
圖像加密的處理方式多為對圖像中的像素點進行處理,有的處理方式不改變灰度直方圖的信息(易破解),然后更高級的處理方式使得原來的灰度直方圖信息也發生改變(比如變得均衡化了)。
下面介紹自己親自測試的2種圖像加密算法:
1.行列像素點置亂方法,該方法將原圖中的像素信息進行了重新排布——置亂。通過一一對應的關系可以恢復原來的圖像,此時的秘鑰即為行列變換的映射向量Mchange和Nchange。
簡單的MATLAB程序如下:
clc,clear all,close all
Lena = imread('Lena512.bmp');
figure;imshow(Lena)
title('原圖')
[M,N] = size(Lena);
Rm = randsample(M,M)';
Mchange = [1:1:M;Rm];
Rn = randsample(N,N)';
Nchange = [1:1:N;Rn];
%打亂行順序
Lena (Mchange(1,:),:) = Lena (Mchange(2,:),:);
figure;imshow(Lena)
title('行加密后圖像')
%打亂列順序
Lena (:,Nchange(1,:)) = Lena (:,Nchange(2,:));
figure;imshow(Lena)
title('列加密后圖像')
%列變換還原
Lena (:,Nchange(2,:)) = Lena (:,Nchange(1,:));
figure;imshow(Lena)
title('列解密后圖像')
%行變換還原
Lena (Mchange(2,:),:) = Lena (Mchange(1,:),:);
figure;imshow(Lena)
title('解密后圖像')
2.基於混沌的圖像加密方法,產生2個Logistic混沌序列,改造2個Logistic,得到兩個y序列,由yl和y2序列對原圖像進行值替代加密。秘鑰為混沌系統的初始狀態值。
可參考的MATLAB程序如下:
%加密方法,混沌序列
clc,clear all,close all
A=imread('Lena512.bmp');
imshow(A); title('原圖')
[M,N]=size(A);%原始圖像A的尺寸一MxN
u1=4;u2=4;x1(1)=0.2;x2(1)=0.7;
sumA=sum(sum(A));
k=mod(sumA,256)*1.0/255;
x1(1)=(x1(1)+k)/2; x2(1)=(x2(1)+k)/2;
y1(1)=(1/3.1415926)*asin(sqrt(x1(1)));
y2(1)=(1/3.1415926)*asin(sqrt(x2(1)));
for i=1:1:M*N-1 %產生2個Logistic混沌序列
x1(i+1)=u1*x1(i)*(1-x1(i));
x2(i+1)=u2*x2(i)*(1-x2(i));
end
for i=1:1:M*N %改造2個Logistic,得到兩個y序列
y1(i)=(1/3.1415926)*asin(sqrt(x1(i)));
y2(i)=(1/3.1415926)*asin(sqrt(x2(i)));
end
n=1;
for i=1:1:M %由yl和y2序列對原圖像進行值替代加密
for j=1:1:N
if mod(n,1)==0
k(n)=mod(floor(y1(n)*10^15),256);
else
k(n)=mod(floor(y2(n)*10^15),256);
end
A1(i,j)=bitxor(A(i,j),k(n)); %得到加密像素
n=n+1;
end
end
figure,imshow(A1);title('混沌加密圖像') %輸出得到的加密圖像
n=1;
for i=1:1:M
for j=1:1:N
if mod(n,1)==0
k(n)=mod(floor(y1(n)*10^15),256);
else
k(n)=mod(floor(y2(n)*10^15),256);
end
A2(i,j)=bitxor(A1(i,j),k(n)); %得到加密像素
n=n+1;
end
end
figure,imshow(A2);title('解密圖像') %輸出得到的解密圖像
---------------------
作者:清風徐行
來源:CSDN
原文:https://blog.csdn.net/u013626386/article/details/39736611
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!