中国史之【恭王即位】:
周恭王姬繄(yi)扈,周穆王之子。周恭王继位后,裁减军队,明法息民,令百姓安于生产;采取和平稳定的外交政策;允许土地自由买卖,这是西周王朝首次把士地私有合法化,这些举措大大增强了西周国力。
——来源:全历史APP
【路漫漫其修远兮,吾将上下而求索】
今天介绍图像的几何操作之映射和仿射变换。本内容参考自《实用MATLAB图像和视频处理》第7章。
- 对于matlab2021的安装,可以参考公众号【CV之道】的文章:【matlab安装】手把手图文并茂安装matlab2021(win10版)
1、介绍
几何操作的定义是:通过以一种约束的方式重新排列像素而改变一幅图像的几何布局。
从数学上可描述为通过调整图像像素的坐标将一幅输入图像f(x,y)变换为一幅新图像f(x’,y’)的过程:
也就是说,原来位于坐标(x,y)的像素值在输出图像中将被重新安排到坐标(x’,y’)处。注意,并非改变图像的像素值。
2、变换
对上面的过程建模,需要一个映射函数。映射函数对输入图像中的各个像素指定其在输出图像中的新坐标:
这里的T就是映射函数,它可以是一个任意的2D函数。通常,T会被指定为两个分离的函数,分别对应两个维度,也就是x’和y’。
其中,Tx和Ty常表示成x和y的多项式。当Tx和Ty是x和y的线性组合时,可称这种变换为仿射变换,表示如下:
学过线性代数的,应该都知道这种线性组合可以使用矩阵来表示,也就是:
可以转换成矩阵后,那问题就转换为矩阵计算了,这是matlab的强项。
3、四种常用操作
仿射变换将直线变换成直线,三角形变换成三角形,矩形变换成平行四边形。平行线仍保持平行,且直线上的点间距离比例保持不变。(三角形平移后还是三角形)
四种最常用的几何操作是包括:平移、放缩、旋转和剪切。具体的汇总如下:
从上面可以看出,6个参数唯一地由三组对应点所确定。给定相应点变换前和变换后的坐标,可以写出x和y的n个方程并解出n个变换系数(参数)。下图为一个三角形仿射变换前后的例子。
4、matlab中的操作
在图像处理工具包中,有两个和仿射变换关联的函数:maketform和imtransform。
其中,maketform用来定义2维空间变换,也就是上面表格里面的参数矩阵。除了仿射变换,maketform还支持投影变换和自定义的变换。(这其实就是类似pytorch框架中的torchvision.transforms函数,使用变换来进行数据增广)
而imtransform函数用于根据输入图片和变换矩阵,对图片进行变换。我们来举个例子:
**【题目】**使用matlab将仿射变换应用到一幅输入图像中,其中仿射变换矩阵包括(a)旋转30度;(b)在x和y方向都用因子3.5进行放缩;(c)用【25, 15】个像素进行平移;(d)用因子【2, 3】剪切。
**【答案】**首先,我们先构造仿射矩阵,这个可对照上面的表格以及题目给出的参数进行构建即可。构建后的矩阵如下:
接着,使用matlab代码进行操作,代码和效果如下:
%%本代码用于学习如何对图像进行常见的仿射变换
I = imread('kobe.jpg');
% Rotation旋转30度
Ta = maketform('affine', [cosd(30) -sind(30) 0; sind(30) cosd(30) 0; 0 0 1]');
Ia = imtransform(I,Ta, 'XYScale',1);
%Scaling放缩3.5
Tb = maketform('affine', [3.5 0 0; 0 3.5 0; 0 0 1]');
Ib = imtransform(I,Tb, 'XYScale',1);
% Translation平移
Tc = maketform('affine', [1 0 0; 0 1 0; 25 15 1]);
Ic = imtransform(I,Tc, 'XData', [1 size(I,2)], 'YData', [1 size(I,1)]);
% Shearing剪切
Td = maketform('affine', [1 3 0; 2 1 0; 0 0 1]');
Id = imtransform(I,Td, 'XYScale',1);
figure
subplot(2,2,1), imshow(Ia), title('旋转30度');
subplot(2,2,2), imshow(Ib), title('放缩3.5');
subplot(2,2,3), imshow(Ic), title('平移');
subplot(2,2,4), imshow(Id), title('剪切');
以上是本期内容,建议自己动手来实践一下。如果需要图片和代码,可以关注公众号,回复关键字【matlab代码】即可获得。我会上传到云盘。
【声明】:学习笔记基于互联网上各种学习资源的个人整理。
以上是本期内容,下期介绍图像处理的几何操作之插值方法。
我叫小保,一名计算机视觉爱好者、学习者、追随者,欢迎关注我【CV之道】一起学习。
今天的文章【matlab图像处理】映射和仿射变换分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/60954.html