图像Scaler缩放因子
1 Scaler介绍
Scaler功能就是我们常说的图像缩放功能,是图像处理中的一种常用功能,目的是将输入图像从一种分辨率转换到另一种分辨率输出。在实时系统中,还要满足视频实时输入实时输出的要求。我们将Scaler的输入图像称为原图,Scaler的输出图像称为目标图。
图像缩放存在方向性:分为水平方向缩放和垂直方向缩放。
在某个方向上,目标图的分辨率比原图的分辨率大,在这个方向上为图像放大。
在某个方向上,目标图的分辨率比原图的分辨率小,在这个方向上为图像缩小。
目标图的任意一个像素点都可以映射到原图某个特定的像素点。缩放的过程就是利用原图相邻像素点就可计算出这个特定的像素点。举一个一维简单的例子:从4个像素放大到7个像素,位置映射关系如下。
两个概念区别:
缩放倍数sr = 目标图/原图 = 7/4 = 1.75(倍)
缩放因子sk = 1/sr = 原图/目标图 = 4/7 = 0.5714
二维图像缩放就是在水平和垂直两个方向分别做映射。假设(x,y)为目标图像的像素坐标,(x’,y’)为原图像的像素坐标,ver_skfactor, hor_skfactor分别为垂直和水平方向缩放因子,那么由目标图像像素点在原图像中映射的位置计算公式如下。
x’ = x * hor_skfactor
y’ = y * ver_skfactor
如果计算出的原图像的像素坐标(x’,y’)不是整数位置,就需要通过相邻的像素点用插值方法来计算。插值定义:通过已知的离散数据求未知数据的过程或方法。图像缩放从数学上来说就是插值。因此实现图像缩放的关键步骤:一是计算目标图像像素在原图像中映射位置;二是插值算法和系数。
常见的插值算法有最近邻插值,双线性插值,双立方插值。对于插值算法的介绍,网上有很多,这里就不做介绍。
2 缩放因子计算工具
在插值算法的实现过程中,缩放因子是很重要的参数,通过缩放因子就可以计算出目标图像像素在原图像中映射位置。这里提供一个计算工具,可以方便的计算出水平和垂直方向的缩放因子。下载链接 https://download.csdn.net/download/cjie221/41327094
此计算工具是用python实现的,其界面如下。
缩放因子用24bit无符号数表示,高8bit表示整数部分,低16bit表示小数部分。
(1)如果分辨率一样,不缩放,则缩放因子为0x010000,整数部分为1,小数部分为0。
(2)如果是放大,则缩放因子小于0x010000,整数部分为0,只有小数部分有数值。小数部分越小,说明放大的倍数越大,反之,则说明放大的倍数越小。
(3)如果是缩小,则缩放因子大于0x010000,整数部分大于等于1,且有小数部分。整体数值越大,说明缩小的倍数越大,反之,则说明缩小的倍数越小。
声明:本文涉及软件只作为个人学习交流使用,不做商业用途。