matlab截取图片旋转,MatLab图像之:缩放,旋转

先说“缩”

一般来说,对大图进行缩小比较简单,根据缩放比例,选择部分数据,放弃部分数据就完成了。比如缩小到原图的1/2,直接选择按照奇偶行列,保留奇行奇列,放弃偶行偶列就可以了。

再说“放”

放大图片就比较麻烦了,原本只有100×100的图片,要放大到200×200,那多余的100行,100列从何而来呢?

保持原来相邻像素的连续性就特别重要,否则中间凭空突出一个黑点白点的,怎么受得了。

插值,基本上有两种:

第一种,按照“最邻近原则”,选择最近的像素灰度作为“空隙像素”的灰度。算法简单速度较快,缺点:在放大比例较大情况下,会有“马赛克”情况(也就是有码大图,嘿嘿)

第二种,采用比较复杂的线性,非线性插值算法,优点:空隙像素过渡自然;缺点:用时较长,运算较慢。

(二)旋转

旋转就比较麻烦一点,首先明确一点,旋转操作完成的图像,在空间尺度上没有缩放,只是按照某个中心,全图选择了一个角度。

说道这里,很容易联系到“极坐标系”,用“径和角度”表示所有的像素点,在保持“径”不变的情况下,调整“角度”。这是第一个问题。

第二,在普通显示设备上,都是按照左上角作为原点,但对旋转来说,为了保证图像不会旋转到显示范围之外,必须将坐标原点改为显示中心位置。在旋转完成之后,在变换为左上角原点。

例程如下:

//

clear

close all

%R = uint8(rand(512,512)*100)  %随机噪声

A = imread('lena.tif')

B = imresize(A,1.5)  %缩放

B =uint8(imrotate(A,60,'nearest'))  %旋转

figure(1)

imshow(A)

figure(2)

imshow(B)

//

a4c26d1e5885305701be709a3d33442f.pnga4c26d1e5885305701be709a3d33442f.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值