课程学习——Arnold变换图像置乱编程

使用MATLAB实现C语言逻辑的Arnold变换,对图像进行置乱处理。通过编程,得到图像处理的结果。

matlab:C语言逻辑实现Arnold变换图像置乱编程。
代码:

close all;
clear all;
clc;
data=imread('E:\matlabCX\图片\7.jpg');
[m,n,r]=size(data);
if r>1
    data1=rgb2gray(data);
else
    data1=data;
end
%data1=imresize(data1,[256 256]);
data1=data(1:m,1:m);
[m,n]=size(data1);
 figure(1);
imshow(data1);
title('原图像');
data1=double(data1); 
%置乱与复原的共同参数
n1=10;
a=3;
b=5;
N=m;
%置乱
imgn=zeros(m,n);
for i=1:n1
    for y=1:m
        for x=1:n           
            xx=mod((x-1)+b*(y-1),N)+1;
            yy=mod(a*(x-1)+(a*b+1)*(y-1),N)+1;        
            imgn(yy,xx)=data1(y,x);                
        end
    end
    data1=imgn;
end
figure;
imshow(imgn,[])

%复原
img=imgn;
for i=1:n1
    for y=1:m
        for x=1:n            
            xx=mod((a*b+1)*(x-1)-b*(y-1),N)+1;
            yy=mod(-a*(x-1)+(y-1),N)+1  ;        
            imgn(yy,xx)=data1(y,x);                   
        end
    end
    data1=imgn;
end
figure
imshow(imgn,[])

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值