缩放算法

2024-07-31

缩放算法(精选6篇)

缩放算法 篇1

摘要:图像尺寸的缩放变换是一种常见的操作。Java中Buffered Image类的get Scaled Instance方法可以方便的用来进行图像的缩放变换, 但是该方法在进行缩放时不能保持图像的宽高比, 文章提供了一种简单的实现保持图像宽高比的缩放算法。

关键词:图像缩放,宽高比,BufferedImage

1 引言

图像信息是人类传递视觉信息的主要媒介, 在人类的感知中扮演着非常重要的角色。图像的缩放变换是一种比较常见的需求, 在图像处理和计算机图形学中, 图像缩放是指对数字图像的大小进行调整的过程。实际应用中, 经常需要对数字图像进行缩放变换。图像的缩放变换是非平凡的, 在进行缩放处理时, 需要在处理效率和变换后图像的平滑度及清晰度上做出选择。图像缩放变换的方法很多, 以插值算法较为常见。

2 保持图像宽高比的图像缩放

无论在应用中实现哪种插值算法, 都需要程序员对数字图像处理有较多的理解, 其算法的实现也较为复杂。在Java语言中, java.awt.image.Buffered Image[1,2]类实现了get Scaled Instance方法可以方便的用来进行图像的缩放变换。get Scaled Instance方法需要三个参数, 第一个参数指定缩放后图像的宽度, 第二个参数指定缩放后图像的高度, 第三参数指定缩放时使用的算法类型, 可取的类型为SCALE_DEFAULT, SCALE_FAST, SCALE_SMOOTH, SCALE_REPLICATE, SCALE_AREA_AVERAGING。但是get Scaled Instance方法在进行图像缩放变换时若原图像的宽高比与指定的宽高值比不一致, 则不能保持图像纵横比, 会使变换后的图像发生畸变。本文提供一种基于get Scaled Instance方法的简单算法, 可以在进行图像缩放时保持图像纵横比。

2.1 算法设计思想

假设待缩放图像的宽度为src W, 高度为src H, 宽高比为rs。缩放目标宽度为width, 高度为height, 宽高比为rd。图1中可以很容易地看出, 当宽度比rs<=rd时, 变换后图像的高度不能大于目标高度, 因此变换后的图像高度可取目标高度, 变换后图像宽度则应该为目标宽度乘以原图像的宽高比;宽度比rs>rd时, 变换后图像的宽度不能大于目标宽度, 因此变换后的图像宽度可取目标宽度, 变换后的图像实际图像高度等于目标高度除以原图像的宽高比。

由此可得算法步骤:

(1) 取得原图像的宽度和高度, 计算原图像的宽高比;计算目标宽度和高度的宽高比。

(2) 若原图像的宽高比小于等于目标宽高比, 则变换后的图像的实际高度等于目标高度, 而变换后的图像实际图像宽度等于目标宽度乘以原图像的宽高比。若原图像的宽高比大于目标宽高比, 则变换后的图像的实际宽度等于目标宽度, 而变换后的图像实际图像高度等于目标高度除以原图像的宽高比。

(3) 由步骤 (2) 所得宽度和高度对图像进行缩放变换。

2.2 算法实现

由以上设计思想可编写方法如下:

3 结语

文章给出了一种基于Buffered Image.get Scaled Instance方法的保持图像纵横比的图像缩放算法。算法简单, 易于编程实现。

参考文献

[1]Ken Arnold James, Gosling David Holmes.Java程序设计语言[M].北京:人民邮电出版社, 2006.

[2]Oracle Corporation.Java API Documentation[EB/OL].http://www.oracle.com/technetwork/java/api-141528.html.

缩放算法 篇2

1 图像缩放概述

图像缩放变换属于图像几何变换的一种类型,图像缩放要实现的就是在输出像素和输入像素之间建立一种映射关系,使得在输出图像的每一个位置均有待输出像素值产生。输出像素和输入像素之间的映射关系可以有两种不同的定义方法: 前向映射和逆向映射[1]。

前向映射将输出像素的坐标定义为输入像素的坐标的函数mf,如式1所示,其中Q[u,v]表示输出像素坐标,I( x,y)表示输入像素坐标。前向映射有两个问题: 1) ,如果对图像进行放大操作,在输出图像中将会有部分像素点没有相对应的输入像素,即产生空洞现象; 2) ,如果对图像进行缩小操作,输出图像中的部分像素点将会对应输入像素中的多个像素点,使得输出出现混乱。

