;
pic1 = rgb2gray(pic1); #转灰度
imshow(pic1)
[M,N] = size(pic1(:,:,1));
x0 = 0.5;
u = 0:0.008:4;
xn = ft_logistic(x0,length(u)-1,u); %生成混沌序列
figure()
plot(u(2:end),xn,'b.',"linewidth",1.2)
grid on
L_xn = zeros(1,M*N);
L_xn(1) = xn(1,end); %将混沌状态的最后一个值作为初值
for i = 1:M*N-1 %生成新的混沌序列用于加密
L_xn(i+1) = 4*L_xn(i)*(1-L_xn(i));
end
L_xn = uint8(255*L_xn); %混沌序列反归一化
xnn = reshape(L_xn,[M,N]); %xnn为混沌秘钥
mixed_pic = bitxor(pic1,xnn); %异或操作加密
figure()
imshow(mixed_pic)
remix_pic = bitxor(mixed_pic,xnn); %异或操作解密
figure()
imshow(remix_pic)
function [yn] = ft_logistic(x0,num_len,u)
xn = x0;
for j = 1:num_len
u_i = u(j);
for i = 1:j
xn(i+1) = u_i*xn(i).*(1-xn(i));
end
yn(1,j) = xn(j);
end
end
2.卷积运算图像锐化:
clc,clear,close all;
pic1 = imread("任选图片.jpg");
pic1 = im2double(pic1);
%选择卷积核模板
k_core = [ 0 -1 0 ;
-1 5 -1 ;
0 -1 0 ];
[pic2,pic3] = sharpen(pic1,k_core); %卷积运算,锐化处理
subplot(311)
imshow(pic1);title('原图')
subplot(312)
imshow(pic2);title('锐化图像')
subplot(313)
imshow(pic3);title('已取反的边缘')
function [fsha,fedg]=sharpen(f,Operator)
[m,n,h]=size(f);
fsha=f;
for k=1:h
for i=2:m-1
for j=2:n-1
fsha(i,j,k)=sum(sum(f(i-1:i+1,j-1:j+1,k).*Operator)); %根据模板进行锐化处理
end
end
end
if sum(Operator(:))>0
fedg=f-fsha+1; %取反加重的边缘
else
fedg=1-fsha; %取反未加重的边缘
fsha=f+fsha; %此时,锐化图像=原图像+边缘
end
end