高分辨全景视觉系统图像亮度自适应调整方法

文档序号:7647897阅读:433来源:国知局
专利名称:高分辨全景视觉系统图像亮度自适应调整方法
技术领域
本发明涉及的是一种图像处理方法,特别涉及一种在高分辨率全景视觉系统 中图像亮度的处理方法。(二) 背景技术随着全景视觉系统的不断完善,全景视觉技术已经在视觉及光学领域有了初 步的应用。在室内环境中,国外已经将全景视觉系统广泛应用于视频会议等视觉 领域中,国内近年来也在开展相应研究,但在实际应用中鲜有实例。而在室外环 境中,由于自然环境中光照亮度会随时变化,全景视觉系统的成像器所采集的图 像也会随之发生相应的变化,这样一来,当实际场合中的光照亮度变化很大或者 很不均匀时势必会严重影响图像的观看质量,所以如何调整图像的亮度成为了全 景视觉系统在室外应用所要首先解决的技术问题。在通常的视觉领域中,我们可 以让CCD相机和一个自动光圈镜头配合来解决上述问题,当自然光线发生变化 时,CCD相机会感知这一现象并通过一个输出电压驱动装置来调整镜头上的光 圈做相应变化,这也是现行中解决上述问题的首选方法。在全景视觉领域中,我 们可以选择的成像器的种类有两种普通分辨率相机和高分辨率相机。在室内范 围较小的环境中,选择普通相机即可。但在室外的环境中,由于全景视觉系统收 录的信息量巨大,我们必须使用高分辨率的科学级CCD相机才能保证图像的清 晰度,而在CCD相机领域,高分辨率的科学级相机均不支持电压输出驱动这一 功能,这就意味着我们无法使用自动光圈镜头而只能使用手动光圈镜头。在实际 应用中,为了保证图像的清晰度,使用高分辨率的CCD相机势在必行,所以我 们必须找到一种在无法使用自动光圈的前提下能够使图像亮度自适应调整的方 法。专利申请号为200510055008.9,名称为"适应性地调整图像亮度的装置及 相关方法"的专利申请文件公开了一种技术方案,该技术方案包含多个亮度査询 表;亮度分析单元,用来分析来源图像的多个像素的亮度值的分布状况;以及动 态亮度曲线配合单元,电连接到亮度分析单元及亮度查询表,用来依据分布状况
在亮度査询表中选取其一,用以调整图像像素的亮度,较佳地,动态亮度曲线配 合单元包含目前亮度査询表,动态亮度曲线配合单元根据所选取的亮度查询表适 应性地更新目前亮度査询表,以根据目前亮度查询表调整图像的亮度。它的主要 特点在于利用亮度査询表来调整图像的亮度。此专利的局限性在于对亮度的调整方案是完全基于图像处理的方式,这种方 式并不是针对图像的来源做出改变,属于图像的后期处理,适应原始图像变化的 能力较差,没有从根本上解决亮度的变化问题,而且不能自动的调整图像的亮度, 应用性较差。另外一项专利申请号为200610114697.0,名称为"一种自动调整图像亮度 的方法和自动成像设备"的专利申请文件中"包括对成像器生成的当前帧图像进 行图像亮度统计,并根据统计结果进行自动曝光计算,输出曝光参数和电子增益 参数对取景器输出的下一幅图像进行调节;还包括统计成像器生成的当前帧图 像中指定区域图像的亮度值,并与设定的亮度阈值比较;当所述指定区域图像的 亮度值小于等于所设亮度阈值时,增大所述指定区域图像的亮度值。本发明还公 开了一种具备相应功能的自动成像设备。采用本发明能实现对图像的局部区域进 行亮度调整,从而提高图像的对比度,从整体上提高图像质量。"的技术方案。此专利的不足之处在于图像亮度的查询方案欠佳,对图像亮度的计算是局部 的,而局部的图像亮度并不能在任意时刻都反映出当前整体图像的亮度。另外, 该专利在曝光时间的调整方法上存在一定缺陷,并不能保证在任意自然亮度变化 的时刻做出自动调整。
发明内容本发明的目的在于提供一种能够适应各种自然光照条件,在自然光照亮度发 生变化时能够动态的调整图像的亮度,有效弥补高分辨率科学级CCD相机不能 使用自动光圈的缺点的高分辨全景视觉系统图像亮度自适应调整方法。本发明的目的是这样实现的(1) 把相机的终端虚拟成普通的串口,由于COMl、 COM2为保留的串口, 为了避免发生冲突,我们把相机的终端虚拟成COM3;(2) 对虚拟串口进行初始化;(3) 利用亮度査询函数,计算图像的亮度阈值;
(4)判断亮度是否在亮度阈值范围内,如果不是则执行亮度自适应调整函数。
本发明还可以包括
1、 所述的利用亮度査询函数,计算图像的亮度阈值是用ExpoureCalculate
计算图像平均亮度值。
2、 所述的亮度自适应调整函数是Expourelmprov函数。 本发明利用科学级CCD相机支持的虚拟串口技术将相机作为一个终端虚拟成一个普通的串口,然后通过对全景视觉系统中原始图像的当前亮度和事先计算 出的亮度阈值做比较,根据比较结果判断是否在程序中向串口发送命令或者向串 口发送何命令,进而达到动态调整图像亮度的目的。
本发明的工作原理是预先计算亮度的阈值,即确定适应观看的亮度范围, 然后在程序中实时的计算全景图像的亮度并使之与阈值相比较,根据比较的结果 向虚拟串口发送相应的命令改变相机的曝光时间以便使图像的亮度得到适应性 的调整。
本发明的主要工作过程如下:
首先,把相机的终端虚拟成普通的串口,我们可以利用相机的虚拟串口功能 完成如上操作。由于C0M1、 COM2为保留的串口,为了避免发生冲突,我们把 相机的终端虚拟成COM3。完成上述操作后打开串口调试助手,我们发现在备选 的串口中多了 COM3选项,这说明将相机终端虚拟成串口的操作已成功完成, 我们可以通过对串口的操作来实现对相机终端的控制。
然后,在程序中对串口进行初始化。可以定义一个专门用来串口初始化的功 能函数,然后在整个程序的初始化中写入这个函数,这样只要程序一开始运行就 会对我们虚拟的COM3串口进行初始化操作,我们便可以在程序运行的任意时 刻进行串口操作。
接着,我们便要通过比较全景图像的当前值与亮度阈值进行相应的串口操 作。亮度阈值的确定是以亮度査询函数为基础的,设计实现亮度査询函数也是本 程序的一个关键所在,在全景视觉系统中全景图像是最原始的没有经过处理的图 像,也是最接近相机输出的图像,所以我们选取全景图像的亮度作为系统亮度的 参考值。在设计选取亮度查询函数时,我们需要考虑以下几个因素
1、该亮度査询函数计算出来的亮度确实能够真实地反映图像的当前亮度。2、 由于该函数将在程序的定时器里执行,所以该亮度査询函数计算过程不 应该过于复杂,以便不会给程序带来额外的负担。
3、 由于该亮度査询函数不但用来计算亮度以确定亮度的阈值,还要在程序 中实时的计算图像的当前亮度以决定所要做的串口操作,所以该函数计算出来的 亮度值在利用串口改变相机的曝光时间时的变化规律应该有利于发现,即该函数 计算出的亮度值应该能够随相机曝光时间的改变做近似于线性的变化,并且变化 规律可以被我们掌握。
基于以上几点,我们遴选出以下几个方案
方案一以全景图像中每个像素点的R、 G、 B值作为基准值,得到上述值
乘以相应系数相加后再取平均值即是当前图像的亮度平均值。
方案二以全景图像中的每个像素点的蓝色值作为基准值,得到上述值后直 接做平均即可近似得到当前图像的亮度值。
方案三 一种方案二的改进方法。由于在高分辨率全景视觉系统中图像的分 辨率通常很高,图像的采集和处理给计算机带来了很大的负担,实时性难以保证。 基于此,我们设想中的图像亮度算法应该具有较低的复杂度以便不会给程序带来 额外的负担。同时,尽量简单化的算法也会更快速的对自然亮度的变化做出反映, 提高自适应能力,所以我们设计了如下改进算法首先做和方案二同样的操作, 即得到所有像素点的蓝色值,不同的是在得到蓝色值的过程中我们只记录亮度最 大的500个点,我们认为这500个点最能反映当前自然光线的变化。接下来在程 序实时的计算亮度时,我们只去寻找这500个点的蓝色值,同时我们在定时器中
设定一个时间周期,隔一段时间才会重新计算所有像素点的亮度值,然后再次确
定亮度值最大的500个点,进入新一轮的周期。
在选定了亮度査询函数后,我们就可以根据现场的具体观测来确定亮度的阈 值了。最后,我们把确定的图像亮度阈值写进程序的初始化中,如果现场环境改 变导致亮度阈值需要重新计算时,可以重新确定阈值,也可以通过应用软件提供 的功能在程序中动态的修改。
至此,我们已经可以根据需要选定计算亮度的方法,也确定了亮度的阈值, 接下来我们所要做的操作就是通过比较当前亮度与亮度阈值做出判断,根据判断 的结果决定是否需要向串口发送命令或者向串口发送何命令,这也是本发明最重
要的一个环节。在这里我们重点介绍亮度自适应调整算法Expourelmprov,图2 为Expourelmprov函数的流程图。
首先把上述图像亮度计算函数ExpoureCalculate写到Expourelmprov的最开 始,即每次执行Expourelmprov时都会首先利用ExpoureCalculate计算当前图像 的亮度。
然后比较当前图像亮度的值和亮度阐值,如果当前亮度值在阈值区间内,说 明亮度在适于观看的范围内则不向串口发送命令,直接返回继续等待下一次的亮 度计算。
如果亮度不在阈值范围内则调整CCD相机的曝光时间来改变图像的亮度。 在这里需要简要介绍一下高分辨率科学级CCD相机的曝光设置。我们一般通过 改变Shutter Time和Long Integration这两个参数来改变相机的曝光时间。Shutter Time的调节范围一般在100ums—500ms,适用于白天有自然光线的情况下;而 Long Integration的调节范围一般在30ms—10s之间,适用于夜晚光照条件较差的 场合。在程序中我们设置一个布尔型变量作为白天和夜晚模式的标志。
对于亮度不在阈值范围内的两种情况需要分别处理
亮度小于亮度阈值的最小值这说明当前亮度过低,需要增加曝光时间以提 高图像的亮度。首先通过设置的标志判断当前相机的曝光方式是在白天模式 (Shutter Time)还是夜间模式下(Long Integration)。如果在Shutter Time模式 下,还需要进一步判断当前曝光时间是否已经接近Shutter Time的最大值,如果 判断出本次操作后的曝光时间会超过最大值,则直接进入Long Integration模式, 并在Long Integration模式下做一步串口操作。如果没有超过最大值,则直接在 Shutter Time模式下做一步串口操作。如果发现相机的曝光方式工作在Long Integration模式下,则在Long Integration模式下做一步串口操作。
亮度大于亮度阈值的最大值这说明当前亮度过高,需要减小曝光时间以降 低图像的亮度。首先还是通过标志判断当前相机的曝光方式。如果在Long Integration模式下,还需要进一步判断当前曝光时间是否已经接近Long Integration的最小值,如果判断出本次操作后的曝光时间会低于最小值,则直接 进入Shutter Time模式,并在Shutter Time模式下做一步串口操作。如果没有低 于最小值,则直接在Long Integration模式下做一步串口操作。如果发现相机的
曝光方式工作在Shutter Time模式下,则在Shutter Time模式下做一步串口操作。 由于改变相机的曝光时间有可能影响图像的颜色,所以在每次操作后进行一
步白平衡以便颜色不会出现失真现象。 本发明的有益效果为
本发明的有益效果在于解决了高分辨率全景视觉系统中图像亮度不能自适 应调整的缺陷,同时为高分辨率CCD相机亮度调整提供了新的有效方法。
高分辨率科学级CCD相机一般都不具备电压输出功能,无法使用自动光圈 来调节亮度, 一般都只能通过调节手动光圈的调节环来适应自然亮度的变化。当 前解决该问题的方法一般有两种一是通过纯粹图像处理的方式来调整图像的亮 度,这种方法虽然可以改变图像的亮度,但亮度变化后的图像质量严重下降,存 在失真现象,并且复杂的图像处理增大了程序的负担,不利于图像的实时显示。 另一种方法就是通过相机配备的终端软件来手动调整相机的曝光时间等参数以 适应亮度的变化,这种方法的缺陷是亮度的调整需要人工干预,并且调整的尺度 不易掌握,由于亮度不能自动调整, 一般只适用于实验人员在科研中使用,并不 适用于用户使用。
本发明正是结合了上述两种方法,利用图像处理的手段确定亮度的阈值和计 算实时图像的亮度。同时,利用虚拟串口模拟相机终端来改变相机的曝光时间。 本发明和现有技术的不同点在于首先,判断亮度阈值的方法和计算图像亮
度的方法不同。另外,本发明改变相机曝光时间的方式是通过利用相机虚拟串口 的功能同时结合图像处理的方法在程序中使相机的曝光时间根据需要自动调整 来实现的。
本方明的优点在于使配合手动光圈镜头使用的高分辨率CCD相机能够自 适应自然亮度的变化,并且响应时间小于3秒,图像自适应调整成功率达到 100%。
(四)


