在图像MATLAB上执行逆arnold变换

时间:2014-11-06 17:47:10

标签: matlab image-processing

我刚刚将尺寸为NXM的图像应用了arnold尺寸变换作为我项目的一部分。现在,主要问题是如何对尺寸为N * M的图像执行逆arnold变换?

1 个答案:

答案 0 :(得分:1)

这更像是一个谷歌搜索问题,而不是编程问题,但这里是来自文件交换的提交here.,允许您计算直接和反Arnold变换。看一下用于生成iminverse的代码片段,你就可以了。

我没有任何信用,也没有测试过。它由Prashan Premaratne博士撰写。

%Written by Dr. Prashan Premaratne - University of Wollongong - 1 May 2006
%num specifies the number of Iterations for the Arnold Transform
function arnold(im,num)
[rown,coln]=size(im);
figure(1)
for inc=1:num
for row=1:rown
    for col=1:coln

        nrowp = row;
        ncolp=col;
        for ite=1:inc
            newcord =[1 1;1 2]*[nrowp ncolp]';
            nrowp=newcord(1);
            ncolp=newcord(2);
        end
        newim(row,col)=im((mod(nrowp,rown)+1),(mod(ncolp,coln)+1));

    end
end

end
imshow(newim)
figure(2)
[irown,icoln]=size(newim);
for inc=1:num
for irow=1:irown
    for icol=1:icoln

        inrowp = irow;
        incolp=icol;
        for ite=1:inc
            inewcord =[2 -1;-1 1]*[inrowp incolp]';
            inrowp=inewcord(1);
            incolp=inewcord(2);
        end
        iminverse(irow,icol)=newim((mod(inrowp,irown)+1),(mod(incolp,icoln)+1));

    end
end
imshow(iminverse)
end
%out=iminverse;

请注意,它接受灰度/二进制图像,因为[rown,coln] = size(im)会为RGB图像提供不需要的结果。