​第十二篇 图像的几何变换之缩放

几何变换包括平移,缩放,斜切,旋转等。本系列文章仅讲缩放与旋转。

缩放,在OpenCV中讲了三种算法,最近邻插值法,双线性插值法和双三次样条插值法。

近邻插值是采用最近像素填充,效率高,但效果差。双三次样条插值法虽然效果好,但是计算量却非常大,所以一般在绝对大多数情况下都是采用双线性插值。关于双线性插值的数学描述我就不讲,网上有海量的内容。我按我自己理解的方式来讲。简单点的说,双插法非整数倍时,取两个近邻整数的按系数乘以相应的比例。举个例子:如果是3.14系数倍时,则取第3和4行(列)的像素值,将第3行(列)乘以0.14倍加上第四行列乘以0.86倍的值来插值填充入相应的行列。之所以叫双线性是基于行和列同时运算的结果。近邻插值则比较简单,比如3.14倍时,插入的像素则直接取第3行(列)像素进行插入填充。关于数学方法可以参考这篇网文:https://www.cnblogs.com/yangai/p/6063927.html

原图:

 

​第十二篇 图像的几何变换之缩放

 

双插法的图,非等比例插值效果和原图基本没有颜色值上的失真。

 

​第十二篇 图像的几何变换之缩放

核心代码如下:

 

​第十二篇 图像的几何变换之缩放

本算法采用了优化方法,可以直接在嵌入式平台运行。另外,最后的switch不加break,是为了兼容各个通道。

源代码: https://download.****.net/download/finger157959/12528142

​第十二篇 图像的几何变换之缩放