matlab的矩阵旋转问题

2024-11-25 09:53:34
推荐回答(1个)
回答1:

采用imrotate这个函数进行旋转就好了,不会改变矩阵的数值大小。但是你那个1000*1000的矩阵大小数值应该是0-255之间的。
旋转是采用插值实现的。
你想一下,如果只想旋转5°,这样你不能保证原来像素点旋转之后再新位置的像素点位置,所以可能会应用到插值进行估计。

如果你想自己去写函数,那么你也可以通过一个线性变换,旋转角度求得平移距离,然后赋值给一个新的矩阵,注意:新的图片比原来图片稍微一点。
B = imrotate(A,angle,method)
使用method参数可以改变插值算法,method参数可以为下面这三个值:
'nearest':最邻近线性插值(Nearest-neighbor interpolation)
'bilinear': 双线性插值(Bilinear interpolation)
'bicubic': 双三次插值(或叫做双立方插值)(Bicubic interpolation)