Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2008-09-13
年龄: 44
帖子: 1
声望力: 0 ![]() |
![]()
%Arnold变换改进
function Y=ArnoldTranslation(M,X) clc; clear all; %Arnold变换改进 clock X='E:\论文\我的论文集\test\lennagray.bmp'; % ste_cover=imread(X); % ste_cover=double(ste_cover); % [M,N]=size(X); M=256; for i=1:M m(:,i)=(i-1)*ones(M,1); end %构造每列相同,按列递增的矩阵 m1=cat(3,m',m);%转置后,每行相同,按行递增 n=imread(X); m1(:,:,3)=n; m1=double(m1); for j=1:M for i=1:M m2(:,i,j)=[1 1;1 2]*[m1(i,j,1);m1(i,j,2)]; %Arnold变换定义:[x';y']=N*[x;y] (还未取模) end end %m2维数:2*M*M m3=mod(m2,M);%取模 %变维 for j=1:2 for i=1:M m4(:,i,j)=m3(j,:,i); end end %m3维数:M*M*2 M4(:,:,3)=m1(:,:,3); %与图层关联 %第一层坐标调整(列移动),第二,三随之变换 m5=zeros(M,M,3); for j=1:M m5(j:M,j, ![]() ![]() m5(1:j-1,j, ![]() ![]() end %第二层坐标调整,第三层随之变化 m6=zeros(M,M,3); for j=1:M m6(j,j:M,2:3)=m5(j,1:M+1-j,2:3); m6(j,1:j-1,2:3)=m5(j,M+2-j:M,2:3); end %保存,显示 m7=uint8(m6(:,:,3)); imwrite(m7,'E:\论文\我的论文集\test\arnold1.bmp'); subplot(2,1,1); imshow(n,[]); title('原始图像'); subplot(2,1,2); imshow(m7,[]); title('Arnold变换'); clock ans = 1.0e+003 * 2.0020 0.0090 0.0130 0.0080 0.0370 0.0054 ??? Subscripted assignment dimension mismatch. Error in ==> C:\MATLAB6p5\work\ArnoldTranslation.m On line 38 ==> m5(j:M,j, ![]() ![]() >> |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2009-05-05
帖子: 1
声望力: 0 ![]() |
![]()
呵呵,你好,不知道你的这个变换程序现在还有问题么?因为我再做毕设,要用到这段程序,所以想再这里摘录你的,我对matlab一窍不通
![]() |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2009-05-07
帖子: 3
声望力: 0 ![]() |
![]()
我的论文也是这方面的啊 呵呵 我也不会 汗
![]() |
![]() |
![]() |
![]() |
#4 |
高级会员
注册日期: 2008-05-13
年龄: 44
帖子: 232
声望力: 21 ![]() |
![]()
单步运动到第38行或断点运行到38行,看看运行前等式两端的维数是否匹配
__________________
工科'985'博士,(图像处理、分析及理解;模式识别;运动估计;数据分析等)定做程序、算法实现--qq:752105755 |
![]() |
![]() |