逆向映射将输入像素的坐标定义为输出像素的坐标的函数me,如式( 2) 所示,其中Q[u,v]表示输出像素坐标,I( x,y) 表示输入像素坐标。逆向映射对每一个输出像素逆向映射出对应的输入像素,因此更适合产生输出数据流。当采用逆向映射对图像进行缩放操作时,被逆向映射出的坐标值往往不是整数,为了估计输出的像素值通常要在期望位置处对输入像素值进行重采样,等效于用一个采样插值核对输入的像素值进行加权[1],如式( 3) 所示,其中C( x,y) 表示采样函数,I[x,y]表示输入像素坐标,K[x,y]表示插值内核。

2 图像插值算法的选取

常见的图像插值算法有最近邻内插算法、双线性内插算法、双三次内插算法和B样条插值算法[2]。

最近邻内插算法是最简单的图像插值算法,该算法的原理为直接选取距离期望位置最近的源图像位置的像素值作为输出像素值。该算法丢失了源图像中的大量信息,使得图像变得模糊边缘部分不清晰,放大后有马赛克现象,缩小后有严重失真[3]。

双线性内插算法用与期望位置最近邻的4个像素值估计期望位置的像素值,若用( x,y) 表示期望位置,用Q( x,y) 表示输出像素值,I( x,y) 表示输入像素值,双线性内插算法的赋值公式为

双三次内插算法用期望位置最近邻的16个像素值估计期望位置的像素值。双三次插值算法可分离为分段三次插值核[4],如式( 5) 所示,其中a为自由参数,KKeys( s) 表示插值核为

B样条插值算法的原理是以期望位置为中心利用B样条核对源像素值进行估计从而得出期望像素值。3次B样条核的解析公式为

双三次内插算法主要应用于商业图像编辑程序( 如Adobe Photoshop等) 中,算法复杂度较高。B样条插值算法在使用过程中需要用到矩阵求逆等运算[5],算法复杂度更高。考虑到现实应用场景和FPGA的资源情况,本次设计选用双线性内插算法。

3 基于 FPGA 的双线性内插原理

采用逆向映射计算出的期望位置往往不是整数,设计中把期望位置的坐标分解为整数部分和小数部分。考虑到FPGA不方便进行浮点运算,因此把期望位置的坐标放大256倍( 即左移8位) 后取后8位作为小数部分,如式( 7) 所示。其中( xr,yr) 为整数部分,用以确定源像素点的位置; ( xi,yi) 为小数部分,用以确定各像素点的权重,对各像素点经行加权处理进而估计出期望位置的像素值。双线性内插算法示意图如图1所示,其中阴影部分为期望位置,I( x,y) 为各像素点的像素值。

4 基于 FPGA 实现图像双线性内插算法

该图像缩放模块为全景视频拼接系统的一部分,图像在进行缩放前已经做了去隔行、桶形畸变矫正等预处理操作,经过预处理操作后的视频数据存储在外部DDR2存储器( Double Data Rate 2 SDRAM) 中,在进行图像缩放前各路视频数据已经经过DDR2读取模块读取到FPGA的先入先 出队列( First Input First Output,FIFO) 中进行缓存。

图像缩放的关键是根据映射关系确定读写时序和读写地址。双线性内插算法需要用到期望位置附近的两行视频图像数据,因此利用两组RAM对视频信号进行缓存,用FPGA控制RAM的读写地址,从而可以保证读写地址的正确性。考虑到进行缩放时读写缓存RAM的时序复杂性,对读写时序的控制利用状态机实现,从而可以保证缩放时读写RAM时序的正确性。对图像进行缩放操作可以用4个状态机协同合作来实现,包括写RAM状态机、读RAM状态机、垂直缩放状态机和水平缩放状态机。

1) 写RAM状态机完成对对视频信号进行缓存的两组缓存RAM的写操作。2组RAM具有相同的读写地址,可以保证读取到的视频数据为同一列的数据,对两组RAM进行写操作时利用片选信号,实现两组RAM的乒乓操作。写RAM状态机完成的主要工作是产生写RAM的地址,控制写RAM的时序,控制写RAM的片选信号。写RAM状态机的流程图如图2所示。

2) 读RAM状态机的主要工作是产生读取RAM的地址,对读出RAM的数据个数进行计数从而控制读RAM时序。读RAM状态机的流程图如图3所示。

3) 垂直缩放状态机的主要工作是移动垂直采样窗口,读取FIFO中与期望位置相邻的两行数据并写入RAM中进行缓存,同时计算该两行数据的权重。垂直缩放状态机的流程图如图4所示。

4) 水平缩放状态机的主要工作是: 第一,对缩放后的图像的行像素个数进行计数,产生行结束标志从而控制垂直和水平缩放的时序; 第二,平移水平采样窗口,读取缓存RAM中与期望位置相邻的水平方向上的两个像素点并计算此两点的权重。水平缩放状态机的流程图如图5所示。

