xpmax007 发表于 2007-4-19 12:12

求助:Arnold置乱变换的问题

用Arnold置乱变换做图像加密,程序写出来了但是结果却不对,经过周期变换后不能恢复原图,下面是程序,请大家帮我看看那里有问题了~~


function embedimage=arnold1(embedimage,N)
=size(embedimage);
a=double(embedimage)/255;
for k=1:N
    for i=1:m
      for j=1:n
            x=i+j;
            y=i+2*j;
            if x>m
                x=mod(x,m);
            end;
            if y>m
                y=mod(y,m);
            end;
            if x==0
                x=m;
            end;
            if y==0
                y=m;
            end;
            a1(x,y)=a(i,j);
      end
    end
    embedimage1=a1;
end
imshow(embedimage1)

还有就是怎么样才能对彩色的图像进行8*8的DCT变换?????

eight 发表于 2007-4-19 13:08

原帖由 xpmax007 于 2007-4-19 12:12 发表
用Arnold置乱变换做图像加密,程序写出来了但是结果却不对,经过周期变换后不能恢复原图,下面是程序,请大家帮我看看那里有问题了~~


function embedimage=arnold1(embedimage,N)
=size(embedimage);
a=doub ...


1. a1没有预先定义及分配空间
2. embedimage1 在外循环(k那个)中重复使用,最后 imshow 的是 k=N 那个,前面的迭代不起作用
3. 有空、有能力的话,建议去掉里面的两个循环

建议先看看matlab基础书,不要太急

xpmax007 发表于 2007-4-19 17:07

非常感谢eight   问题已经解决   不过新的问题又出来了.........置乱还原后的图像变成灰度图了........5555555不知道怎么回事,是不是还要分成RGB3个通道分别处理最后再合成呢?

[ 本帖最后由 eight 于 2007-4-19 17:10 编辑 ]
页: [1]
查看完整版本: 求助:Arnold置乱变换的问题