在MATLAB上实现图像的arnold逆变换
作为我项目的一部分,我刚刚在尺寸为NXM的图像上应用了arnold大小变换。现在,主要的问题是如何在尺寸为N*M的图像上执行arnold逆变换?这更像是一个谷歌问题,而不是编程问题,但这里有一个文件交换提交,它允许您计算Arnold正反变换。看看用来生成在MATLAB上实现图像的arnold逆变换,matlab,image-processing,Matlab,Image Processing,作为我项目的一部分,我刚刚在尺寸为NXM的图像上应用了arnold大小变换。现在,主要的问题是如何在尺寸为N*M的图像上执行arnold逆变换?这更像是一个谷歌问题,而不是编程问题,但这里有一个文件交换提交,它允许您计算Arnold正反变换。看看用来生成iminverse的代码,你就可以开始了 我没有任何信用,也没有测试过。它是由Prashan Premartane博士写的 %Written by Dr. Prashan Premaratne - University of Wollongong
iminverse
的代码,你就可以开始了
我没有任何信用,也没有测试过。它是由Prashan Premartane博士写的
%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图像产生不想要的结果。应该会有所帮助。@Parag S.Chandakkar:我想你还没有仔细阅读这个问题。你可以使用我提供的链接执行直接和反向Arnold变换。你想做反阿诺德变换。你认为我误解了问题的哪一部分?