基于FPGA的线性内插算法的运算顺序为先进行垂直方向的插值运算,再以垂直方向的插值运算结果为基础进行水平方向的插值运算。插值运算模块的功能框图如图6所示,其中data1_in和data2_in为像素数据输入端口,data1_weight和data2_weight端口分别对应像素数据输入端口的权重。插值运算模块以像素数据以及其对应的权重为基础计算出插值运算后的像素数据data_out。插值运算模块的仿真波形如图7所示,从仿真波形中可以看出在像素数据输入3个时钟后输出插值运算后的像素数据。

上述各模块协调工作可以实现1路视频信号的缩放操作,效果图如图8所示,其中图8a为缩放前的原始图像,图8为放大后的图像,图8c为缩小后的图像。把上述视频图像缩放模块例化出多个,每个模块连接不同的视频数据码流可以实现多路视频信号的缩放处理,2路视频信号的缩放效果图如图9所示,其中图9a为缩放前的原始图像,图9b为放大后的图像,图9c为缩小后的图像。

5 小结

本文基于双线性内插算法在FPGA平台上设计实现的多路视频信号的缩放装置为全景视频拼接系统的一部分,利用FPGA并行处理的优势可以实现多路视频信号的同时缩放操作,从而保证了拼接后视频的实时性。根据美国电子消费品制造协会( Consumer Electronics Association,CEA) 制定的未压缩数字视频标准CEA-861所提供的传输时序,该装置可输出1 080p( 1 920×1 080) 的高清数字视频至数字显示器显示,输出帧率为60 f/s( 帧/秒) 。4路视频信号实现同时缩放的效果图如图10所示。

摘要:基于双线性内插算法,设计改进了一种以FPGA为硬件平台的多路视频信号的图像缩放装置。把与期望位置相邻的两行像素缓存在RAM中,先对垂直方向进行插值运算,再对水平方向进行插值运算。利用FPGA并行处理的优势实现多路视频信号的实时缩放。

缩放算法 篇3

随着4G高速网络商用速度加快和智能手机的普及, 业界对视频、应用、社交互动、游戏等多媒体应用的竞争日趋激烈。为了满足视频、游戏、社交互动等业务对图像处理能力及质量要求, 移动增值业务提供商必须提供实时大容量的图像处理服务。图片作为信息传递、表达的重要载体, 如何快速高质量地传输图像是人们一直关注的课题。

经典的图像缩放算法有:最近邻插值法、双线性插值法[1]、双立方插值[2]、小波分解[3]、偏微分方程[4]等。当用最近邻插值对手机上的图像进行缩放时, 处理速度快, 但有轻微锯齿现象;双三次插值比双线性插值计算复杂、速度较慢, 效果较好。

作者提出一种基于NDK双线性快速图像插值去噪放大算法, 首先基于NDK进行双线性插值放大, 然后再用中值滤波去噪。实验证明它不仅与双三次插值一样的效果, 而且运行速度快, 适合于手机图像插值应用。

1. NDK双线性快速图像插值去噪算法

1.1 双线性插值方法

双线性插值方法[1]是最为常用的图像缩放方法, 它需要通过对输入图像中距离其最近的4个像素的灰度值采用加权平均运算得出。该算法对图像进行放缩后的新图像的像素值, 需要由四个采样点的像素值来决定, 如图1所示。

由图1可知, 插值点f (i+u, j+v) 是图像放大后需要插入的像素点, 该点周围上下左右的四个像素点f (i, j) , f (i, j+1) , f (i+1, j) , f (i+1, j+1) 为双线性插值需要运算的四个顶点。其计算公式如 (1) 式所示。由公式 (1) 可知, 离插值点越近的点对其像素值得贡献越大, 而插值点越远的点对E点像素值得贡献也就越小。

1.2 基于NDK的双线性插值

Android NDK (Native Development Kit) 是一套工具集合[5], 允许开发者使用像C/C++语言那样实现应用程序的一部分。在开发过程中需要使用JNI机制进行调用。JNI是一种在Java虚拟机控制下执行代码的标准机制。NDK主要是通过JNI从Java代码调用C代码 (即Native编程) , 它主要为上层Java代码提供库函数 (动态库或是静态库) , 但不全部使用Native C代码编写整个Android应用。

在应用程序层中Android NDK通过Java的JNI方式调用C/C++类, C++类定义如下:

1.3 中值滤波去噪

中值滤波[6]是把序列或数字图像中一点的值, 用该点邻域中各点值的中值来替代。二维中值滤波定义如下:设{xij, (i, j) ∈I2}表示数字图像各点的灰度值, 滤波窗口为A, yij为窗口是A在xij点的中值, 则

式 (2) 为A窗口的xij点的中值表达式, 中值滤波窗口既可以是方形, 也可以取近似圆形或十字形。

2. 实验结果

作者使用小米1S手机开发了该图像缩放系统, 并在小米1S手机上进行了测试。

2.1 主观质量比较

