matlab实现放射变换(非函数)

来源:互联网 发布:淘宝代理兼职 编辑:程序博客网 时间:2024/04/28 17:46
<span style="font-family:宋体;font-size:14px;"></span><p style="margin: 0cm 0cm 0pt;"><span style="font-size:14px;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">一直在用</span><span style="font-family:Calibri;"><span lang="EN-US">MATLAB</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的各种函数来实现对图像的仿射变换,比如旋转,平移、放大、缩小</span></span></p><span style="font-family:宋体;font-size:14px;"></span><p style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size:14px;">可是不知道是怎么实现的。</span></span></p><span style="font-family:宋体;font-size:14px;"></span><p style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size:14px;">看了一下图像的书,自己根据那些公式写了一些代码实现了对图像的变换</span></span></p><span style="font-family:宋体;font-size:14px;"></span>
clcf=imread('lena.jpg'); f=rgb2gray(f);[row,col]=size(f);T=[1 1.5 0;    1.5 1 0;    0 0 1]; %变换矩阵tform=maketform('affine',T); %获得仿射变换结构体[B,xdata,ydata]=imtransform(f,tform);%对图像进行变换imshow(B)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%一下为自己实现的仿射变换,不过没有实现插值%%%%%%%%%%%%%%%%%%%%%%%%k=1;tempxy=zeros(3,16*16);for x=1:row    for y=1:col        tempxy(:,k)=T*[x;y;1];%对坐标进行变换        k=k+1;    endendnsize=T*[row,col,1]';tempxy=round(tempxy(1:2,:));%对坐标取整k=1;C=zeros(nsize(1)-1,nsize(2));for x=1:row    for y=1:col        C(tempxy(1,k)-1,tempxy(2,k))=f(x,y);%将像素值搬移到对应的位置        k=k+1;    endendfigureimshow(C/256)


0 0
原创粉丝点击