分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
这次我们要处理的是对图像进行旋转操作,具体要求,如下:
自定义一个图像的仿射变换函数,用于旋转给定的输入图像,该函数的输入参数包括处理前的图像和旋转角度。输入的角度为正数,表明处理结果为顺时针旋转,负数则为逆时针旋转,输出参数为处理后的图像。
曾参考《数字图像处理(第三版)》一书中P51的公式编写过自己的图像“旋转”函数,但是在某些角度下,输出结果却发生了错误,至于原因,也由于时间关系,仍未思考出来。使用Matlab编程,原代码如下:
%自己写的函数function []=myRotation(pho,angle)im1=imread(pho);subplot(121);imshow(im1);title('输入图像');im1=double(im1);[r,c,h]=size(im1); R=angle*pi/180;h2 = ceil(r*cos(R)+c*sin(R));w2 = ceil(r*sin(R)+c*cos(R));im2=zeros(h2,w2,h); T=[sin(R) cos(R); cos(R) -sin(R)];%invT=inv(T);for i=1:h for x=1:h2 for y=1:w2 temp=([x y]-[0 r*sin(R)])/T; temp(1)=ceil(temp(1)); temp(2)=ceil(temp(2)); if temp(2)>0 && temp(2)<=r && temp(1)>0 && temp(1)<=c im2(x,y,i)=im1(temp(2),temp(