您的位置:首页 > 编程语言 > MATLAB

Matlab算法实现图像旋转(无函数调用)

2020-06-06 04:44 309 查看

Matlab算法实现图像旋转(无函数调用)

%实现图像的旋转
%图像旋转为顺时针
%采用行插值
clc;clear;
a=imread('girl.jpg');
d=a;
a=a(:,:,1);
[M,N]=size(a);
sita=input('请输入sita(弧度):','s');
sita=str2num(sita);
%对图像进行旋转
for i=1:M
for j=1:N
X=(i-M/2)*cos(sita)+(j-N/2)*sin(sita)+min(M,N);
Y=-(i-M/2)*sin(sita)+(j-N/2)*cos(sita)+min(M,N);
X=round(X);        %因为经过旋转后的坐标不是整数,需要取整
Y=round(Y);
b(X,Y)=a(i,j);     %将a所对应位置的灰度赋值给变换后的吧b
end
end
%对旋转后的图像进行行插值
%缺点是图像边缘会有锯齿
[mm,nn]=size(b);
m=1;
while m<=mm
c=find(b(m,:));    %找到b矩阵在m行时,非零元素的位置
if isempty(c)~=1   %判断c向量是否为空向量,当不为空时,才进行循环
for i=c(1):c(length(c))  % 在b矩阵m行,从非零元素的最小坐标到最大坐标之间进行插值
if (b(m,i)==0)
b(m,i)=b(m,i-1);
end
end
end
m=m+1;
end
imshow(a)
title('原图像');
figure
imshow (b)
title('变换后图像');
figure
imshow(d);

小白练手,敬请斧正。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