由于手机屏幕的限制, 如果放大倍数过小则不能从主观质量上反映算法的优良, 反之如果放大倍数过大则不适合于手机图像插值应用。因此作者对所有图像只进行放大2倍比较。图2、图3为各种算法插值效果图。其中图2和图3都是将原图像先缩小2倍, 然后再放大2倍的图像缩放图。

/d B

从图2和图3可以看得出, 在平滑区域中经NDK双线性插值去噪处理的图像伪边缘数比双立方插值算法少。

2.2 客观质量比较

在客观质量的评价中, 作者使用lena (512×512) 和pepper (512×512) 作为测试图像。在灰度空间上, 先将原始图像进行缩小2倍, 然后再使用各种插值算法放大2倍, 将对放大后的图像与原始图像进行峰值信噪比PSNR (Peak Signal to Noise Ratio) [7]和结构相似度MSSIM (Structural similarity) [8]的定量分析, 分析结果如表1、表2所示。

其中, X是大小为M×N的原始图像, Z是原始图像由某一算法放大再缩小后 (或缩小再放大后) 的目标图像。理论上, PSNR (X, Z) 值越大, 则图像缩放效果越好。

由表1、表2知NDK双线性去噪算法所得到图像的PSNR值和MSSIM值均优于双线性、双三次、NDK双线性插值和最近邻插值。

2.3处理时间比较

在处理时间的评价中, 作者使用lena (512×512) 和pepper (512×512) 作为测试图像。先将原始图像进行缩小2倍, 然后再使用各种插值算法放大2倍, 记录各种算法的处理时间。各种算法的处理时间如表3所示。

(单位:毫秒)

从表3可以看出, 双立方插值时间最长, 为NDK双线性插值时间的40倍, 其次是双线性插值、最近邻插值、NDK双线性插值去噪, NDK双线性插值时间最短。

NDK双线性插值去噪算法无论从主观质量或客观质量上都与双立方插值算法效果相当, 并且其处理时间只有双立方插值算法的1/20, 在处理时间上有很大的优势。

3. 结论

本文提出了一种基于NDK双线性插值去噪算法图像放大方法。在双线性插值的基础上, 通过NDK使用JNI调用C++的双线性插值函数对图像进行放大, 然后使用JNI调用C++的中值滤波函数对图像去噪。实验证明该算法的缩放质量不仅与双三次插值达到一样的效果, 而且运行速度快, 适合于手机图像缩放。

摘要:为了较快较好地获得手机图像的显示效果, 本文提出一种基于NDK双线性插值去噪缩放算法。首先用NDK对手机图像进行双线性插值缩放, 然后再用中值滤波去噪。实验结果表明, 该算法比普通双线性插值算法边缘更加清晰, 处理速度更快, 提高了图像的质量。

关键词:双线性插值,NDK,图像缩放

参考文献

[1]Blu T, Thévenaz P, Unser M.Linear interpolation revitalized[J].IEEE Transactions on Image Processing, 2004, 13 (5) :710~719.

[2]R.G.Keys.Cubic convolution interpolation for digital image processing[J].IEEE Transactions on Acoustics, Speech, Signal Processing, 1981, 29 (6) :1153-1160.

[3]Rafael C.Gonzalez, Riehard E.woods.数字图像处理 (第2版) [M].北京:电子工业出版社.2005:276-321.

[4]张慧玉, 祝轩, 王蕾.基于PDE的图像放大方法研究[J].西安石油大学学报:自然科学版, 2009, 24 (5) :79-81.

[5]孙松.基于Android NDK的智能灯光系统的设计与实现[D].重庆大学硕士学位论文, 2014:15-22

[6]桂预风、陶剑锋.数字图像中值滤波改进算法研究[J].武汉理工大学学报 (交通科学与工程版) , 2004, 28 (1) :103-105.

[7]Wang Z, Bovik A C.Mean Squared Error:Love It or Leave It[J].IEEE Signal Processing Magazine, 2009, 26 (1) :98-117

缩放算法 篇4

分辨率是成像系统的关键技术指标[1]。不同测试目的与测试环境对应的分辨率定义是不相同的。如有光学镜头分辨率、探测器分辨率、静态照相分辨率、动态照相分辨率等[2]。光学焦距是成像系统的重要技术指标, 一般情况下焦距越长对应的照相分辨率越高, 在相同工作状态下, 如相机焦距为500 mm时, 目标对应的像素为10×10, 而当焦距为1 000 mm, 该目标对应的像素为20×20, 这种变化使目标的纹理更加清晰, 有利于图像的判读。另一方面经典的缩放算法如最邻近点插值、线性插值、三次样条插值等也可以对目标进行放大[3], 有些算法还声称能保留原图像的边沿信息, 克服经典插值算法带来的边沿模糊或锯齿现象[4,5]。

