旋转步骤:
一 matlab函数:B = imrotate(A,angle,method);A是原始图像,angle是旋转角度,B为旋转后的图像;
二 使用method参数可以改变插值算法。 B = imrotate(A,angle,method,bbox)bbox参数用于指定输出图像属性:'crop': 通过对旋转后的图像B进行裁剪, 保持旋转后输出图像B的尺寸和输入图像A的尺寸一样。{'loose'}: 使输出图像足够大, 以保证源图像旋转后超出图像尺寸范围的像素值没有丢失。 一般上这种格式产生的图像的尺寸都要大于源图像的尺寸。
一句Matlab代码搞定图像旋转并且保持图像的大小不变:
J=imrotate(W_Gray,angle,'bilinear','crop');
其中W_Gray是输入图像,angle是旋转角度,J是旋转之后的图像。
使用起来很方面,绝对让你惊讶!!!赞起来~~~
任意角度时,图像大小会变化,一个可行的办法是旋转B = imrotate(A,angle,method,bbox),bbox设成"loose",然后将B旋转回去,裁剪成原来的大小。因为多出来的部分是黑色的,去掉就好了
一般在hough直接检测,旋转的时候用的比较多
B = imrotate(A,angle)
将图像A(图像的数据矩阵)绕图像的中心点旋转angle度, 正数表示逆时针旋转, 负数表示顺时针旋转。返回旋转后的图像矩阵。 以这种格式调用该函数, 该函数默认采用最近邻线性插值(Nearest-neighbor interpolation)。旋转后的图像超出的部分填充0(黑色)。
把角度改到-6.a=imread('a[0].jpg');
figure;
imshow(a)
b=imrotate(a,90,'nearest');
figure;
imshow(b)
c=imrotate(b,-90,'nearest');
figure;
imshow(c)
我试了一下,行的