附图l是本发明的流程附图2是亮度调整函数Expourelmprov的流程图。
具体实施方式
下面结合附图举例对本发明做更详细地描述
1利用相机虚拟串口功能将相机终端虚拟成串口 COM3,重新启动后利用串 口调试助手辅助调试,确定COM3已生效后继续下一步操作。 2在全景视觉应用软件中加入串口控件。本程序采用¥。++6.0作为开发工具, 项目名称为CBayerDemo,依次进行如下操作工具栏^Project~~Add To Project~~Components and Controls— Registered ActiveX Controls— Microsoft Communications Control, version 6.0—插入,这时串口图标会出现在资源对话框 中,直接拖拽进主对话框中即可。3打开ClassWizard—〉Member Viariables选项卡,为IDC—MSC0MM1添加控制变 量m一ctrlComm。4在0nlnitDialog中对串口进行初始化,部分代码如下m—ctrlComm. Create (NULL, 0, CRect (0, 0, 0, 0) , this, IDC一MSC0固1); if (ra—ctrlCo亂GetPort0pen0)m—ctrlCo亂SetCommPort (3); m一ctrlCo臓.SetlnBufferSize(1024); m一ctrlCo亂Set0utBufferSize(512); if (!m—ctrlCo亂GetPortOpen()) {m_ctrlComm.SetPortOpen(TRUE);m一ctrlCo隱.SetSettings(〃9600, n, 8, 1〃); m一ctrlCo亂SetInputMode(l); m一ctrlCo亂SetRThreshold(l); m—ctrlCo亂SetI叩utLen(O); m—ctrlCo亂Getlnput ();5计算图像的亮度阈值。首先确定图像亮度査询函数,这里我们以方案三为例介elseAfxMessageBox(〃打开串口失败");
绍图像亮度査询函数。流程图2为亮度査询函数的程序流程图,部分源代码如下: void CBayerDemoDlg:: ExporeCalculate()int i,j,k,h; MyGlobl tGlobl;int ctMaxClo[500]; for(i=0;i<500;i++) ctMaxClo[i]=0; for(i=0;i<2048;i+=30) for(j=0;j<2048;j+=30){ long offset=tGlobl.cam—fGpsb(i,j,2048,2048);long clo=tImageManagel .ImgFull [offset]; for(k=0;k<500;k++)if(clo〉ctMaxClo[k])for(h=499;h>k;h—) { ctMaxClo[h;|=ctMaxClo|;h-l];ctMaxClo[k]=clo;long totalclo=0^ for(i=0;i<500;i++)totalclo+=ctMaxClo[i];averageclo=totalclo/500;6加入亮度自适应调整函数Expourelmprov。 Expourelmprov函数的部分源代码 如下void CBayerDemoDlg:: Expoureimprov()OnExporeCalculate(); CString C0M3_han; i f(averagec1o<60){ if( han->Bright〈116500&&han-〉Panduan—sst){ han-〉Bright=han-〉Bright+800; C0M3_han. Format(〃sli off\r"); m一ctrlCo亂SetOutput ((COleVariant) (C0M3_han)); Sle印(500);COM3—h肌Fo醒t ("sst %d\r〃, han_>Bright); m—ctrlCo亂SetOutput ((COleVariant) (COM3—han));else if(han->Panduan—sst) { han->Bright=120;han-〉Panduan一sst二FALSE;COM3—h肌Format ("sst off\r");m一ctrlCo亂SetOutput ((COleVariant) (C0M3Jian));Sle印(500);COM3—han. Format(〃sli %d\r〃, han_>Bright); m—ctrlCo亂SetOutput ((COleVariant) (C0M3Jmn));6lS6han—>Bright=han->Bright+20;if(han->Bright>10000){ han->Bright=10000; C0M3—h肌Format ("sst off\r"); m_ctrlComm. SetOutput((C01eVariant)(COM3—han)); Sle印(500);C0M3_han. Format("sli %d\r", han-〉Bright); m—ctrlComm. SetOutput((C01eVariant)(C0M3—han));Sle印(500); OnWhiteBalance();if( han->Bright〉=140&!han->Panduan_sst) {han->Bright=han_>Bright_20;C0M3_han. Format("sst off\r");m—ctrlComm. SetOutput((C01eVariant)(C0M3一han));Sle印(500);C0M3_han. Format(〃sli %d\r〃,han-〉Bright); m_ctrlComm. SetOutput((COleVaxiant)(C0M3一han));han-〉Bright=l17489; han-〉Panduein—sst=TRUE; C0M3_han. Format(〃sli off\r〃); m_ctrlComm. SetOutput((C01eVariant)(C0M3一han)); Sle印(500);COM3—han. Format("sst %d\r〃, han-〉Bright); m_ctrlComm. SetOutput((COleVaxiant)(COM3—han));if(averageclo>75)else if (!han—>ParKluan_sst) elsehan—〉Bright=han—〉Bright—800;if(han-〉Bright〈=70)han-〉Bright=70;COM3—han. Format(〃sli off\r"); m一ctrlCo亂SetOutput ((C01eVariant) (C0M3一han)); Sle印(500);COM3一h肌Fo匿t (〃sst %d\r〃, han_>Bright); m一ctrlCo亂Set0utput((C01eVariant) (C0M3一han));7最后,我们把上述亮度自适应调整函数写进定时器中,定时器的周期可由用户 自己设定,周期的长短可直接决定响应时间的长短,本发明经过多次实验总结出 此周期时间最短可为2秒。Sle印(500);OnWhiteBalance();
权利要求
1、 一种高分辨全景视觉系统图像亮度自适应调整方法,其特征是(1) 把相机的终端虚拟成普通的串口,由于C0M1、 COM2为保留的串口, 为了避免发生冲突,我们把相机的终端虚拟成COM3;(2) 对虚拟串口进行初始化;(3) 利用亮度査询函数,计算图像的亮度阈值;(4) 判断亮度是否在亮度阈值范围内,如果不是则执行亮度自适应调整函数。
2、 根据权利要求1所述的高分辨全景视觉系统图像亮度自适应调整方法, 其特征是所述的利用亮度查询函数,计算图像的亮度阈值是用 ExpoureCalculate计算图像平均亮度值。
3、 根据权利要求1或2所述的高分辨全景视觉系统图像亮度自适应调整方 法,其特征是所述的亮度自适应调整函数是Expourelmprov函数。
全文摘要
本发明提供的是一种高分辨全景视觉系统图像亮度自适应调整方法。(1)把相机的终端虚拟成普通的串口,由于COM1、COM2为保留的串口,为了避免发生冲突,我们把相机的终端虚拟成COM3;(2)对虚拟串口进行初始化;(3)利用亮度查询函数,计算图像的亮度阈值;(4)判断亮度是否在60-75的亮度阈值范围内,如果不是则执行亮度自适应调整函数。本发明改变相机曝光时间的方式是通过利用相机虚拟串口的功能同时结合图像处理的方法在程序中使相机的曝光时间根据需要自动调整来实现的。使配合手动光圈镜头使用的高分辨率CCD相机能够自适应自然亮度的变化,并且响应时间小于3秒,图像自适应调整成功率达到100%。
文档编号H04N5/235GK101123691SQ20071007255
公开日2008年2月13日 申请日期2007年7月24日 优先权日2007年7月24日
发明者新 原, 夏桂华, 智 张, 张忠民, 朱齐丹, 蓬 栗, 王立辉, 蔡成涛, 军 陆, 瑞 韩 申请人:哈尔滨工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1