一种基于dsp的图像编码方法

文档序号:7928425阅读:129来源:国知局
专利名称:一种基于dsp的图像编码方法
技术领域
本发明属于数字处理技术、数字图像压縮技术领域,具体涉及一种基于DSP的图像 编码方法,即利用DSP实现对输入的视频的编码以及对MPEG文件的解码功能。
背景技术
DSP (digital singnal processor)是一种独特的微处理器,是以数字信号来处 理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字 信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环 境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序, 远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。由于图像数据量非 常大,为了有效实时地传输信息,必须采用有效的图像压縮技术。同时海量的图像数据也 需要压縮才能实现有效的存储。由于DSP易于满足图象处理中运算量大、实时性强、数 据传输速率高等要求,兼之计算机强大的多媒体交互能力,因而DSP被广泛地应用于图像 处理领域。现有的数字图像处理系统主要由视频信号采集、视频信号预处理、图像处理、图像 传送及图像显示五个部分组成。视频信号采集部分主要由模拟摄像头和模数转换器组成, 逻辑控制部分由可编程逻辑器件完成,图像处理部分由DSP完成,图像传送部分主要由 总线将数据由开发板传送到主机,数据到主机端经过处理并显示在视频显示器上。图1 是基于DSP的数字图像处理的流程图。其工作流程为从摄像头CCD输入的模拟视频信 号经模数转换器AD9042数字化采集后,通过FPGA逻辑控制生成待处理的数据并存入双 口RAM,则负责读取双口中的数据,再按指定算法完成对图像数据的运算处理后,存入 指定存储器一同步动态RAM,并以处理完一帧图像数据的时间为周期,周期性地向主机 发送消息,让主机读取已由DSP处理完毕的图像数据,主机端接收到DSP消息后,通过 DSP的主机接口读取DSP处理完毕的图像数据并以图像形式显示在视频显示器上。MPEG4是一种低带宽的视频压縮标准,在网络视频会议与视频监控领域具有广泛的 应用。MPEG- 4视频编码是基于VOP进行的,所谓VOP是指视频目标平面,即视频对象 VO在某一时间的采样,从空间上看它由若干个16 X16大小的宏块(MB :Macro Block)组 成,腿又可以分为4个8 X8的亮度块(Block)和2个8 X8的色差块。V0P编码分帧内IV0P、帧间前向因果预测PV0P和帧间双向非因果预测BV0P三种类型。V0P编码 的内容包括V0P的形状信息、运动信息和纹理信息,其特点如下(1) 形状信息编码对于不同内容的VOP ,V0P的形状信息编码(对于IV0P、 PV0P、 BV0P)只在MB级进行。(2) 运动信息编码V0P的运动信息(对于PV0P、 BV0P)既可以在MB级进行又可以在Block级进行, 编码的运动信息采用运动估计和运动补偿算法进行估计。(3) 纹理信息编码V0P的纹理信息编码包括DCT、量化、游程编码、Huffman编码等处理过程,对于 IV0P、 PV0P、 BV0P只在Block级进行。IV0P的纹理信息就是图像本身的视频数据,而 PV0P、 BV0P的纹理信息包括图像本身的视频数据与运动预测数据的差值。现有的MPEG- 4编码器的原理框图如图1所示。对于I帧编码,首先对每个8 X8 的块进行DCT变换,然后DCT变换系数进行量化,最后对量化系数作变长编码(VLC)。帧 间编码帧宏块分帧内宏块与帧间宏块两种,帧内宏块的编码与I帧编码相同,而帧间宏 块的编码则需先利用运动估计计算运动矢量。根据运动矢量计算前后帧宏块间的像素差 值,然后对差值进行DCT变换、量化和变长编码。在上述过程中,量化系数一方面送到 VLC编码器,另一方面送到反量化器进行图像重建,重建图像保存在图像缓冲区以备下一 次帧间预测时使用。实验统计分析表明,运动估计和运动补偿计算占整个编码处理时间的45 %左右,并 且,不同的运动估计算法和具有不同并发处理结构的DSP也直接影响到编码后恢复图像 的质量和处理速度。发明内容本发明目的是克服现有技术的缺陷,提供一种有效的检测运动目标,减小图像能量, 降低码流,处理效率更高的基于DSP的图像编码方法。实现本发明目的的技术方案是 一种基于DSP的图像编码方法,包括以下步骤 步骤l:从摄像头采集的数据存入输入缓冲之后,从输入缓冲中读入摄像头采集的 图像;步骤2:对图像进行分块和运动估计并将得出的宏块放入宏块层缓存; 步骤3:接下来将宏块层缓存中的宏块进行编码将编码结果写入码流; 步骤4:从码流中读入数据解码将解码得到的宏块存入解码所用的宏块缓存中;步骤5:从宏块缓存中读入宏块重构原图像; 步骤6:将解码得到图像放入输出缓冲中去; 上述步骤3中的编码包括下列步骤步骤3. 1采用对称差分运算检测运动目标,从原始视频流中分割出视频对象V0。 V0是持续任意长度时间的、任意形状的视频场景的区域。视频序列就是一个或多个V0的隹A.朱口 ;步骤3.2将V0进行编码,对不同VO的运动信息,形状信息和纹理信息分配不同的 码字;步骤3.3对分割出物体后剩余的背景图进行拼接,然后进行Sprite编码; 步骤3. 4将步骤2和步骤3得到的码流复合成最终码流。所述步骤3. 1中采用对称差分运算检测运动目标,具体步骤如下 将输入帧的亮度分量分别和前面和后面的帧做差分;根据差分得到的结果判断镜头是否切换,如果切换,将整个输入图像作为对象; 如果没有切换,进行如下步骤; 由查分的结果求取阈值;根据阈值将差分的两幅图像二值化,得到两幅二值图像;将两幅二值图像按像素相与;用Soble算子对相与后的图像进行边缘加强;对得出的图像扫描得出运动物体所在区域;将输入图像所对应区域的亮度和色度分量提取出来作为运动对象的色度和亮度分量;将割出运动区域的图像剩下的部分提取出来作为背景。运用对称差分运算检测运动目标,能够起到减小图像能量,降低码流的作用。其 中所述对称差分的具体算法描述如下(1)视频序列三帧源图像f (x, y, k-l), f (x, y, k)和f (x, y, k+l),分别计算相邻两 帧源图像的绝对差灰度图像Dl(x, y) = |f (x, y, k)-f (x, y, k-1) | D2(x, y) = |f(x, y, k+l)-f(x, y, k) | (2)对两个绝对值差灰度图像,分别选取合适的阈值,对图像进行二值化。选取一定阈值,得到两个绝对值二值图像Bl(x,y)和B2(x,y)。在每一个像素位置,对两个绝 对差二值图像进行相与。得到对称差分结果二值图像B (x,y),这即为K帧源图像中运 动目标从背景中分离的初步结果。由于对称差分结果二值图像B (x,y)中,目标点的分 布不均匀,在有的地方还会有背景噪声聚集小块的干扰,还要进行滤波处理,祛除噪声 点。一般视频序列包括静止背景和运动目标,为了将运动的目标从静止的背景中分离出 来,由于相邻两帧之间的差异较小,采用相邻两帧分割效果不是很好,本发明对有间隔 的两帧源图像进行差分,图像帧之间的显著差异能快速的检测出目标的运动范围,有间 隔的三帧序列图像通过对称差分相与,则较好的检测出中间帧运动目标的形状轮廓.并 通过上一帧分割出的目标模板对差分结果进行修正。本发明的方法相对与传统方法更能 有效的检测运动目标,降低码流。所述步骤3. 2的运动信息编码中采用菱形搜索法,本发明在对传统算法做了进一步改进,具体步骤如下由宏块的起始位置确定宏块的搜索框的范围;利用空间相邻宏块或时间相邻宏块的运动信息,对所要搜索宏块进行预测,提高尽 快找到目标点的可能性,预测结果作为大菱形搜索起始点; 以起始点为中心,开始进行大菱形搜索;将大菱形搜索结果作为小菱形搜索的起始点进行一次小菱形搜索; 对搜索参考图象进行双线性插值;如果运动矢量不是整像素,将小菱形搜索的结果作为半像素搜索的起始点进行半像 素搜索。现有菱形搜索技术的菱形搜索过程反复进行,直到最优点出现在菱形的中心才结束 搜索过程,因此搜索点数很多。而本发明的菱形搜索,在开始前进行了高效的起点预测, 加大了预测后的起点越来越接近最优点的可能性,所以只需执行大菱形和小菱形一次, 便可达到同样的目标,而每次大菱形搜索时只计算8个点就覆盖了中心点周围12个像 素的区域,算法效率和精度都得到保证,避免了搜索冗余,有效节约了时间。.上述步骤3. 3中编码的具体步骤如下 步骤3. 3. 1对输入帧分割存放在对象层的缓存中; 步骤3.3.2如果输入帧为可分割帧,修改全景;步骤3. 3. 3读取对象层中的对象处理将处理结果存放到宏块层的缓存中去; 步骤3. 3. 4对宏块层的每一个宏块进行编码把编码的结果存放到比特层; 步骤3. 3. 5如果输入帧为不可分割帧,当输入帧累计满6帧,执行上述步骤3. 3. 3 至步骤3.3.4。上述步骤3. 3. 3中对象层中的对象处理流程如下a. 从对象层读取每一帧所分割出的对象;b. 如果这些对象所在帧为可分割帧,把这些对象和对应得全景图重构出原图; bl.如果重构原图和原图比较在容忍度内,所在帧是6帧中最后一帧,标记这些对象为 B-V0P分块并做双向运动估计把宏块存入宏块层缓存;b2如果重构原图和原图比较不在容忍度内,将这些对象所在帧视为不可分割帧b21.当所在帧是6帧中最后一帧时,标记这些对象为P-V0P分块并做双向运动估计把宏块;b22.当所在帧不是6帧中最后一帧时,标记该对象为B-V0P分块并做双向运动估计把宏 块存入宏块层缓存;c. 如果这些对象所在帧为不可分割帧cl.该对象为帧内编码,标记该对象w为I-V0P并直接分成宏块放入宏块层缓存; c2.该对象不是帧内编码c21.所在帧不是6帧中最后一帧时,标记该对象为B-V0P分块并做双向运动估计把宏块 存入宏块层缓存;c22.当所在帧不是6帧中最后一帧时,标记该对象为B-VOP分块并做双向运动估计把 宏块存入宏块层缓存。上述步骤3. 3. 4中宏块层中宏块编码流程如下 从宏块层缓存中读取宏块,如果该宏块是帧内编码,将该宏块的Y U V分量分别进行做纹理编码 如果该宏块不是帧内编码,将该宏块的运动矢量进Huffman编码并将Y U V残差做 纹理编码。


