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);

  

原文地址:https://www.cnblogs.com/fengxb1213/p/12886616.html