arnold函数 matlab_matlab arnold变换

clc;closeall;clearall;I=imread('cquptxh.bmp');I=rgb2gray(I);[h,w]=size(I);F=I;figure;subplot(2,3,1);imshow(I,[]);title('原始水印');fori=1:5A=[1,2,50,100,192];N=A(i);fork=...

clc;

close all;

clear all;

I=imread('cquptxh.bmp');

I=rgb2gray(I);

[h,w]=size(I);

F=I;

figure;

subplot(2,3,1);

imshow(I,[]);title('原始水印');

for i=1:5

A=[1,2,50,100,192];

N=A(i);

for k=1:N

for x=1:h

for y=1:w

x1=x+y;

y1=x+2*y;

if x1>h

x1=mod(x1,256);

end

if y1>w

y1=mod(y1,256)

end

if x1==0

x1=256;

end

if y1==0

y1=256;

end

F(x1,y1)=I(x,y);

end

end

I=F;

end

t=A(i);

subplot(2,3,i+1);

imshow(F,[]);title('第',t,'次变换');

end

只能运行出原图和一个没标题的图,不知道哪里出了问题。

未添加循环语句的单次变换是这样地:

I=imread('cquptxh.bmp');

I=rgb2gray(I);

[h,w]=size(I);

F=I;

for k=1:192

for x=1:h

for y=1:w

x1=x+y;

y1=x+2*y;

if x1>h

x1=mod(x1,256);

end

if y1>w

y1=mod(y1,256)

end

if x1==0

x1=256;

end

if y1==0

y1=256;

end

F(x1,y1)=I(x,y);

end

end

I=F;

end

figure,imshow(F,[]);

展开


版权声明:本文为weixin_26704651原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。