图1是本发明背景技术中运动对象的抽取及对每个对象进行编码的过程。图2本发明实施例1预测器。 图3大菱形与小菱形示意图。图4是本发明实施例1差分运算检测运动目标算法流程图。图5是本发明实施例1搜索算法的流程图。图6是本发明实施例lSprite编码流程图。图7是本发明实施例1对象层中对象处理流程图。图8是本发明实施例1宏块层宏块编码流程图。图9是本发明实施例1编解码流程图。
具体实施方式
下面结合实施例做进一步说明。实施例l如图9所示, 一种基于DSP的图像编码方法,包括以下步骤步骤l:从摄像头采集的数据存入输入缓冲之后,从输入缓冲中读入摄像头采集的 图像;步骤2:对图像进行分块和运动估计并将得出的宏块放入宏块层缓存; 步骤3:接下来将宏块层缓存中的宏块进行编码将编码结果写入码流; 步骤4:从码流中读入数据解码将解码得到的宏块存入解码所用的宏块缓存中; 步骤5:从宏块缓存中读入宏块重构原图像; 步骤6:将解码得到图像放入输出缓冲中去。循环上述过程,不断进行图像编解码。DSP读入数据后经过编码之后生成图像码流, 除此之外,DSP也可以运行解码程序对图像码流解码之后存入到输出缓冲,供现实设备 读取图像并显示。其中步骤3中宏块层缓存中的宏块进行编码的过程如图5所示,具体按照以下步骤运行步骤3. 1采用对称差分运算检测运动目标,从原始视频流中分割出视频对象V0。 V0是持续任意长度时间的、任意形状的视频场景的区域。视频序列就是一个或多个VO的鱼厶.呆pj;步骤3.2将V0进行编码,对不同VO的运动信息,形状信息和纹理信息分配不同的 码字;步骤3.3对分割出物体后剩余的背景图进行拼接,然后进行Sprite编码; 步骤3. 4将步骤2和步骤3得到的码流复合成最终码流。如图4所示,步骤l中采用对称差分运算检测运动目标,具体步骤如下 将输入帧的亮度分量分别和前面和后面的帧做差分;根据差分得到的结果判断镜头是否切换,如果切换,将整个输入图像作为对象; 如果没有切换,进行如下步骤; 由查分的结果求取阈值;根据阈值将差分的两幅图像二值化,得到两幅二值图像;将两幅二值图像按像素相与;用Soble算子对相与后的图像进行边缘加强;对得出的图像扫描得出运动物体所在区域;将输入图像所对应区域的亮度和色度分量提取出来作为运动对象的色度和亮度分将割出运动区域的图像剩下的部分提取出来作为背景。 其中所述对称差分的具体算法描述如下(1)视频序列三帧源图像f(x,y,k-l),f(x,y,k)和f(x,y,k+l),分别计算相邻两 帧源图像的绝对差灰度图像Dl(x, y) = |f(x, y, k)-f(x, y, k-1) D2 (x, y) = | f (x, y, k+l) -f (x, y, k) (2)对两个绝对值差灰度图像,分别选取合适的阈值,对图像进行二值化。选取一 定阈值,得到两个绝对值二值图像Bl(x,y)和B2(x,y)。在每一个像素位置,对两个绝对 差二值图像进行相与。得到对称差分结果二值图像B (x,y),这即为K帧源图像中运动目 标从背景中分离的初步结果。由于对称差分结果二值图像B (x,y)中,目标点的分布不 均匀,在有的地方还会有背景噪声聚集小块的干扰,还要进行滤波处理,祛除噪声点。 步骤3. 2中的运动信息编码中采用菱形搜索法,采用的预测器如图2所示,其中MV 为当前块运动矢量,MV1为左边块运动矢量,MV2为上边块运动矢量,MV3为右上块运动 矢量。菱形搜索法中的大菱形D1,小菱形D2如图3所示。搜索流程如图5所示,具体步 骤如下步骤l:由宏块的起始位置确定宏块的搜索框的范围;步骤2:利用空间相邻宏块或时间相邻宏块的运动信息,对所要搜索宏块进行预测,提高尽快找到目标点的可能性,预测结果作为大菱形搜索起始点; 步骤3:以起始点为中心,开始进行大菱形搜索;步骤4:将大菱形搜索结果作为小菱形搜索的起始点进行一次小菱形搜索; 步骤5:对搜索参考图象进行双线性插值;如果运动矢量不是整像素,将小菱形搜索的结果作为半像素搜索的起始点进行半像 素搜索。如图6所示,上述步骤3.3中编码的具体步骤如下 步骤3. 3. 1对输入帧分割存放在对象层的缓存中; 步骤3.3.2如果输入帧为可分割帧,修改全景;步骤3. 3. 3读取对象层中的对象处理将处理结果存放到宏块层的缓存中去; 步骤3. 3. 4对宏块层的每一个宏块进行编码把编码的结果存放到比特层; 步骤3. 3. 5如果输入帧为不可分割帧,当输入帧累计满6帧,执行上述步骤3. 3. 3 至步骤3. 3.4。如图7所示,上述步骤3. 3. 3中对象层中的对象处理流程如下a. 从对象层读取每一帧所分割出的对象;b. 如果这些对象所在帧为可分割帧,把这些对象和对应得全景图重构出原图; bl.如果重构原图和原图比较在容忍度内,所在帧是6帧中最后一帧,标记这些对象为B-V0P分块并做双向运动估计把宏块存入宏块层缓存;b2如果重构原图和原图比较不在容忍度内,将这些对象所在帧视为不可分割帧 b21.当所在帧是6帧中最后一帧时,标记这些对象为P-V0P分块并做双向运动估计把宏块;b22.当所在帧不是6帧中最后一帧时,标记该对象为B-V0P分块并做双向运动估计 把宏块存入宏块层缓存;c. 如果这些对象所在帧为不可分割帧cl.该对象为帧内编码,标记该对象w为I-V0P并直接分成宏块放入宏块层缓存; c2.该对象不是帧内编码c21.所在帧不是6帧中最后一帧时,标记该对象为B-V0P分块并做双向运动估计把宏块存入宏块层缓存;c22.当所在帧不是6帧中最后一帧时,标记该对象为B-VOP分块并做双向运动估计把宏块存入宏块层缓存。如图8所示,上述步骤3. 3. 4中宏块层中宏块编码流程如下 从宏块层缓存中读取宏块,如果该宏块是帧内编码,将该宏块的Y U V分量分别进行做纹理编码;如果该宏块不是帧内编码,将该宏块的运动矢量进Huffman编码并将Y U V残差做 纹理编码。
权利要求
1.一种基于DSP的图像编码方法,包括以下步骤步骤1从摄像头采集的数据存入输入缓冲之后,从输入缓冲中读入摄像头采集的图像;步骤2对图像进行分块和运动估计并将得出的宏块放入宏块层缓存;步骤3将宏块层缓存中的宏块进行编码将编码结果写入码流;步骤4从码流中读入数据解码将解码得到的宏块存入解码所用的宏块缓存中;步骤5从宏块缓存中读入宏块重构原图像;步骤6将解码得到图像放入输出缓冲中去;其特征是,上述步骤3中的编码包括下列步骤步骤3.1采用对称差分运算检测运动目标,从原始视频流中分割出视频对象VO;步骤3.2将VO进行编码,对不同VO的运动信息,形状信息和纹理信息分配不同的码字;步骤3.3对分割出物体后剩余的背景图进行拼接,然后进行Sprite编码;步骤3.4将步骤2和步骤3得到的码流复合成最终码流。
2. 根据权利要求1所述的DSP的图像编码方法,其特征是,所述步骤3. 1中采用对 称差分运算检测运动目标,具体步骤如下将输入帧的亮度分量分别和前面和后面的帧做差分;根据差分得到的结果判断镜头是否切换,如果切换,将整个输入图像作为对象; 如果没有切换,进行如下步骤; 由査分的结果求取阈值;根据阈值将差分的两幅图像二值化,得到两幅二值图像; 将两幅二值图像按像素相与; 用Soble算子对相与后的图像进行边缘加强; 对得出的图像扫描得出运动物体所在区域; - 将输入图像所对应区域的亮度和色度分量提取出来作为运动对象的色度和亮度分 量;将割出运动区域的图像剩下的部分提取出来作为背景。
3. 根据权利要求1所述的DSP的图像编码方法,其特征是,所述步骤3.2的运动信 息编码中采用菱形搜索法,本发明在对传统算法做了进一步改进,具体步骤如下由宏块的起始位置确定宏块的搜索框的范围;利用空间相邻宏块或时间相邻宏块的运动信息,对所要搜索宏块进行预测,提高尽 快找到目标点的可能性,预测结果作为大菱形搜索起始点; 以起始点为中心,开始进行大菱形搜索;将大菱形搜索结果作为小菱形搜索的起始点进行一次小菱形搜索; 对搜索参考图像进行双线性插值;如果运动矢量不是整像素,将小菱形搜索的结果作为半像素搜索的起始点进行半像 素搜索。
4. 根据权利要求1所述的DSP的图像编码方法,其特征是,上述步骤3.3中编码的 具体步骤如下步骤3. 3. 1对输入帧分割存放在对象层的缓存中; 步骤3.3.2如果输入帧为可分割帧,修改全景;步骤3. 3. 3读取对象层中的对象处理将处理结果存放到宏块层的缓存中去; 步骤3. 3. 4对宏块层的每一个宏块进行编码把编码的结果存放到比特层; 步骤3.3.5如果输入帧为不可分割帧,当输入帧累计满6帧,执行上述步骤3.3.3 至步骤3. 3. 4。
5. 根据权利要求3所述的DSP的图像编码方法,其特征是,上述步骤3.3.3中对象 层中的对象处理流程如下a. 从对象层读取每一帧所分割出的对象;b. 如果这些对象所在帧为可分割帧,把这些对象和对应得全景图重构出原图bl.如果重构原图和原图比较在容忍度内,所在帧是6帧中最后一帧,标记这些对象为B-V0P分块并做双向运动估计把宏块存入宏块层缓存;b2如果重构原图和原图比较不在容忍度内,将这些对象所在帧视为不可分割帧 b21.当所在帧是6帧中最后一帧时,标记这些对象为P-V0P分块并做双向运动估计把宏块;b22.当所在帧不是6帧中最后一帧时,标记该对象为B-V0P分块并做双向运动估计 把宏块存入宏块层缓存;c. 如果这些对象所在帧为不可分割帧cl.该对象为帧内编码,标记该对象w为I-V0P并直接分成宏块放入宏块层缓存; c2.该对象不是帧内编码c21.所在帧不是6帧中最后一帧时,标记该对象为B-V0P分块并做双向运动估计把宏块存入宏块层缓存;c22.当所在帧不是6帧中最后一帧时,标记该对象为B-VOP分块并做双向运动估 计把宏块存入宏块层缓存。
6.根据权利要求3所述的DSP的图像编码方法,其特征是,上述步骤3.3.4中宏块 层中宏块编码流程如下从宏块层缓存中读取宏块,如果该宏块是帧内编码,将该宏块的Y U V分量分别进行做纹理编码 如果该宏块不是帧内编码,将该宏块的运动矢量进Huffman编码并将Y U V残差做纹理 编码。
全文摘要
一种基于DSP的图像编码方法,包括以下步骤1.从摄像头采集的数据存入输入缓冲之后,从输入缓冲中读入摄像头采集的图像;2.对图像进行分块和运动估计并将得出的宏块放入宏块层缓存;3.将宏块层缓存中的宏块进行编码将编码结果写入码流;4.从码流中读入数据解码将解码得到的宏块存入解码所用的宏块缓存中;5.从宏块缓存中读入宏块重构原图像;步骤3中的编码包括采用对称差分运算检测运动目标,从原始视频流中分割出视频对象V0;将V0进行编码,对不同V0的运动信息,形状信息和纹理信息分配不同的码字;对分割出物体后剩余的背景图进行拼接,然后进行Sprite编码;将步骤2和步骤3得到的码流复合成最终码流。
文档编号H04N7/26GK101404773SQ20081023618
公开日2009年4月8日 申请日期2008年11月25日 优先权日2008年11月25日
发明者宋雪桦, 轶 朱, 江晓明, 俊 祝 申请人:江苏大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1