图像自嵌入(精选7篇)
图像自嵌入 篇1
0引言
近年来, 随着人们信息安全意识的不断增强, 人们对图像等数字媒体的真实性、完整性的要求越来越高, 信息隐藏和数字水印技术是解决这类问题的重要方法之一[1]。图像等数字媒体信息有其自身的特点, 因为图像数据的意义是基于内容的, 与比特流无关, 在某些应用中, 对比特流的操作并不会引起图像内容的改变。
1999年, 文献[2]提出自嵌入的概念, 提出将图像信息嵌入到自身中, 用于图像的保护和恢复。近年来, 出现了许多有关图像自嵌入算法的文献。文献[3]提出了一种图像自嵌入及窜改的检测和恢复算法, 其基本思路是把一个图像块的主要DCT系数经过量化、编码和加密后, 嵌入另一个图像块的最低位, 并依据大量图像DCT量化系数的统计性质, 设计了主要DCT系数的位数分配。文献[4]描述了一种图像的自嵌入保护方法, 将图像子块的压缩编码与偏移子块的认证信息嵌入到偏移子块中。数据嵌入时, 最多只改变原图像子块最低位数据的一半, 对图像质量影响较小, 当图像有缺损或被篡改时, 可较准确地确定其位置, 并恢复。文献[5]提出一种对水印篡改鲁棒性的空域自嵌入水印算法, 并分析了算法中阈值选取的合理性和检测篡改的可靠性。该算法首先基于密钥将原始图像的最低位和1/4次低位置零, 通过小波低频系数生成低精度图像, 将低精度图像加密生成的二值编码嵌入原始图像的置零位。文献[6]实现了一种彩色图像脆弱水印自嵌入认证算法, 算法选择DCT子块的低频系数, 形成子块编码, 嵌入图像块B+p的LSB, p是偏移量。图像检测和恢复时, 通过对比图像子块B的编码和子块B+p的LSB数据来判断B是否被篡改, 可以通过B+p中的LSB数据来恢复子块B。这些方法, 都涉及到原始图像数据的压缩、嵌入方法和嵌入位置的选择、图像的认证和恢复等步骤。
自嵌入信息后的隐秘图像, 在平滑区, 即使对像素值的微小改动也能使像素间的对比明显, 造成视觉可见。利用人眼视觉特性将子块编码存储到纹理复杂, 灰度较大或较小的子块, 放弃平滑的和中间灰度的子块, 可使峰值信噪比有所提高, 并改善嵌入信息的不可见性[7]。
利用图像块之间数据比较的方式进行的认证, 可能会使部分受损图像块完整性无法认证。例如, 如图像块B1被篡改, 则B1的编码与B1+p提取的信息不同, 但判断B1+p是否被篡改, 要用B1+2p, 如果此时B1+p的编码不等于B1+2p的LSB, B1+2p的编码不等于B1+3p的LSB, 此时, 将无法判断B1+p是否被篡改。本文利用图像块自身LSB存储自身散列的认证信息, 克服了这一问题。
1图像的自嵌入
1.1图像数据的压缩
图像自嵌入, 面临的重要问题是原始图像的数据量较大, 因此, 需要对原始图像数据做一定的压缩。使用降采样的方法, 可有效减少原始图像的数据量。
首先, 对原始图像进行16×16分块, 每块的x, y方向的尺寸减小到原来的一半, 得到8×8的子块, 每个子块三个颜色分量矩阵分别进行DCT变换得到三个系数矩阵, 每个系数矩阵取前21个低频系数106比特, 共产生106×3=318比特信息, 系数位数分配如表1所示。以这些信息作为该块的低精度表示, 称子块编码。
1.2载体块的选择
根据人眼视觉特性, 应选择灰度较大或较小且纹理复杂的图像块嵌入信息。可以利用YIQ颜色模型计算图像块各点的灰度。对m×n的原始图像8×8分块 (共M×N块) , 按式 (1) 、式 (2) 计算每个块的灰度值差异Dk。
其中w (i, j) 表示图像块各点的灰度值,
比较Dk的大小, 选择 (M×N) /2个Dk值较大的块, 为纹理复杂的图像块, 以图1所示的lena图像为例, 图2为选择一半Dk值较大的图像块结果。在这些块中, 选择 (M×N) /4个灰度较大或较小的块, 作为载体块, 如图3所示, 用来嵌入子块编码等信息。所有块均在自身LSB嵌入标志, 以识别自身是否为载体块。
1.3嵌入位置的选取及位置信息的生成
将子块编码嵌入载体块时, 应使子块编码对应的图像块与载体块距离较远, 以减小两图像块被同时改变的可能。
以图像左上角为原点, 为图3所示的载体块设坐标 (x1, y1) , (0≤x1≤M-1, 0≤y1≤N-1) , 为原始图像16×16分块设坐标 (x, y) , (0≤x≤ (M/2) -1, 0≤y≤ (N/2) -1) , 令x2=2x, y2=2y, 映射图像块坐标 (x, y) 为坐标 (x2, y2) (0≤x2≤M-2, 0≤y2≤N-2) 。随机选择n个载体块和n个图像块为一组 (3<n≤ (M×N) /4) , 在组内建立图像块与载体块间的一一对应, 使每个对应关系涉及的图像块与载体块之间的距离d=sqrt ( (x1-x2) 2+ (y1-y2) 2) 不小于给定的阈值, 这里取d= (1/4) sqrt (M2+N2) , sqrt为求根运算。例如:对M=N=24的标准lena图像, d=8.4853, 设某组中载体块坐标 (x1, y1) 分别为: (1, 2) 、 (2, 9) 、 (10, 5) 、 (12, 17) 、 (18, 21) 、 (20, 1) , 图像块坐标 (x2, y2) 分别为: (2, 4) 、 (6, 2) 、 (8, 12) 、 (8, 22) 、 (14, 6) 、 (20, 18) , 则满足条件的一一对应共有17种, 表2为其中一种对应, 这里利用对组内两个块坐标的笛卡儿乘积来寻找满足条件的对应。
根据映射关系x2=2x, y2=2y, 由坐标 (x2, y2) 可得到原始图像块坐标 (x, y) 。可以适当增加阈值d, 以减少满足条件的对应。
根据对应, 要将坐标为 (x, y) 的图像块子块编码嵌入到坐标为 (x1, y1) 的载体块中, 为了图像自恢复, 需同时将图像块坐标 (x, y) 嵌入坐标为 (x1, y1) 的载体块中, 利用16比特分别表示x、y, 形成32比特位置信息s=x+y, +为连接操作。为了安全, 用密钥key对s进行加密, 得到待嵌入的位置信息Ekey (s) 。
1.4数据的嵌入
数据的嵌入如表3所示。利用载体块红、绿矩阵的第0位和三矩阵的第1位共318比特嵌入子块编码, 多余的2比特 (表3位置①) 作为载体块标志, 蓝色矩阵第0位前32比特 (表3位置②) 存储位置信息, 后32比特 (表3位置③) 保存图像块自身认证信息。
对已嵌入子块编码、位置信息和载体块标志的载体块和只嵌入非载体块标志的普通图像块, 将蓝色矩阵第0位后32比特清0, 选择单向哈希函数MD5对图像块作哈希运算[8], 得到数据流, 取其中的32比特, 作为该图像块认证信息。利用自身存储认证信息, 使认证过程不涉及其他块, 克服了图像块间数据比较方式在认证方面的不足。
由上可见, 原始图像所有图像块蓝色矩阵第0位均保存有认证信息, 而只有载体块的三个颜色矩阵才保存有子块编码信息和位置信息, 由于人眼对蓝色的不敏感, 大大提高了自嵌入信息的不可见性。
图像的自嵌入过程如图4所示。
2图像的认证及自恢复
对已嵌入信息的隐秘图像, 先提取认证信息R1, 再将隐秘图像认证信息位清0, 选择单向哈希函数MD5对图像块作哈希运算, 得到数据流, 取同样位置的32比特, 得到认证信息R2, 比较R1、R2, 将比较结果不同的图像块标志为损坏块。
在隐秘图像的完整块内提取载体块标志, 对完整的载体块提取位置信息和子块编码, 利用密钥key将位置信息解密, 将子块编码形成DCT系数矩阵作IDCT变换, 得到受损图像块的低精度表示, 利用插值将恢复出的图像块x, y方向尺寸增加一倍, 并替换隐秘图像的损坏块, 得到自恢复后的图像。图像的认证及自恢复过程如图5所示。
3测试及结论
为验证本文算法, 利用多个图像及多种篡改方式对算法进行测试, 结果如下:图1、图9、图13是标准的lena、opera和fishingboat原始图像, 图6、图10、图14是自嵌入后的隐秘图像, 图7是图6局部缺损后的图像, 图11对图10进行了伪造篡改操作, 图15对图14进行了局部淡化操作, 图8、图12、图16分别是图7、图11、图15认证及自恢复的结果图像。
从实验结果可以看出, 由于隐秘图像相对原始图像像素的改变较少, 只有原始图像块的1/4, 且为纹理复杂灰度较大或较小的图像块, 自嵌入信息后的隐秘图像不可见性很好。图像子块编码由21个DCT系数形成, 可恢复更多的图像细节, 自恢复后的图像有很好的视觉效果, 可以完全从内容上认证图像。因此, 使用本文给出的算法, 在受损图像块对应的载体块完整的情况下, 可以很好地对受损图像进行认证及自恢复。
摘要:分析图像自嵌入过程及人眼视觉特性, 提出了一种图像自嵌入及自恢复算法。算法压缩原始图像数据形成子块编码, 选择合适的载体块, 在子块编码与载体块之间建立一一对应, 利用散列函数形成图像块认证信息, 将子块编码、位置信息、认证信息等嵌入图像自身低字节中。实验结果表明, 隐秘信息不可见性很好, 可有效地对受损图像的完整性进行认证并恢复受损部分的内容。恢复出的图像视觉效果良好, 可以很好地认证图像内容。
关键词:自嵌入,认证,自恢复,DCT
参考文献
[1]Wang XiaoFan, Dai YueWei, Mao YaoBin.Information Hiding Tech-niques for Method and Application[M].Beijing:China MachinePress, 2001.
[2]Fridrich J, Goijan M.Protection of digital images using self embedding[C]//Proceeding of NJIT Symposium on Content Security and DataHiding in Digital Media, New Jersay Institute of TechnologyMay, 1999.
[3]张鸿宾, 杨成.图像的自嵌入及窜改的检测和恢复算法[J].电子学报, 2004, 32 (2) :196199.
[4]钱振兴, 程义民, 王以孝, 等.一种图像自嵌入方法[J].电子学报, 2006, 34 (7) :13471350.
[5]和红杰, 张家树.对水印信息篡改鲁棒的自嵌入水印算法[J].软件学报, 2009, 20 (2) :437450.
[6]彭玉忠, 陈勤, 周律.彩色图像脆弱水印自嵌入认证算法[J].计算机工程与设计, 2004, 25 (12) :22082209, 2212.
[7]黄豫蕾, 陈树中, 王新伟, 等.基于HVS和图像统计特征的数字水印技术[J].计算机应用与软件, 2004, 21 (11) :102104.
[8]MUCe lik, G Sha rm a.Hierarchical watermarking for secure imageauthentication with localization[J].IEEE Transactions on Image Pro-cessing, 2002, 11 (6) :585595.
图像隐秘嵌入信息系统设计 篇2
在现代科技的高速发展下, 网络已经成为人类必不可少的工具, 网络上流动着大量的多媒体信息, 然而在信息共享的同时, 数据安全也严重受到了威胁, 在网络数据传输过程中特别容易被他人截获盗取。在这种现状下, 数据加密成为解决该问题的方法。它使得截获这些信息的人无法阅读, 同时也能验证接收到的信息是否被他人篡改或替换过。但数据加密的致命缺点也显而易见, 就是重要数据被提示, 从而引起盗取者或攻击者的好奇和注意, 利用一定的破解技术有被破解而得到这些重要数据。被加密的数据一旦被破解其内容就完全透明, 而且攻击者还可以在破译失败的情况下破坏数据, 使得即使是合法接收者也无法阅读信息内容[1]。
信息隐藏则完全不同于信息加密, 它是将重要的机密信息隐藏在其它各种类型的信息中, 从而形成隐秘信道, 除通信双方以外的任何第三方并不知道秘密通信这个事实的存在[2]。它与信息加密相比, 由“看不懂”变成了“看不见”。
本系统中的信息隐藏就是基于这种隐藏技术, 能够将任何数据以特殊的
加密形式隐藏到载体图片里, 而且隐藏前后, 载体图片肉眼看不出任何变化, 真正实现了数据由“看不懂”变成“看不见”。
二、本系统的基本原理
本系统利用人眼对低位数据的不敏感性, 将机密数据存放到图像像素点的随机低位中。可应用于对数据安全要求高的中大小型企业, 国家信息安全, 和对数据安全要求高的个人计算机。内置三种模式, 可全方位隐藏重要数据, 为数据安全提供根本的保障。
(一) 系统特点与创新性
1.信息隐藏算法采用基于LSB最低位算法基础上改进的随机有效位算法。
2.加入数据随机加密隐藏, 该加密算法是在国际通用标准RC4、DES的基础上改进的随机加密算法, 可在对数据进行隐藏前先使用该加密算法进行加密。
3.内置的数据加密算法由单结果加密改进为随机数据加密, 相同的数据每次加密的结果都不一样, 但解密结果始终为原始数据, 原数据对应了一万种左右的随机密文, 但一个密文只对应一个原数据。
4.数据隐藏时所选择的像素点具有一定的随机间隔性。
5.写入数据时采用了16循环乱序写入。
6.能直接使用本软件系统进行数据发送、实时聊天。
7.采用汇编字节集读取算法, 比普通算法快近3倍, 快速比对数据的异同, 并高亮显示。
(二) 系统设计的目标
1.实现数据由“看不懂”变成“看不见”。
2.实现非法接收人即使“看见”也无法破解, 也就是即使知道图片里隐藏数据, 没有本程序也无法正确提取出隐藏数据。
3.能及时查看隐藏前后图片的变化。
4.最快速比对数据异同。
5.内置客户端服务器网络传输模式, 实现数据的快速发送与接收。
(三) 实用性
本系统将随机加密算法和随机位的信息隐藏算法综合应用, 将信息由可“看不懂”变成“看不见”, 即使看懂也无法破解出真是信息, 可以应用于对数据安全要求高的中大小型企业、国家信息安全、对数据安全要求较高的个人计算机等行业, 尤其对于公安网中的信息传递有极大的应用价值。内置三种模式, 可全方位隐藏重要数据, 为数据安全提供根本的保障。
三、软件系统的技术框架
本系统在载入载体图片后, 会自动将载入的图片转换为24位位图。
(一) 信息隐藏的基本原理
24位位图图像像素点颜色结构, 如下图:
在24位位图中高8位构成蓝色通道, 中8位构成绿色通道, 低8位构成红色通道。经过程序测试, 在删除各通道的低4位数据并加入随机噪音后, 图片用肉眼无法观察到任何变化。现在展示一张图片在删除各通道的低位数据, 并加入随机噪音后图片的变化。
从图中的变化可以看出只有在替换高位数据后才会出现明显失真的现象, 在替换低三位数据是肉眼无法观察到变化, 替换低4位后虽有轻微的失真, 但在没有原图的状态下也无法看出破绽。于是在这种理论基础上我们就可以在这各通道的低4位 (共12位) 写入想要隐藏的数据。
(二) 本系统中最低位隐藏模式的基本原理
在本程序的隐藏方式中引入了随机位的概念, 即生成随机数, 根据随机数来选择写入隐藏数据的位置。在该模式下, 是4个像素点隐藏一个字节, 即一个像素点隐藏2位的数据。从前面的理论中可知, 每个像素点共有12位给我们隐藏数据, 现在我们只需要隐藏2位的数据, 则我们共有=66种隐藏的方法, 本程序则生成四个1到66的随机数, 然后将这四个随机数采用作者编写的标准转换为四个特殊字符或汉字, 然后采用高容量的模式将这四个特殊字符隐藏到特定的像素点中, 随后根据生成的随机数, 选择隐藏数据的位置并逐个像素点的写入欲隐藏的数据。被四整数余一的像素点根据第一个随机数写入, 被四整除余二的像素点根据第二个随机数写入, 四整除余三的像素点根据第三个随机数写入, 被四整除的像素点则根据第四个随机数写入。
该转换表并非加密转换, 而是像2战时所采用的密文一样, 随机生成后进行对应, 转换前后的数据无任何规律, 只有通信双方知道该标准。
(考虑本程序的安全性, 所以只公布少部分的转换表)
1.本系统中随机间隔隐藏的基本原理
对于比较小的数据, 不能填充到所有像素点都隐藏数据, 这时有可能会被统计低位数据分布、Cover-Stego等方法而判断出该图片隐藏了数据。这时本程序采用了随机间隔写入, 并在未隐藏像素点中适当写入随机噪音, 不仅解决该问题, 同时进一步加大数据提取的难度。
在本系统中会先计算载体图像的隐藏信息容量和隐藏信息大小, 将容量与隐藏信息大小整除取整得到一个间隔系数, 然后系统生成一个从1到该间隔系数的随机数, 同样系统按照上表的标准转换为某个字符, 然后采用高容量模式隐藏方式将该字符和隐藏信息的数据长度隐藏到特定的像素点中, 随后系统按照该随机数, 选择被隐藏数据的像素点进行写入。如:信息容量是156KB, 欲隐藏的数据大小为23KB, 整除得到6, 则生成1到6的随机数, 假设生成的随机数为3, 则选择进行隐藏的像素点在纵向上间隔为3。
2.本系统写入数据时的非顺序性
本系统在写入隐藏数据时, 并非按顺序写入, 而是以16为周期循环乱序写入, 将像素点位置对16求余, 然后按照下面的方案就行乱序写入。
3.本系统数据随机加密的基本原理
经过前面几步基本能保证即使知道图像里隐藏信息, 没有本程序也无法正确提取图像中隐藏的信息, 但一旦盗取者盗走该软件, 则可以轻易将图像的隐藏信息提取出来。为彻底保证隐藏信息的安全性, 程序中加入了随机加密隐藏的功能, 该加密算法基于国际通用标准RC4和DES, 能够保证数据的安全性。下面是随机加密算法的原理图:
四、系统的基本流程和主要功能
五、总结
在现在这个网络应用迅速普及的时代, 信息安全尤为重要, 目前信息传递的过程如何保障数据安全, 主要是采用数据机密和信息隐藏两种技术, 但仍有信息被窃取的极大可能, 本软件通过自主研发, 在加密算法上加入数据随机加密, 提高数据机密程度, 大大降低或完全阻止信息解密。在对数据加密后利用信息隐藏技术, 把“看不懂”的数据变为“看不见”, 采用基于LSB最低位算法基础上改进的随机有效位算法。使信息提取成功的概率大大降低, 有效改进了现有的地位隐藏算法, 从而为信息安全传递提供保障, 具有极大的社会应用价值。
参考文献
[1]陶奉芝.无损信息隐藏技术[D].青岛大学.2008 (05) .
[2]张绍武, 袁力.Internet信息安全技术的缺陷及创新[J].现代情报.2004 (11) .
[3]唐明伟.图像信息隐藏与隐藏分析算法研究[D].电子科技大学.2012 (03) .
[4]柏森.基于信息隐藏的隐蔽通信技术研究[D].重庆大学.2002 (04) .
[5]周琳娜;杨义先;郭云彪;胡岚.基于二值图像的信息隐藏研究综述[J].中山大学学报 (自然科学版) .2004 (12) .
[6]刘尚翼.加密域可逆信息隐藏研究[D].暨南大学.2014 (04) .
[7]曾宪庭.基于图像的无损信息隐藏技术研究[D].浙江大学.2010 (03) .
[8]胡自权.博弈论在信息隐藏中的生存能力研究[D].电子科技大学.2013 (03) .
嵌入式图像处理系统设计 篇3
1 嵌入式图像处理系统硬件开发设计
1.1 电源设计
核心板电源包括+1.8V与+3.3V, 其中+1.8V负责处理器内核供电。上述两个电源由底板两个LT1084稳压芯片对+5输入变化得到, 并通过插座实现与核心板的连接。在核心板上, 存在两个指示灯, 表示两个电源是否正常运行。
1.2 晶体振荡电路设计
核心板采用外接无源晶振、内部锁相环电路生成系统时钟的方法。
首先, 外接无源晶振频率为18.432MHz, 可通过特定的软件设置系统时钟频率, 最高时频率可达到180MHz。系统连接电源后, 工作频率一般不会达到180MHz, 且在AT91RM9200处理器中, 存在以实时时钟模块, 因此还应外接一个频率为32.768KHZ无源晶振。若该系统的服务对象不需要实时信息, 可选择其他频率, 并设置符合服务要求的定时器, 但其频率最高不能超过33K。
1.3 复位电路设计
在本系统中, 复位电路的主要功能是为系统的上电复位、电源电压监控、系统运行时的用户按键复位等功能提供服务。复位电路由RC电路构成, 本文在充分考虑成本的前提下, 采用IMP811。
IMP811是通过微控制器、数字系统、低功耗微处理器监视电源工作, 具备去抖动的手动复位输入功能。工作为温度范围为-40℃~105℃。当电源电压降至预制的复位门限以下时, 复位电路就会发送复位信号, 并在电源升高到此复位门限之后, 最少持续保持这一信号140ms。本次研究中复位电路的基本构造如图1所示。
1.4 FLASH存储器接口设计
FLASH存储器是可在系统进行电擦写, 掉电之后信息依然保存的信息存储器, 与传统的信息存储器相比, FLASH存储器的功耗低、容量大、擦写速度快等优点, 并支持在分扇区 (或整片) 进行系统编程, 并依靠内部嵌入算法对芯片进行操作。目前, 常见的FLASH储存器主要为8或16位的数据宽度, 编程电压为3.3V。本文所研究的嵌入式图像处理系统中的FLASH储存器主要为两种类型, 一种为ATMEL串行DATA FLASH, 存储容量8M字节;另一种为ATMEL16位并行F;ASH, 存储容量2M字节。
2 M单片储存器工作电压为2.65V~3.6V, 标准电压为 (3.0±0.2) V, 采用48脚TSOP封装, 数据宽度为16位, 支持8位字节模式、16位字模式的工作方式。一般情况下, 3V电压可满足系统编程与擦除, 操作人员可通过内部命令寄存器输入标准的命令序列, 并进行FLASH编程、整片擦拭等操作。本文所构建的FLASH存储系统, 主要用于存储程序代码, 系统在获取指令后开始执行。因此, 在系统设计中要注意将存有程序代码的FLASH模块快速配置到ROM模块中。
2 嵌入式图像处理系统软件设计
2.1 图像编码模块设计
2.1.1 离散余弦变换
在JPEG图像压缩算法中, 离散余弦转换是一种标准的有损压缩算法。DCT变化通过傅立叶变换性质, 采用图像边界褶翻, 以函数形式表达图像, 再对图像进行二维傅立叶变换。
在实际操作中可发现, 由于图像各部位细节的丰富程度存在一定差异, 因此在图像的整体处理上, 需要将图像划分为若干个模块, 以获得更好的图像处理效果。本文将图像编码模块划分为8*8、16*16两种模式, 再对图像进行二维DCT转换。操作者通过量化的DCT系数, 对特定范围内的余弦进行解码, 并对每个图像模块进行反转换。操作结束之后, 将所有数据连接在一起并构建成单一图像。对于一般图像, DCT系数无限接近0, 因此去掉这些系数之后不会对重建图像的质量产生明显影响。
2.1.2 DCT图像压缩编码的实现
DCT图像压缩编码的实现步骤为: (1) 从硬件设备采集图像, 并将数据输入到主控制芯片, 分块处理图像数据; (2) 将图像转换为8*8 (或16*16) 像素模块, 对每一像素模块进行DCT转换; (3) 获取每个像素模块的DC数据, 并对其变化系数进行量化处理; (4) 使用游程编码获取压缩后的数据。其基本操作流程见图2。
2.2 畸变校正模块的设计
目前, 嵌入式图像处理系统所应用领域的图像采集设备主要为网络摄像头, 即使采用了理想的摄像头, 所采集到的成像结果仍为直线, 再加之镜头成像存在一定的畸变, 最终导致成像结果发生变化, 畸变校正模块的主要作用就是校正畸变的图像。
2.2.1 基于最小二乘法的畸变校正算法
畸变校正算法主要分为两个步骤, 首先是标定摄像头景象畸变模型, 计算畸变系数;再重新确定畸变校正之后的各标点灰度值。
一般情况下, 标靶原始图像的具体参数为:线条间距为1cm, 镜头与标靶之间的距离为45cm, 镜头分辨率320*240像素。从标准情况下的原始图像中发现, 系统所获取的畸变系数的图像特征不明显。因此, 为获取有用的图像信息, 需要预处理原始图像 (见图3) , 包括图像灰度值控制、中值滤波消除噪声干扰等。
结合径向畸变数学模型, 可发现实际像素坐标与校正后的像素坐标之间存在非线性关系。选择N个样点, 其计算方程组为:
再通过最小二乘法, 即可得到径向畸变系数K1、K2的具体数值。
2.2.2 图像校正算法的实现
根据上述方程组, 计算出需要求解的方程组坐标, 再结合摄像机出厂时所确定的镜头参数, 对每一个图像采集设备进行统一标定, 计算出畸变参数与对应的校正参数, 并将校正参数以表格的形式罗列, 方便在后期制作中快速校正图像。
3 结语
本文分析了嵌入式图像处理系统的设计方法, 从嵌入式系统的硬件开发、软件开发两方面对其设计内容进行讨论。总体而言, 随着图像处理技术的不断成熟, 再加之图像数据自身的信息特点, 使得图像的处理算法对硬件、软件的要求不断提高。因此, 在未来的嵌入式图像处理系统的研发过程中, 必须要考虑多级任务处理的功能, 并在动态图像、视频图像的处理中进行研究, 以进一步提升嵌入式系统的工作能力。
参考文献
[1]郑鑫.面向异步视频的嵌入式图像处理系统设计[J].现代电子技术, 2012, 35 (22) :14-17.
[2]张婷曼, 王庆.基于云计算平台嵌入式传感器图像处理系统设计[J].计算机测量与控制:算法、设计与应用, 2014, 22 (7) :2216-2218.
[3]程琼, 广长林.基于ARM图像的采集与3G无线传输研究与设计[J].湖北工业大学学报, 2013, 28 (1) :43-45.
[4]孙德忠.基于嵌入式系统的图像处理装置的设计尖现[D].石家庄:河北科技大学, 2011 (12) :14-28.
基于嵌入式系统数字图像处理技术 篇4
1 嵌入式图像处理系统特点
1) 图像处理系统, 具有系统专用的图形用户界面, 同时具备运行速度快、 简单易用与功能强大的特点。 2) 图像基础数据库的建立, 可以为智能化模式识别技术, 诸如图像匹配等提供支持。 3) 改变了原有的对待处理图像的处理策略与算法, 可以依据具体的待处理图像的不同特点, 提供有效的图像处理算法, 进而提高图像处理的效率与速度。 4) 对于外部图像的总线结构与输入输出设备等都是采取专用的设备, 进而有效的提高了外部图像输入输出设备、 中央计算单元的数据交换速度。5) 改变了原有的计算机体系结构, 应用了嵌入式的专用平台, 同时应用图像高速处理器, 使图像处理的速度有效的提高, 同时也提高了图像处理任务的实时性。
2 图像处理系统总体设计
2.1 嵌入式图像处理系统
嵌入式图像处理系统, 具体由嵌入式操作系统、 图像处理算法的应用软件与硬件平台构成。 系统的组成结构图具体如图1 所示。 硬件平台可以为图像处理提供显示、 存储器与计算支持, 主要采用的是Magic ARM2410 嵌入式开发平台, 同时包括图像存储模块; 显示模块; 通信模块; 嵌入式处理器S3C2410、 SDRAM等。
2.2 图像处理过程
嵌入式操作系统, 可以为底层硬件提供有效的技术支持与管理, 诸如可以进行图像处理任务管理; 中断管理; 内存管理; 任务管理; 驱动支持等。 首先, 在系统启动后, 经由引导程序启动操作系统, 进而完成硬件的初始化。 其次, 经由操作系统的任务管理模块, 进行内存的分配, 同时将图像信息存储在存储器的视频缓冲区中。 第三, 经由软件算法, 将显示缓冲区的图像信息, 写入到LCD缓冲区, 进而实现图像的实时显示。 第四, 通过图像处理的算法, 进行图像的编码与处理, 同时进行存储。 应用软件可以实现图像处理算法, 其主要是针对目标要求编写的专用程序。
2.3 系统的功能设计
嵌入式图像处理可以有效的解决在嵌入式环境下实现图像的处理。具体的主要应用模块化设计的方式, 将需要系统完成的任务进行功能模块化的设计。 在每一个模块中, 都包含一类图像处理的操作方法, 而且在进行执行时都会调用对应的算法。 系统功能模块具体如图2 所示, 主要分为形态运算; 几何变换; 图像分析; 图像增强。 其中图像增强的模块具体又包括: 灰度变换调整; 直方图修正法; 直方图等, 具体如图3所示。 各大系统模块的下面都会细分图像的处理操作, 其余的三个模块的设计形式与图像增强模块的设计具有相似性。
3 图像处理系统发展趋势
1) 在图像处理系统的内部, 主要进行集成软件的开发, 对于用户而讲, 可以依据自己的需求开发相应的图像处理算法, 可以显著的提高系统的效率。 2) 图像处理系统与网络的结合性逐渐提高, 进而实现了图像的远程传输与采集。 3) 图形处理系统的功能不再完全借助PC与多种辅助设备, 而是会集成在一个方便使用的电子设备上。 4) 伴随硬件设备的进步, 图像处理系统的性能逐年提高, 因而价格也会逐年下降。
4 结语
在嵌入式系统的图像处理技术的基础上, 使得图像处理领域中出现了人机用户界面、 多种通信模式与网络接口的便捷性。 图像处理技术的应用范围越来越广泛, 因此, 在未来的发展道路上, 其必然会朝着网络化、 便携性、 多任务与多功能的方向发展。 伴随着嵌入式操作系统的强大功能, 图像处理技术的发展方向必定会更加宽广。
摘要:嵌入式图像处理系统, 具体由嵌入式操作系统、图像处理算法的应用软件与硬件平台构成。嵌入式系统与网络技术、通信技术有机结合, 有效的提高了通信的智能性与灵活性。在嵌入式系统的图像处理技术的基础上, 使得图像处理领域中出现了人机用户界面、多种通信模式与网络接口的便捷性。伴随着嵌入式操作系统的强大功能, 图像处理技术的发展方向必定会更加宽广。本文对嵌入式系统数字图像处理技术进行了一定的探讨, 期望可以为图像处理技术的发展提供一定的借鉴。
关键词:嵌入式系统,数字图像处理,技术探讨
参考文献
[1]崔磊, 董守平, 马红莲.数字图像处理技术的发展现状与展望[M].北京:中国石油大学出版社, 2003.
[2]刘禾.数字图像处理及应用[M].北京:中国电力出版社, 2005.
[3]杨永敏.嵌入式图像处理系统的研制[D].哈尔滨工业大学硕士学位论文, 2006.
[4]杨柯.嵌入式图像处理技术研究及其应用[D].西北工业大学硕士学位论文, 2003.
[5]宋延昭.嵌入式操作系统介绍及选型原则[J].工业控制计算机, 2005.
[6]严丽平, 甘岚.基于嵌入式平台的图像处理系统的研制[J].微计算机信息, 2008.
基于嵌入式系统的图像采集与压缩 篇5
1 构建开发平台
硬件平台采用Samsung公司的处理器S3C2410[1].通过在USB接口上外接一个摄像头,将采集到的视频图像数据放入输入缓冲区中,通过应用程序对图像数据进行处理;软件系统采用Linux操作系统,它是源码开放的嵌入式操作系统,可移植性强,支持多任务,具有完备的TCP/IP协议栈并支持多种文件系统.
根据系统应用需求定制Linux嵌入式操作系统,使其支持USB总线和COMS图像传感器,确保该OV511接口芯片在Linux下正常驱动,并得到主机系统USB控制器以及Linux内核中Video4Linux的支持;在宿主机上安装适合于目标处理器的交叉编译器、调试器.
2 图像采集
图像采集分2步实现:一是COMS图像传感器在内核中的底层驱动;二是编写上层应用程序以获取视频流数据.
2.1 图像传感器驱动
(1)在arm linux的kernel目录下make menuconfig;
(2)选择Multimedia device-〉下的Video for linux.加载video4linux模块,为视频采集设备提供编程接口;
(3)在usb support-〉目录下选择support for usb和usb camera ov511 support.这使得在内核中加入了对采用OV511接口芯片的COMS图像传感器的驱动支持.
(4)保存配置退出.
(5)make dep;make zImage就生成了带有ov511驱动的内核.
经编译后的Linux支持有USB接口的OV511图像传感器,系统启动后能够自动识别USB设备(在设备目录下为/dev/video0).可直接利用系统调用获取设备信息和数据,以方便应用程序的开发;COMS图像传感器驱动程序中提供基本的I/O操作接口函数open、read、write、close,以实现中断处理、内存映射以及对I/O通道的接口函数ioctl进行控制等功能.
2.2 Video4Linux编程
Video4Linux是Linux中针对视频设备应用程序编程所提供的一系列接口函数,通过使用video4linux的API函数从视频设备中把图像数据读取出来.具体过程如下:
(1)打开视频
int v4lopen(char *dev, v4ldevice *vd)
{
if (!dev)
dev = ”/dev/video0”;
if ((vd -〉fd = open(dev, ORDWR)) <0)
{ perror("v4lopen:");
return -1;
}
if (v4lgetcapability(vd))
return -1;
if (v4lgetpicture(vd))
return -1;
return 0;
}
(2)读videocapability中信息
int v4lgetcapability(v4ldevice *vd)
{
if (ioctl(vd -〉fd, VIDIOCGCAP, &(vd-〉capability)) <0)
{ perror("v4lgetcapability:");
return -1;
}
return 0;
}
该函数成功返回后将这些信息从内核空间拷贝到用户程序空间的vd-〉capability各成员分量中,使用printf函数就可得到各成员分量信息.例如printf(“maxheight=%d”,vd-〉capability.maxheight)获得最大垂直分辨率的大小.
(3)读videopicture中信息
int v4lgetpicture(v4ldevice *vd)
{
if (ioctl(vd-〉fd,VIDIOCGPICT,&(vd-〉picture))<0) {
perror("v4lgetpicture:");
return -1;
}
return 0;
}
在用户空间可以改变videopicture中分量的值,先给分量赋新值,再调用VIDIOCSPICTioctl函数,例如
vd-〉picture.palette = pal; //调色板
vd-〉picture.depth = dep; //像素深度
if (ioctl(vd-〉fd,VIDIOCSPICT,&(vd-〉picture))<0)
{
perror("v4lsetpalette");
return (NULL);
}
2.3 图像数据采集
视频图像截取方法有2种[2]:(1)read( )直接读取,(2)mmap( )内存映射.设计中采用了mmap( )内存映射方式获取图像,mmap( )系统调用使得进程之间通过映射同一个普通文件实现共享内存.普通文件被映射到进程地址空间后,进程可以向访问普通内存一样对文件进行访问,不必再调用read( ),write( )等操作.
使用函数ioctl(vd-〉fd,VIDIOCGMBUF,&(vd-〉mbuf))获得图像传感器存储缓冲区的帧信息,用vd-〉map=mmap(0,mbuf.size, PROTREAD|PROTWRITE,MAPSHARED,vd-〉fd,0)把图像传感器对应的设备文件映射到内存区,该映射内容区可读可写且不同进程间可共享.该函数成功时返回图像数据的指针,失败时返回值为-1.
实现单帧采集:设置vd-〉mbuf.frame=0,即采集其中的第一帧,使用ioctl(vd-〉fd,VIDIOCMCAPTURE,&vd-〉mbuf)函数,若调用成功则以非阻塞方式激活设备真正开始一帧图像的截取.通过ioctl(vd-〉fd,VIDIOCSYNC,&frame)函数判断该帧图像是否截取完毕,如成功返回表示截取完毕,之后可把图像数据保存成文件的形式.
3 图像压缩
采集到的原始图像数据量大,不利于在网络上传输,这就要求图像采集平台对原始数据进行压缩处理,这里采用JPEG压缩方式.JPEG静止图像压缩标准是一种广泛认可的标准,一般操作系统和应用都支持.JPEG标准是在变换编码的基础上,综合应用了DCT和哈夫曼编码两种手段达到了很好的图像压缩效果.
3.1 压缩算法
在JPEG算法中通常是先将图像分成一个个8×8的图像子块,对每一个图像子块进行离散余弦变换,所使用的二维离散余弦变换公式如下[3]
undefined
其逆变换如下
undefined
式中,当u=ν=0时,undefined;当u,ν为其他值时,k(u)=k(ν)=1.f(x,y)经DCT变换后,F(0,0)是直流系数,其他为交流系数.
在离散余弦变换中,设法使变换后的图像子块的能量下降速度加快,则可以减少块效应并能使细节部分清晰.正是基于这一点,通过收敛性良好的Chebychev多项式来拟合离散余弦变换,使得变换后的图像子块的能量下降速度加快,从而提高图像数据的压缩比,同时还能够改善图像的块效应[4].
3.2 安装jpeg库
ARMlinux中没有jpeg函数库,经下载jpegsrc.v6b.tar. gz[5]后,在/usr/local/arm/3.2/解压安装:
# tar -zxvf jpegsrc.v6b.tar.gz
# cd jpeg-6b
# export CC=arm-linux-gcc
# ./configure --prefix=/usr/local/arm/3.2/arm-linux/ --enable-shared --enable-static
# make
安装前需要在arm-linux下建个目录
# mkdir -p /usr/local/arm/3.2/arm-linux/man/man1
# make install
这样,ARMLinux就支持jpeg函数库,此处注意用编译器编译连接时带有-ljpeg选项才能生效.
4 实验结果
图1是同一背景2张大小均为320×240的照片.其中图1a是未压缩图像,数据量为255 K.图1b是在JPEG压缩质量为80时存储的图片,其数据量为9.52 K字节.结果表明图像的数据量大大减少,压缩效果良好.
5 结束语
基于嵌入式Linux系统介绍了图像的采集与压缩.对于32位的嵌入式系统,在应用于图像采集,特别是远程的图像采集时,因处理器足以完成复杂的运算,可以使用JPEG压缩算法,以获取更高的图像压缩比,从而提高图像数据在网络上的传输速度.
参考文献
[1] Samsung Electronics Co.Ltd.S3C2410A user’s manual.revision1.0[EB/OL].http://www.samsung.com.Yongin-City,Gyeonggi-Do,Korea[2004-03].
[2] 李侃,廖启征.基于S3C2410平台与嵌入式Linux的图像采集应用[J].微计算机信息,2006, 22(2-3):125-127.
[3] 杨济安.图像通信与图像处理[M].重庆:重庆大学出版社,2003:73.
[4] 苏日建,宋胜利.嵌入式图像采集系统的JPEG算法改进[J].重庆工学院学报,2006,20(11):75-76.
[5] ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
摘要:首先简要介绍了嵌入式监控系统开发平台,接着阐述了在该平台上如何实现图像的采集与压缩,重点讲述了Video4 Linux编程实现和JPEG压缩算法,最后讲解了如何在Linux系统下实现JPEG压缩,实验结果令人满意.
关键词:嵌入式Linux,图像采集,V4L,JPEG压缩
参考文献
[1]Samsung Electronics Co.Ltd.S3C2410A user’s manual.revision1.0[EB/OL].http://www.samsung.com.Yon-gin-City,Gyeonggi-Do,Korea[2004-03].
[2]李侃,廖启征.基于S3C2410平台与嵌入式Linux的图像采集应用[J].微计算机信息,2006,22(2-3):125-127.
[3]杨济安.图像通信与图像处理[M].重庆:重庆大学出版社,2003:73.
[4]苏日建,宋胜利.嵌入式图像采集系统的JPEG算法改进[J].重庆工学院学报,2006,20(11):75-76.
图像自嵌入 篇6
传统的视频监控系统多采用MPEG, H.26X等压缩算法, 对信号进行高速采样, 得到大量采样值, 加大了计算复杂度, 造成了不必要的内存浪费, 给视频图像的存储和传输带来了许多挑战[2]。
近年来, Donoho[3]和Candè[4]提出了压缩感知理论, 理论指出通过信号的稀疏特性, 在远小于奈奎斯特采样率的条件下采集数据, 通过重建算法仍能精确地恢复出原始信号。采样时抛弃了信号中的冗余数据, 降低了计算复杂度和传输带宽, 为视频传输打下了良好的基础。
1 压缩感知介绍
设有一个长度为n的一维信号Χ, 记为X[n], 假设空间中的任意信号都能用正交基Ψ=[ψ1, ψ2, …ψM]的线性组合表示, 则
式中:θk=
设计一个平稳的且与变换基Ψ不相关的观测矩阵Ф, 对Θ进行观测并得到观测值:
在信号X为K项稀疏或可压缩的前提下, 求解式 (2) 的问题就转化为求解最小0范数的问题, 通过重构算法就可以恢复出原始信号。
2 图像压缩感知算法实现
由压缩感知原理可知, 被测信号应为一维的离散信号, 而图像压缩编码理论体系处理的都是二维的图像信号。传统处理方法是将图像一维化, 对图像进行稀疏表示, 乘以测量矩阵进行采样。Y.Zhang[5]等提出基于一维变换的压缩感知图像重构模型, 忽略了高频信息, 降低了重构质量。[6]中Huijie Guo等人对高频系数采样, 同时保留了低频信息。以上两种方法都是对整幅图像进行采样, 选取观测矩阵较大, 计算复杂。文献[7, 8, 9]提出了一种结构化随机矩阵, 这种矩阵所需的存储量小, 但构造矩阵的过程繁琐, 不易于实现。
考虑到图像编码的特性, 如果能对图像进行二维观测, 将有效的低观测矩阵的大小, 有利于信号重构。基于此, 本文提出了分块处理的压缩感知算法。
假设原始图像X数据大小为N=p×q, 测量向量的维数为n维, 改进方案将图像分成每块大小为B×B的子块, 且对每小块进行相同的操作。原始图像第i个小块经过变换后的向量记为xi, i=1, 2…..n, n=N/B2, 则对应的测量值yi可表示为
其中ΦB是一个nB×B2的正交独立同高斯分布矩阵[10], 对于整幅图像的采样操作Φ可以表示为块对角矩阵, n个对角元素皆为ΦB。
从这里可以看出, 在分块压缩感知采样中, 不需要存储n×N的矩阵Φ, 而只需保存一个nB×B2的矩阵块ΦB。显然, 当B较小时, 内存占用少且计算速度快, 这对于嵌入式系统来说意义重大。
3 实验与分析
3.1 方案验证
为了说明分块压缩感知的有效性, 进行了图像分块前后的对比试验。在嵌入式平台上选取图像Peppers作为测试对象, 设计了8×8分块下的观测过程, 使用正交匹配追踪算法进行图像重构。在不同的采样率下, 分块前后的峰值信噪比如表1所示。
从表1中可以看出, 在不同的采样率下, 重信噪比相对未分块时有明显的提高, 重构效果增强, 证明了分块压缩的可行性。
3.2 实验结果分析
本文采用OK6410开发平台来构建嵌入式监控系统, 实现视频的采集、编码及传输。将分块压缩感知应用于嵌入式平台监控, 对整幅图像进行分块, 对每一个图像块进行观测, 将观测值量化后打包传输, 在解码端反量化, 利用正交匹配追踪算法恢复出原始图像。图1分别是原始图像和采样率为0.7时的重构图像。
对比两幅图像可知, 本文的监控系统在监控效果和图像质量上与传统系统有一定差距, 但基本上能满足监控需求, 同时前者数据计算量小, 传输效果好, 在带宽较窄的无线通信中, 能更好的满足物联网通信的要求。
4 结语
通过压缩感知的基本理论, 利用嵌入式系统平台, 将图像采集、压缩有效地整合为一体。针对一维观测在计算时占用大量存储空间并耗时巨大的问题, 给出了图像分块压缩的改进方案并取得良好效果。采集较少的视频图像信息就能够有效的重构原始图像, 减少了传输带宽, 方便后续的视频传输。
摘要:在传统的压缩编码技术中, 采样均遵循奈奎斯特定律, 该定律规定采样频率要高于原信号频率的两倍。为了降低采样数据量和计算复杂度, 设计了基于压缩感知的嵌入式视频监控系统。应用分块压缩感知处理获取图像, 解决了传统压缩感知在重构时计算量大的问题。进行了图像分块前后的对比性实验, 给出了对比数据, 实验结果验证了这一算法的可行性。
关键词:压缩编码,嵌入式系统,压缩感知,分块压缩
参考文献
[1]王安红, 李志宏.面向物联网的视频编码算法和系统[M].北京:国防工业出版社, 2011.
[2]毕厚杰.第一代视频压缩编码标准——H.264/AVC[M].北京:人民邮电出版社, 2005.
[3]Donoho D.Compressed Sensing[J].IEEE Transactions on Information Theory, 2006, 52 (4) :1289-1306.
[4]Candes E, Romberg J, Tao T.Robust uncertainty principles:exact signal reconstruction from highly incomplete frequencyinformation[J].IEEE Transactions on Information Theory, 2006, 52 (2) :489-509.
[5]Y.Zhang, S.Mei, Q.Chen, Z.Chen, A novel image video coding method based on Compressed Sensing theory[C], Acoustics, Speech and Signal Processing, 2008.
[6]Huijie Guo, Baojun Zhao, Gang Zhou.Image Compression Based on Compressed Sensing Theory and Wavelet Packet Analysis, Cross Strait Quad-Regional Radio Science and Wireless Technology Conference (CSQRWC) , 2011.
[7]E.Candes and J.Romberg, Robust signal recovery from in-complete observations[C], in Proc.ICIP, 2006:1281-1284.
[8]T.T.Do, L.Gan, N.Nguyen, and T.D.Tran, Fast and efficient compressive sampling using structurally random matrices[J], IEEE Trans.Signal Processing, 2012 (60) :139-154.
[9]Lu Gan, Thong T.Do and Trac D.Tran, Fast compressive imaging using scrambled block hadamard ensemble[C], in Proceedings of European Signal Processing Conf, Switzerland, 2008.
图像自嵌入 篇7
关键词:达芬奇,嵌入式,图像算法,优化,移植,DSP
嵌入式图像处理应用于一些限制设备大小以及数据传输速度的特殊领域,其中最有代表性的就是视频监控,以及智能机器人领域。
当前嵌入式图像处理还处于发展阶段,大部分图像处理技术仍运行在计算机上。移植到嵌入式平台的算法相较于现有计算机平台的算法相对较少。计算机相对于嵌入式平台有压倒性的性能优势,在计算机上使用的库,最常见的是OpenCV,其大部分算法都进行了多层的引用嵌套。其优势主要在于易用,同时牺牲了处理效率。由于计算机平台,即Windows平台上有大部分已完成的算法,因此对算法的移植,效率的优化也是现在嵌入式图像处理领域的一大课题。
多数图像处理算法都具有较高的运算频率,信息量较大,同时对实时性有较高的要求。而从移植的角度来看,嵌入式系统的主频,运算器数量等,对算法的效率也起到了至关重要的作用。因此嵌入式移植除了程序优化外,同时也需要对使用的芯片进行择优。诸如使用ARM的高频率进行流程处理,使用DSP的多运算单元进行大量的算法运算等。
1 DM3730微处理器
DM3730是美国德州仪器公司推出的由1 GHz的ARM Ccotex-A8 Core和800 MHz的TM320C64X+DSP Core两个处理器组成,同时集成了视频加速器,3D图形处理器,USB2.0,串口等。本文所使用的开发版为Beagle推出的BeagleBoard-xm ver.C,全硬件开源。基于Linux2.6.32以及TI的Codec-engine框架对程序性能进行评估。
1.1 Codec-engine双核框架
Codec-engine双核框架是TI提出,能够缩短程序开发周期所使用的框架。其将DSP端算法打包,隐藏了ARM-DSP的通讯过程,同时将DSP端的程序打包提供一个标准接口供ARM端调用,软件构架如图1所示。
使用这种构架的优点是能快速的对开发目标进行分割,分别开发系统级应用以及图像,信号等处理的算法包。同时可不关心底层ARM和DSP的通信过程,使开发变得高效。
1.2 TI TMS320C64x+Fixed-point DSP core
TMS320C64x+[1]是TI推出的定点DSP处理单元。定点处理单元相对于师出同门的浮点处理单元C67X有更高的运算速度。C67X的处理速度为1 200~2 400 MI·s-1(机每秒钟执行的百万指令数),而C64X系列的处理速度则达到了4 000~8 000 MI·s-1[2]。在适当的算法优化情况下,C64X+的算法运行效率更高。同时定点处理单元有更低廉的价格。
2 混合高斯背景建模
混合高斯背景建模[3]是OpenCV[4]自带的函数库之一,是一个重要的动态背景建模方法。混合高斯背景建模基于像素样本统计信息的背景建模方法,利用长时间内大量样本的概率密度等统计信息来表示背景,然后使用统计差分对目标像素进行判断。
在混合高斯建模中,将图像的颜色信息分别进行处理,对各像素点的处理也是独立的。高斯模型将一个像素的单种颜色看作是一个值在图像序列中随机产生的过程。然后将其规律用高斯分布来描述。
混合高斯模型使用多个权值不同的高斯模型叠加来描述一个像素点。每种高斯分部对应一种像素颜色可能产生的状态,各个高斯分部的权值和分部参数都随时间更新。
混合高斯模型的概率密度是由几个概率密度的加权和构成。
η(xt,μi,t,τi,t)为时刻的第i个高斯分部;n为一个像素点的高斯分布的个数;μ为均值;τ为协方差矩阵;δ为方差;w为其权重。
3 高斯背景建模的加速
首先可从OpenCV库中找到相关函数类BackgroundSubStractorMOG2,将这个类从OpenCV库中独立出来,重新进行相关的宏定义等。
高斯背景建模对每个像素的每个颜色分量分别进行运算,因此为了加速程序,将原本进行彩图运算的部分去除,使用灰度图进行计算,可使算法运行速度变为原来的1/3,如图2所示。高斯背景建模中,高斯模型数据的存储也耗费大量的空间。因此,使用灰度图在加速的同时也可减少大量的内存耗费。
在去除彩图部分定义,以及将彩图数据的存储数组改成存储灰度图数据的单一变量后,对程序结构进行改变。C语言级别的优化应遵循以下几点[5]:(1)单幅图片像素循环中应尽量减少函数调用;(2)将能在循环外的进行判断条件分支移至循环体外;(3)减少数组形式的调用,应使用指针随循环控制变量改变;(4)尽量使用位移指令来代替乘法和除法;(5)使用C64X+的内联函数进行一些特定函数的替换[6]。
其中,(5)是由于C64X+编译器提供的专门函数与嵌入式的汇编指令相对应,能够快速的优化源程序。
最后需要对程序中的浮点运算进行定点化。定点化处理过程中,需要首先对各个变量变化范围进行度量,在一段较长的时间内对其最大值和最小值进行统计来确定其变化范围[7,8]。
在定点化过程中需要将浮点值乘以2n然后取整来进行。考虑到有较多乘法运算是由整数相乘然后右移相应位来进行的,因此在int的32位范围内,一个不大于1的数值最多只能使用16位,防止运算后溢出。由此得出,为了便于处理应该将程序内范围在0~1之间的变量进行16位的左移操作来进行定点化。并且在每次运算后对原本带有小数部分的变量逐一进行位对齐调整。
定点化后对同一段视频的检测,提取前景并二值化,结果如图3所示。定点化并没有影响背景检测的结果。
4 结束语
这次DSP优化过程中,代码结构的优化是在PC平台上完成的,由于PC平台强大的硬件性能支持,定点以及浮点运算的速度区分并不明显,因此定点化工作在DM3730芯片上完成调试及实验。实验结果如表1所示。可见此优化方法在不影响算法结果的情况下,在嵌入式平台上对OpenCV的高斯背景检测算法进行了较好的移植,并对程序的加速卓有成效[9]。
本文在OpenCV混合高斯背景提取的基础上,对其进行了嵌入式移植,调整其程序结构,降低由函数调用,条件分支等造成的资源损耗。并借由定点化使高斯背景建模能适应于嵌入式平台,满足实时处理的效果。该移植方法实现简单、适应性强,能广泛应用于各种需要嵌入式系统运行的算法及函数。但该结果还有进一步上升空间,根据C64X+的取指令特性,存储器特点,对汇编语言优化等,进一步提高了运行效率。
参考文献
[1]Texas Instruments.TMS320C64x+DSP two-level internal memory reference guide[EB/OL].(2014-10-02)[2015-01-11]http://www.ti.com.
[2]Texas Instruments.TMS320C6000 CPU and instruction set reference guide[EB/OL].(2008-10-10)[2015-01-11]http://www.ti.com.
[3]Stauffer C,Grimson W E L.Adaptive background mixture models for real-time tracking[C].Toronto:IEEE Computer Society Conference on Computer Vision and Pattern Recognition,1999.
[4]Gary Bradski/Adrian Kaehler.学习Open CV[M].北京:清华大学出版社,2009.
[5]Texas Instruments.TMS320C6000 optimizing c complier[EB/OL].(2014-10-02)[2015-01-11]http://www.ti.com.
[6]胡金波,陈慧剑.DSP环境下C语言编程的优化实现[J].现代电子技术,2002(12):82-84.
[7]鲁达,张文军,杨华.基于达芬奇平台的智能视频监控算法设计[J].微计算机信息,2009(5):5-7.
[8]鲁达.基于DM6446平台的智能视频监控关键算法研究与实现[D].上海:上海交通大学,2009.