Matlab实现图像旋转

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%%%%%%对图像进行旋转处理

clc;clear;close;

naturalimag=imread('xuanzhuan.bmp');%jpegtu.jpg

figure(1);

imshow(naturalimag);

title('原图像');

[m,n,r]=size(naturalimag);%%%%m为行数,x方向,n为列数,y方向,r为维数

dag=45*pi/180; %旋转的角度

backgroundgray=0;%%%%用作背景值的灰度值

a=cos(dag);

b=sin(dag);

processedxmin=round(a-n*b);

processedxmax=round(m*a-b);

processedymin=round(a+b);

processedymax=round(m*b+n*a);

nr=processedxmax-processedxmin+1;%%%%行数,x

nc=processedymax-processedymin+1;%%%%%列数,y

processedimag(1:nr,1:nc,1:r)=backgroundgray;

for i=1:m

for j=1:n

ii=round(i*a-j*b)-processedxmin+1;

jj=round(i*b+j*a)-processedymin+1;

for k=1:r

processedimag(ii,jj,k)=naturalimag(i,j,k);

end

end

end

figure(2);

imshow(processedimag/255);

title('旋转后未插值处理的图像');

%%%%对图像中空格进行行插值

for i=1:nr

for j=2:nc-1

for k=1:r

if(processedimag(i,j,k) == backgroundgray && processedimag(i,j-1,k) ~= backgroundgray && processedimag(i,j+1,k) ~= backgroundgray )

processedimag(i,j,k) =processedimag(i,j-1,k) ;

end

end

end

end

figure(3);

imshow(processedimag/256);

title('旋转并经插值处理的图像');

%%%%matlab自带的旋转函数

X=imrotate(naturalimag,45);

figure(4)

imshow(X);

title('用matlab自带的旋转函数运算得到的旋转图像');

相关文档
最新文档