光学变焦距与缩放算法对图像分辨率有什么影响, 两种方法之间有什么区别, 工程中正确理解与运用两种方法对相机设计与应用技术人员具有重要意义。本文首先深入论述了三种分辨率定义, 然后从采样理论出发详细阐述了光学变焦与缩放算法本质上的联系与区别, 最后试验验证了光学变焦与缩放算法对图像分辨率的影响。

1 分辨率分类

1.1 光学镜头分辨率

镜头对被照物体细节的分辨能力称为光学镜头分辨率, 以1 mm的宽度内能清晰分辨线对数来定义, 单位为线对/毫米。镜头分辨率是衡量相机成像质量的重要指标。由于镜头存在像差和光的衍射, 使照相镜头的分辨率受到限制。对于无像差的镜头或者像差校正到瑞利极限的优质镜头, 无限远处的物点在系统焦平面上所得的像, 决定于系统通光孔径的形状和大小, 以及光波波长的夫琅和费衍射图样, 这使光学系统由靠近的两个物点所成的像可能发生重叠, 从而限制了光学系统的分辨率。由于衍射的存在, 即使是无像差镜头的分辨率也是有限的。判别两个点经光学系统的准则主要如式 (1) 的斯帕罗准则与式 (2) 的瑞利准则。

式中:b1, b2是能分辨的最小线宽, f为焦距, λ为入射光波长, D为光学系统的入瞳孔径。

1.2 光电探测器分辨率

光电探测器的基本功能是将光学信号的二维空间分布转变为电子信息, 经过信号处理与转换等变为人眼可辨识的二维光学图像[6]。探测器接收到的自然界光学图像是连续的, 但探测器每个感光像元的尺寸是离散的, 根据Shannon采样定理, 像元截止频率为

式中P为像元尺寸, 截止频率单位为线对/毫米。

1.3 摄影分辨率

摄影分辨率指成像系统实际工作时对目标的分辨能力。测试方法为放置不同尺寸的靶标, 以成像系统能分辨的最小靶标为基准计算实际摄影分辨率, 如式 (4) 所示:

式中:R为摄影分辨率 (线对/毫米) , RG为靶标一组黑白线条宽度, H为实际照相高度, f为相机镜头焦距。

2 光学变焦与缩放算法

2.1 图像采样

缩放算法与光学变焦的目的都是要放大图像, 从而提高判图人员辨别目标的能力。自然界中的景物为连续的, 而经CCD (Charge Coupled Device) 探测器采集后的图像为离散的, 从连续信号到离散信号的转换即为经典的采样过程。地面景物采样间隔的大小如式 (5) 所示:

式中:L为采样间距, b为CCD像元尺寸大小, H为实际照相高度, f为相机焦距。根据采样定理, 采样间距越小, 截止频率越高, 采样获得的数据细节信息量越丰富[7]。

2.2 光学变焦距

变焦距镜头是一种焦距 (或倍率) 可以连续变化而像面位置保持相对稳定的镜头。变焦过程中像面尺寸一般是不变的, 因此系统的视场会因为焦距变长而减少, 如式 (6) 所示:

式中:up为相机视场角, h为探测器尺寸, f为相机焦距。虽然此时相机的视场角减少, 但光学系统的放大率增大, 如式 (7) 所示:

式中:x为景物与相机间的距离。按照式 (4) 所示, 当焦距为f时, 相机对地面景物采样间距为H/ (RGf) , 当焦距为2f时, 相机对地面景物采样间距为H/ (2RGf) , 虽然视场减少了一半, 但空间采样频率提高一倍, 景物的细节更容易分辨, 如图1所示。另一方面较大范围内的改变光学焦距对相机的相对孔径亦有影响, 而相对孔径对像面平均照度关系如式 (8) 所示:

其中:E为像面上的平均照度, D为光学镜头的入瞳直径, f为相机焦距, L为视场内景物的平均亮度, τ为镜头的透射率, β为镜头的视场角。当焦距增加1倍后像面的照度降低为原照度的1/4, 此时需要延长曝光时间才能保持图像的信噪比。

2.3 图像缩放算法

为了更好的判读目标, 一般采用缩放算法放大遥感图像, 这是因为遥感图像单个像素对应的地面景物大, 而视神经能分辨两像点间最小距离应至少等于两个神经细胞直径, 否则视神经无法分辨出两点。在良好照明时, 人眼能分辨的物点间最小角为视角分辨率, 如式 (9) 所示:

