12. matlab图像处理基础——混沌系统、函数
1、混沌系统
(1)绘制序列

语法:y = linspace(x1,x2,n)
序列值分布:(x2-x1)/(n-1)
%% 绘制序列
x = linspace(0,0,100);
x(1) = 0.98;
for i = 2:100;
x(i) = 1-2*x(i-1)*x(i-1);
end
plot(x)

(2)初始值敏感性
%% 初始值敏感性
long = 100;
a = linspace(0,0,long);
a(1) = 0.98;
for i = 2:long;
a(i) = 1-2*a(i-1)*a(i-1);
end
b = linspace(0,0,long);
b(1) = 0.980001;
for i = 2:long;
b(i) = 1-2*b(i-1)*b(i-1);
end
plot(a);
hold on
plot(b)

(3)二值化处理

%% 二值化处理
a = linspace(0,0,80);
a(1) = 0.98;
for i = 2:80;
a(i) = 1-2*a(i-1)*a(i-1);
end
% plot(a,'o');
b = a;
for i = 1:80
if a(i)>0
b(i) = 1;
else
b(i)=0;
end
end
subplot(1,2,1),plot(a,'o');
subplot(1,2,2),plot(b,'ob');

(4)生成二值混沌系统
%% 生成二值混沌图像
a = zeros(512,512);
a(1) = 0.98;
for i =2:512*512
a(i) = 1-2*a(i-1)*a(i-1);
end
for i = 1:512*512
if a(i)>0
a(i)=1;
else
a(i)=0;
end
end
imshow(a);

(5)生成灰度混沌图像

%% 生成灰度混沌图像
clc;
clear all;
a = zeros(512,512);
a(1) = 0.98;
for i =2:512*512
a(i) = 1-2*a(i-1)*a(i-1);
end
% 对a的值进行转换
b = zeros(512,512);
b = mod(round(a*98989898989898),256);
imshow(b,[]);

(6)生成彩色混沌图像
%% 生产彩色混沌图像
r = zeros(512,512);
r(1) = 0.98;
for i = 2:512*512
r(i) = 1-2*r(i-1)*r(i-1);
end
r = mod(round(r*10000000),256);
g = zeros(512,512);
g(1) = 0.59;
for i = 2:512*512
g(i) = 1-2*g(i-1)*g(i-1);
end
g = mod(round(g*10000000),256);
b = zeros(512,512);
b(1) = 0.236;
for i = 2:512*512
b(i) = 1-2*b(i-1)*b(i-1);
end
b = mod(round(b*10000000),256);
c = zeros(512,512,3);
c = cat(3,r,g,b);
imshow(uint8(c));

2、函数
(1)函数构建

(2)生成二值混沌图像函数
① 函数生成:
function bitI = creatBI(oValue)
% 生成二值混沌图像
bitI = zeros(512,512);
% 生成混沌数组
l = zeros(512,512);
l(1) = oValue;
for i = 2:512*512
l(i) = 1-2*l(i-1)*l(i-1);
end
% 二值化
for i = 1:512*512
if l(i)>0
bitI(i)=1;
else
bitI(i)=0;
end
end
② 函数调用:
%% 二值混沌图像函数调用 t = creatBI(0.98); imshow(t);
(3)生成灰度混沌图像函数
① 生成函数:
function grayImage = grayImage(oValue)
% 生成灰度混沌图像
l = zeros(512,512);
grayIamge = zeros(512,512);
l(1) = oValue;
for i = 2:512*512
l(i) = 1-2*l(i-1)*l(i-1);
end
grayImage=mod(round(l*100000000),256);
grayImage=uint8(grayImage);
② 函数调用:
%% 灰度混沌图像函数调用 x = grayImage(0.98); imshow(x);
(4)生成彩色混沌图像函数
① 生成函数:
function x = RgbImage(oValue1,oValue2,oValue3) % 生成彩色混沌图像 % 方法一:重写 % r = zeros(512,512); % g = zeros(512,512); % b = zeros(512,512); % % % red通道 % r(1) = oValue1; % for i =2:512*512 % r(i) = 1-2*r(i-1)*r(i-1); % end % r = mod(round(r*100000000),256); % % green通道 % g(1) = oValue2; % for i =2:512*512 % g(i) = 1-2*g(i-1)*g(i-1); % end % g = mod(round(g*100000000),256); % % blue通道 % b(1) = oValue3; % for i =2:512*512 % b(i) = 1-2*b(i-1)*b(i-1); % end % b = mod(round(b*100000000),256); % % % 合成 % x = cat(3,r,g,b); % x = uint8(x); % 方法2:调用灰度混沌生成函数 r = grayImage(oValue1); g = grayImage(oValue2); b = grayImage(oValue3); x = cat(3,r,g,b); x = uint8(x);
② 函数调用:
%% 彩色混沌图像函数调用 x = RgbImage(0.98,0.56,0.23); imshow(x);

浙公网安备 33010602011771号