数字图像处理:第二十二章 基于模型的编码

第二十二章基于模型的编码

目录

  1. 引言
  2. 基于对象的编码
  3. 基于模型的编码

作业

 


1. 引言

为了获得更高的压缩效率并保持一定的视频质量以支持超低码率(大约10kbps)双向视频应用,不考虑内容特点的仅仅针对帧内和帧间冗余的通用压缩算法难以胜任。此外为了拓展数字视频的应用,具有内容检索功能的交互式视频越来越重要,这需要在编码的过程中加以考虑。目前正在制定的MPEG-4和MPEG-7压缩标准就是迎合这种需要产生的,它的核心是一种新的基于结构化模型的压缩方法即基于模型的分析-综合编码技术[1]。

2. 基于对象的编码

基于对象的编码是将图象中的物体分割出来作为视频对象,以视频对象为单位进行编码。例如,目前MPEG-4中的视频对象包括:自然视频对象、Sprite对象、2D网格对象、3D人脸和身体对象、静态的纹理对象、3D网格对象和音频对象[2]。

基于对象编码的原理图如下图所示。

例如,自然视频对象分割:

 

3. 基于模型的编码

基于模型的编码可以看作是一种特殊的基于对象的编码,此时对象的结构更复杂,除了在对象的边界存在形状特征外,在对象的纹理区域也存在一定的结构,这些结构信息通过网格模型的内部节点和边来表示[2]。

基于模型的编码的原理图如下所示:

3.1 2D网格模型

在MPEG-4中定义了两类2D网格模型:

  1. 是一个规则的网格模型 (b)是基于内容的网格模型

 

3.2 Sprite编码技术

Sprite编码技术是针对背景对象的特点提出的。通常情况下背景对象自身没有任何运动,由于摄象机的运动而造成图象序列中的背景变化,通过图象的镶嵌技术把整个序列的背景图象拼接成一个大的完全的背景图象,这个图象就叫Sprite图象[2]。

Sprite编码技术是指首先对Sprite图象编码并传输一次并存储在解码端,在随后的图象只需要传输摄象机的运动参数,就可以从Sprite上恢复所有的背景。

Sprite编码分为静态Sprite编码和动态Sprite编码,静态Sprite图象在编码前生成,动态Sprite图象在编码过程中生成。

Sprite编码效率高,主要面向视频会议和视频电话等场景固定的应用中,这时可以将背景的全景图事先传输过去并保存在解码端。

Sprite编码技术的原理如下图所示:

 

参考文献

  1. A.M. Tekalp (崔之祜、江春、陈丽鑫), Digital video processing, Prentice Hall电子工业出版社,1998
  2. 贺玉文,MPEG-4, MPEG-7简介

 

致谢

我要感谢清华大学计算机系的博士研究生贺玉文同学,本章内容是根据他的学术报告编辑的,内容和图片取自:贺玉文,MPEG-4, MPEG-7简介

作业

 


返回主目录返回本章目录

清华大学计算机系 艾海舟

最近修改时间:2000年4月15日


出处:http://media.cs.tsinghua.edu.cn/~ahz/digitalimageprocess/CourseImageProcess.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字图像处理是一种对图像进行操作的技术,可以用于图像增强、图像分割、图像识别等领域。在Python中,可以使用OpenCV和NumPy库来进行数字图像处理。下面是基于PyCharm的数字图像处理的步骤: 1.安装OpenCV和NumPy库。可以使用pip命令在PyCharm中安装这两个库。 2.导入OpenCV和NumPy库。在Python文件中,使用import cv2和import numpy语句导入这两个库。 3.读取图像。使用cv2.imread()函数读取图像数据,并使用cv2.imshow()函数显示图像。 4.图像变换。使用NumPy库对图像的矩阵数据进行变换处理,实现平移、旋转等操作。 5.图像灰度化。使用cv2.cvtColor()函数将图像转换成灰度图像。 下面是一个基于PyCharm的数字图像处理的示例代码: ```python import cv2 import numpy as np # 读取图像 img = cv2.imread('test.jpg') # 显示图像 cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows() # 图像平移 rows, cols = img.shape[:2] M = np.float32([[1, 0, 100], [0, 1, 50]]) dst = cv2.warpAffine(img, M, (cols, rows)) # 显示平移后的图像 cv2.imshow('image', dst) cv2.waitKey(0) cv2.destroyAllWindows() # 图像旋转 rows, cols = img.shape[:2] M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1) dst = cv2.warpAffine(img, M, (cols, rows)) # 显示旋转后的图像 cv2.imshow('image', dst) cv2.waitKey(0) cv2.destroyAllWindows() # 图像灰度化 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 显示灰度图像 cv2.imshow('image', gray) cv2.waitKey(0) cv2.destroyAllWindows() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值