当眼睛在无调节的松弛状态下, 焦距f=23 mm, 此时ε=60″。遥感图像中感兴趣的目标放大后进入人眼的视场角随之增大, 更多的视神经参与感测目标, 从而人眼的判别能力得到增强。对一幅连续图像信号s (x, y) 采样, 当满足奈奎斯特采样定理即连续信号频谱的最高频率小于折叠频率, 则抽样后在傅里叶频率域将产生周期延拓的连续频谱s (u, v) , 并且原信号的频谱和各延拓分量的频谱彼此不重叠。所以, 仅当奈奎斯特采样定理满足时, 采用一个理想低通滤波器就能把原始图像连续信号s (x, y) 从采样后的离散信号s (k, l) 完全恢复出来。理想滤波器的脉冲响应是无限的, 工程中通常采用的缩放算法为最邻域法插值、线性插值、B样条插值、三次插值等。这些算法本质上都是利用一个低通滤波器重构原图像, 因此图像的高频分量不可避免的都会受到损失。

2.4 光学变焦与缩放算法的区别

光学变焦与缩放算法本质上的区别在于:光学变焦改变的是相机对连续景物的采样频率fc, 而缩放算法没有改变采样频率, 只是重构了1/2采样频率内的图像信息[8,9]。因此在其它条件相同的情况下光学变焦能够提高相机的照相分辨率, 而图像缩放只是放大了采集图像对人眼的视场角, 更有利于后期的图像判读, 但并不能改变相机的照相分辨率。

3 试验

为了验证光学变焦与缩放算法对照相分辨率的影响, 搭建了一个试验平台, 如图2所示。试验测试系统主要包含四部分:可见光源、标准靶标、准直仪、可变焦面阵CCD相机。可见光源照射在标准靶标图案上, 形成摄影目标, 试验中选用四条形靶, 一条亮条纹或一条暗条纹的宽度为0.3 mm;准直仪用光学方法将目标置于无穷远处, 本次试验选用的准直仪焦距为1 500 mm;镜头焦距在50~200 mm范围内可调;选用面阵CCD相机作为接收元件, 其中像元尺寸为13μm×13μm。根据第一节的论述, 当焦距为50 mm时, 单个亮条纹或暗条纹在像面上对应的宽度为10μm;当焦距为100 mm时, 对应的宽度为20μm。

图3给出了当光学焦距为50 mm, 获取的靶标图像, 图4为光学焦距为100 mm时获取的靶标图像。从中可明显发现, 焦距增加一倍, 空间采样频率提高一倍, 从而使靶标图案的边沿信息更加丰富, 但同时由于相对孔径的减少, 图4的亮度有所降低。对50 mm焦距靶标图案采用最邻域插值, 线性插值、双三次插值算法放大一倍, 如图5、6、7所示, 虽然靶标图像放大了一倍, 与100 mm焦距采集的图像大小一致, 但由于欠采样的原因, 边沿信息明显模糊, 分辨率并没有提高。

4 结论

针对光学变焦与缩放算法对图像分辨率有什么影响, 本质上有何区别这一问题, 本文从采样理论出发, 将光学变焦与图像缩放结合起来分析, 在理论上深入讨论了二者之间的联系与区别, 并搭建起了分辨率测试平台, 试验验证了变焦距与缩放算法对分辨率的影响。本文的分析与试验希望对相机的设计与应用技术人员提供一点启发, 从而更深入的理解与运用这两种方法。

摘要:为了研究光学变焦与缩放算法对图像分辨率的影响, 首先深入论述了三种分辨率定义, 即光学镜头分辨率、探测器分辨率、摄影分辨率, 然后了从采样理论出发分别分析了光学变焦与缩放算法对图像分辨率的影响与二者之间的区别。最后搭建了分辨率测试系统, 获取了变焦距与缩放算法的靶标图像。实验结果表明, 100mm焦距的靶标图像边沿清晰、分辨率高, 而经缩放算法放大一倍的50mm焦距靶标图像边沿模糊, 分辨率下降。

关键词:光学变焦,缩放算法,分辨率

参考文献

[1]王德江, 张涛, 匡海鹏, 等.陀螺关键参数的标定及对航空相机伺服控制系统的影响[J].光电工程, 2010, 37 (1) :43-48.WANG De-jiang, ZHANG Tao, KUANG Hai-peng, et al.Calibration of Gyro’s Key Parameters and Their Effect on Aerial Camera’s Servo Control System[J].Opto-Electronic Engineering, 2010, 37 (1) :43-48.

[2]Smith W J.Modern Optical Engineering[M].New York:McGraw-Hill, Inc, 2000.

[3]Eehmann Thomas M.Survey:Interpolation Methods In Medical Image Processing[J].IEEE Transaction on Medical Imaging (S0278-0062) , 1999, 18 (11) :1049-1075.

[4]Xin L, Orchard M T.New Edge-Directed Interpolation[J].IEEE Transaction on Image Processing (S1057-7149) , 2001, 10 (10) :1521-1527.

[5]Saif Zahir, Rabab Ward.A New Edge Preserving Binary Images Resizing Technique[J].Journal of Circuits, Systems, and Computers (S1793-6454) , 2002, 11 (3) :247-257.

[6]Holst G C.CCD Array, Cameras and Displays[M].Bellingham:SPIE Optical Engineering Press, 1996.

[7]曹琦, 王德江, 张齐, 等.红外点目标的能量积累[J].光学精密工程, 2010, 18 (3) :741-747.CAO Qi, WANG De-jiang, ZHANG Qi, et al.Energy Accumulation in Infrared Point Target Detection[J].Optics and Precision Engineering, 2010, 18 (3) :741-747.

[8]刘妍妍, 张新, 徐正平, 等.利用异型像元探测器提高空间分辨率[J].光学精密工程, 2009, 17 (10) :2620-2627.LIU Yan-yan, ZHANG Xin, XU Zheng-ping, et al.Enhancing spatial-resolution with detectors of special-shaped pixels[J].Optics and Precision Engineering, 2009, 17 (10) :2620-2627.

缩放算法 篇5

在现行电视系统中,幅型比4∶3与16∶9两种格式的视频图像素材同时存在。为把原有4∶3格式的素材用到新的电视系统中或把新的16∶9格式素材用到传统电视系统中,均需进行视频图像幅型比的转换处理。贴黑边处理不损失原图像的内容,没有变形失真,但屏幕没有充分利用;裁剪处理没有变形失真,但损失了部分图像内容;线性缩放处理使原图像的内容和显示区域得到全部利用,但图像会出现变形失真[1,2,3]。

对于电视的一帧图像而言,主景在中间部位,是观众关注的重点;相对而言,两侧的图像显得次要一些。若能对图像的主景部位进行线性变化,对两侧的图像进行非线性变化,既可保证主景图像的不失真和内容的完整性,又可利用全部显示区域,达到较完美的视觉效果。据此,本文提出了一种基于可变区域的视频图像幅型非线性缩放算法。

2 算法实现原理

可变区域的视频图像幅型非线性缩放算法实现原理如图1所示。

将图像分为中间线性变换区域和两侧非线性变换区域,通常将线性区域和非线性区域的大小固定,如两侧非线性区域(Left,Right)各占30%,中间线性区域(Center)占40%,固定线性区域和非线性区域的大小可简化电路设计。由于非线性缩放的效果主要由用户的主观评价,不同国家与地区的用户对缩放效果的要求与评价并不一样。针对这一情况,提出一种可变区域的非线性缩放,可变区域是指线性区域和非线性区域的大小可通过软件设定,在产品设计阶段,根据特定人群对缩放效果的反馈,选出比较理想的数值进行区域设定。

3 算法实现

可变区域全景视频图像幅型非线性缩放控制器硬件设计如图2所示。核心采用两个累加器,一个用来做非线性累加器(NL),一个用来做缩放系数值累加器(SV)。

可变区域的线性区域缩放比例主要由信号格式和显示屏幕的尺寸决定,非线性缩放的效果取决于非线性区域的大小、线性区域的大小、非线性缩放函数的特性和线性缩放比例K。left,center,right分别表示缩放后图像的左侧非线性区域、中间线性区域和右侧非线性区域的大小。一般情况下,取left=right。若用WDISP表示显示屏幕的宽度,则

非线性区域的缩放可选择不同的非线性函数,函数的选择主要考虑电路设计的复杂度,同时应满足以下条件:缩放函数初始值不小于零;函数的斜率应线性变化,,在线性区域和非线性区域的交界处,其斜率递减为零,其函数值等于线性缩放比例K;缩放电路只能对所有区域进行放大或缩小,若K>1,则整条曲线都位于1之上,若K<1,则整条曲线都位于1之下。为了使电路设计简单,,笔者选用二次函数作为非线性缩放函数

二次函数的系数和线性缩放比例K由输入信号格式、显示格式和非线性区域的大小(left)决定。输入信号格式包括输入图像的幅型比、输入像素的幅型比、输入图像的宽度WSRC和高度HSRC,由图2中的图像格式甄别器根据输入视频图像场的数据得到,并将识别结果送给图2中的CPU控制器。显示格式包括显示屏幕的幅型比、屏幕像素的幅型比、屏幕的宽度WDISP和高度HDISP,这些参数由图2中的参数设置软件向CPU控制器进行设置,这里WSRC,HSRC,WDISP和HDISP均以像素计。在输入信号格式和显示屏幕给定的情况下,可变的参数只有left。CPU控制器根据图像格式甄别器送来的输入信号格式、参数软件设置的显示格式和非线性区域的大小(left)来计算出二次函数的系数和线性缩放比例K,并将计算结果送到图2中的NL和SV进行设置。

4 算法仿真结果分析

如图3所示,有一输入幅型比为4∶3,图像格式为720×480的视频素材,需要输出到幅型比16∶9格式1 920×1 080的HDTV上显示。

采用全景线性缩放变换后幅型比16∶9格式1 920×1 080图像如图4所示,从图中可以看出,整幅图像出现变形失真。

当left=750,采用非线性缩放算法缩放后,幅型比16∶9,格式1 920×1 080,图像效果如图5所示。当left=780,采用非线性缩放算法缩放后,幅型比16∶9,格式1 920×1 080,图像效果如图6所示。

从非线性缩放后的图像可看出,线性区域没有变形失真,即主景图像没有变形失真,同时维护了图像内容的完整性,也充分利用了屏幕的全部显示区,达到一种较完美的显示效果。但从图5和图6可看出,非线性区域的变形失真比线性缩放后的图像严重,与图6相比,图5没有变形失真的区域更大,但两侧变形失真更为严重,在实际应用中可以选择多组参数,对缩放效果进行对比,选出比较理想的数值进行非线性区域设定。

摘要:详细讨论了算法的原理和工程实现方法。结果表明,该算法既可保证主景图像不失真及图像内容的完整性,又可充分利用电视屏幕的整个显示区,达到较完美的视觉效果。

关键词:视频图像,幅型变换,非线性缩放算法,可变区域

参考文献

[1]王联,杨庆华.4:3和16:9幅型比在HDTV/SDTV节目制作和播出系统中的处理[J].现代电视技术,2002(9):37-39.

[2]许志祥.高清与标清制式转换及其实现[J].电视技术,2002(7):12-16.

缩放算法 篇6

在不同分辨率下运行应用软件需要考虑控件的缩放问题,当同时打开多个应用程序界面时,也需要调整窗口的大小。因此,窗口内的控件是否能够随窗口大小的变化按比例自动进行缩放就显得很重要了。

2 面向对象的控件缩放思想

主流开发工具都具有面向对象技术,本文以PowerBuilder作为示例。根据面向对象的思想,首先创建窗口类w_autosize,具备各种控件的智能缩放功能,所有新创建的窗体只要继承该窗口,就可以实现相应的控件缩放功能了,提高了代码的可复用性,如图1所示。

PowerBuilder的窗口对象window有一个重要的属性control[]数组,存储了窗口内放置的所有控件属性。在窗口的open事件中,通过其control[]数组,找出在窗口内放置的全部DragObject类控件(当遇到Tab控件和UserObject控件时,继续通过它们各自的control[]数组,找出其内部的全部DragObject类控件),保存所有找到的控件的原始x、y、width和height属性数据与当前窗口原始宽度和高度的比例值。当窗口大小调整时,在resize事件中,根据保存的各控件的比例值重置控件的x、y、width和height属性,从而实现控件随窗口大小的变化自动按比例放大或缩小,窗体内控件的尺寸及坐标应按以下公式同步进行调整:

控件的新Width值=(控件原Width值/窗体原Width值)×窗体新Width值

控件的新Height值=(控件原Height值/窗体原Height值)×窗体新Height值

控件的新X值=(控件原X值/窗体原Width值)×窗体新Width值

控件的新Y值=(控件原Y值/窗体原Height值)×窗体新Height值

3 POWERBUILDER具体技术实现方案

本程序首先定义了一个事件ue_position,用来获取所有控件的初始化的X,Y坐标和W宽度H高度和原始宽度和高度的比例,即类似如(控件原Width值/窗体原Width值)的信息,并作为控件的TAG的信息保存起来。

4 结束语

本文中引用的所有代码已经在江西移动通信有限公司的多个软件系统中被采用,实践证明具有非常好的效果。例如在移动公司大客户管理系统中就采用了这种技术,如图2所示。

如图3所示,可以发现所有的控件的长宽变化发生了自动调整,这不是简单的图片调整,而是界面中所有控件的大小和坐标都自动进行了按比例调整。本方法利用了面向对象的思想,把控件的自动缩放功能作为窗体类的一个基本功能进行封装和继承,极大地提高了程序开发的方便性和可维护性,并且具备非常好的可通用性,应用前景广泛。

参考文献

[1]Brett D Melanghlin,Gary Pollice,David West.Head first object-orien- ted analysis & design[M].O'REILLY MEDIA,2007.

[2]Grady Booth.Object-oriented analysis and design with applications [M].ADDISON WESLEY/PEARSON,2006.

[3]Cay Horstmann,Object-Oriented Design and Patterns[M].Willey,2006.

[4]Robert Lafore.Object-oriented programming in C++ fourth edition [M].SAMS,2006.

【缩放算法】推荐阅读:

特征缩放06-06

扩展算法07-16

蝶形算法07-18

区间算法07-18

搜索算法07-19

矩阵算法05-13

回归算法05-15

光流算法05-16

边缘算法05-16

查询算法05-17

上一篇:人造石油新设想下一篇:DEMATEL研究