您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页DSP数字图像处理

DSP数字图像处理

来源:尚车旅游网


《现代信号处理课程设计》

课程设计报告

设计题目 DSP数字图像处理

1

目 录

第1章 绪论------------------------------------------------3 第2章 设计总体思路----------------------------------------8 第3章 离散余弦函数的DSP实现-----------------------------11

3.1 DSP的简介--------------------------------------11 3.2 图象的量化-------------------------------------11 3.3 熵编码-----------------------------------------11 3.4 在DSP上实现的DCT与IDCT变换------------------14 第4章 离散余弦变换的Matlab实现--------------------------21

4.1离散余弦变换------------------------------------21 4.2 Matlab仿真-------------------------------------22 心得体会-------------------------------------------------23 参考文献-------------------------------------------------24

2

第5章 绪论

数字图像处理(Digital Image Processing)是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像。图像处理方法有图像增强、复原、编码、压缩等。 随着计算机技术、电子技术、和通信技术的发展,数字图像压缩在计算机和便携

式系统中的应用越来越广泛。数字化图像使得图像信号可以高质量地传输,并便于图像的检索、分析、处理和存储。但是数字图像的表示需要大量的数据,由于存储空间和网络带宽的限制,对图像进行存储,处理和传输之前先要对图像进行压缩。数字图像压缩是减小图像数据量,方便图像的传输、存储和处理的有效手段,研究图像压缩的实现有着其重要的现实意义。数字信号处理器(DSP)有其独特的硬件结构特别适合于数字信号处理领域,大量地使用在各种便携式、实时信号处理场合。它的高速度和良好的运算性能特别适合于图像处理。数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用

计算机对其进行处理的过程。数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于20世纪60年代初期。早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。首次获得实际成功应用的是美国喷气推进实验室(JPL)。他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球表面地图,获得了巨大的成功。随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、彩色图及全景镶嵌图,获得了非凡的成果,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的诞生。在以后的宇航空间技术,如对火星、土星等星球的探测研究中,数字图像处理技术都发挥了巨大的作用。数字图像处理取得的另一个巨大成就是在医学上获得的成果。1972年英国EMI公司工程师Housfield发明了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT(Computer Tomograph)。CT的基本方法是根据人的头部截面的投影,经计算机处理来重建截面图像,称为图像重建。1975年EMI公司又成功研制出全身用的CT装置,获得了人体各个部位鲜明清晰的断层图像。1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类作出了划时代的贡献。与此同时,图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,属于这些领域的有航空航天、生物医学工程、工业检

3

测、机器人视觉、公安司法、军事制导、文化艺术等,使图像处理成为一门引人注目、前景远大的新型学科。随着图像处理技术的深入发展,从70年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展,数字图像处理向更高、更深层次发展。人们已开始研究如何用计算机系统解释图像,实现类似人类视觉系统理解外部世界,这被称为图像理解或计算机视觉。很多国家,特别是发达国家投入更多的人力、物力到这项研究,取得了不少重要的研究成果。其中代表性的成果是70年代末MIT的Marr提出的视觉计算理论,这个理论成为计算机视觉领域其后十多年的主导思想。图像理解虽然在理论方法研究上已取得不小的进展,但它本身是一个比较难的研究领域,存在不少困难,因人类本身对自己的视觉过程还了解甚少,因此计算机视觉是一个有待人们进一步探索的新领域。 应用领域

图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大。 1)航天和航空技术方面

航天和航空技术方面的应用数字图像处理技术在航天和航空技术方面的应用,除了JPL对月球、火星照片的处理之外,另一方面的应用是在飞机遥感和卫星遥感技术中。许多国家每天派出很多侦察飞机对地球上有兴趣的地区进行大量的空中摄影。对由此得来的照片进行处理分析,以前需要雇用几千人,而现在改用配备有高级计算机的图像处理系统来判读分析,既节省人力,又加快了速度,还可以从照片中提取人工所不能发现的大量有用情报。从60年代末以来,美国及一些国际组织发射了资源遥感卫星(如LANDSAT系列)和天空实验室(如SKYLAB),由于成像条件受飞行器位置、姿态、环境条件等影响,图像质量总不是很高。因此,以如此昂贵的代价进行简单直观的判读来获取图像是不合算的,而必须采用数字图像处理技术。如LANDSAT系列陆地卫星,采用多波段扫描器(MSS),在900km高空对地球每一个地区以18天为一周期进行扫描成像,其图像分辨率大致相当于地面上十几米或100米左右(如1983年发射的LANDSAT-4,分辨率为30m)。这些图像在空中先处理(数字化,编码)成数字信号存入磁带中,在卫星经过地面站上空时,再高速传送下来,然后由处理中心分析判读。这些图像无论是在成像、存储、传输过程中,还是在判读分析中,都必须采用很多数字图像处理方法。现在世界各国都在利用陆地卫星所获取的图像进行资源调查(如森林调查、海洋泥沙和渔业调查、水资源调查等),灾害检测(如病虫害检测、水火检测、环境污染检测等),资源勘察(如石油勘查、矿产量探测、大型工程地理位置勘探分析等),农业规划(如土壤营养、水份和农作物生长、产量的估算等),城市规划(如地质结构、水源及环境分析等)。我国也

4

陆续开展了以上诸方面的一些实际应用,并获得了良好的效果。在气象预报和对太空其它星球研究方面,数字图像处理技术也发挥了相当大的作用。 2)生物医学工程方面

数字图像处理在生物医学工程方面的应用十分广泛,而且很有成效。除了上面介绍的CT技术之外,还有一类是对医用显微图像的处理分析,如红细胞、白细胞分类,染色体分析,癌细胞识别等。此外,在X光肺部图像增晰、超声波图像处理、心电图分析、立体定向放射治疗等医学诊断方面都广泛地应用图像处理技术。 3)通信工程方面

当前通信的主要发展方向是声音、文字、图像和数据结合的多媒体通信。具体地讲是将电话、电视和计算机以三网合一的方式在数字通信网上传输。其中以图像通信最为复杂和困难,因图像的数据量十分巨大,如传送彩色电视信号的速率达100Mbit/s以上。要将这样高速率的数据实时传送出去,必须采用编码技术来压缩信息的比特量。在一定意义上讲,编码压缩是这些技术成败的关键。除了已应用较广泛的熵编码、DPCM编码、变换编码外,目前国内外正在大力开发研究新的编码方法,如分行编码、自适应网络编码、小波变换图像压缩编码等。 4)工业和工程方面

在工业和工程领域中图像处理技术有着广泛的应用,如自动装配线中检测零件的质量、并对零件进行分类,印刷电路板疵病检查,弹性力学照片的应力分析,流体力学图片的阻力和升力分析,邮政信件的自动分拣,在一些有毒、放射性环境内识别工件及物体的形状和排列状态,先进的设计和制造技术中采用工业视觉等等。其中值得一提的是研制具备视觉、听觉和触觉功能的智能机器人,将会给工农业生产带来新的激励,目前已在工业生产中的喷漆、焊接、装配中得到有效的利用。 5)军事公安方面

在军事方面图像处理和识别主要用于导弹的精确末制导,各种侦察照片的判读,具有图像传输、存储和显示的军事自动化指挥系统,飞机、坦克和军舰模拟训练系统等;公安业务图片的判读分析,指纹识别,人脸鉴别,不完整图片的复原,以及交通监控、事故分析等。目前已投入运行的高速公路不停车自动收费系统中的车辆和车牌的自动识别都是图像处理技术成功应用的例子。

5

6)文化艺术方面

目前这类应用有电视画面的数字编辑,动画的制作,电子图像游戏,纺织工艺品设计,服装设计与制作,发型设计,文物资料照片的复制和修复,运动员动作分析和评分等等,现在已逐渐形成一门新的艺术--计算机美术。 7)机器人视觉

机器视觉作为智能机器人的重要感觉器官,主要进行三维景物理解和识别,是目前处于研究之中的开放课题。机器视觉主要用于军事侦察、危险环境的自主机器人,邮政、医院和家庭服务的智能机器人,装配线工件识别、定位,太空机器人的自动操作等。 8)视频和多媒体系统

目前,电视制作系统广泛使用的图像处理、变换、合成,多媒体系统中静止图像和动态图像的采集、压缩、处理、存贮和传输等。 9)科学可视化

图像处理和图形学紧密结合,形成了科学研究各个领域新型的研究工具。 10)电子商务

在当前呼声甚高的电子商务中,图像处理技术也大有可为,如身份认证、产品防伪、水印技术等。

总之,图像处理技术应用领域相当广泛,已在国家安全、经济发展、日常生活中充当越来越重要的角色,对国计民生的作用不可低估。 研究方向

自20世纪60年代第三代数字计算机问世以后,数字图像处理技术出现了空前的发展,在该领域中需要进一步研究的问题主要有如下五个方向: 1)在进一步提高精度的同时着重解决处理速度问题;

2)加强软件研究,开发新的处理方法,特别要注意移植和借鉴其他学科的技术和研究成果,创造新的处理方法;

3)加强边缘学科的研究工作促进图像处理技术的发展;

4)加强理论研究,逐步形成处理科学自身的理论体系; 5)时刻注意图像处理领域的标准化问题。 基本特点

(1)处理信息量很大

数字图像处理的信息大多是二维信息,处理信息量很大。如一幅256×256

6

低分辨率黑白图像,要求约64kbit的数据量;对高分辨率彩色512×512图像,则要求768kbit数据量;如果要处理30帧/秒的电视图像序列,则每秒要求500kbit~22.5Mbit数据量。因此对计算机的计算速度、存储容量等要求较高。 (2)占用频带较宽

数字图像处理占用的频带较宽。与语言信息相比,占用的频带要大几个数量级。如电视图像的带宽约5.6MHz,而语音带宽仅为4kHz左右。所以在成像、传输、存储、处理、显示等各个环节的实现上,技术难度较大,成本亦高,这就对频带压缩技术提出了更高的要求。 (3)各像素相关性大

数字图像中各个像素是不独立的,其相关性大。在图像画面上,经常有很多像素有相同或接近的灰度。就电视画面而言,同一行中相邻两个像素或相邻两行间的像素,其相关系数可达0.9以上,而相邻两帧之间的相关性比帧内相关性一般说还要大些。因此,图像处理中信息压缩的潜力很大。 (4)无法复现三维景物的全部几何信息

由于图像是三维景物的二维投影,一幅图象本身不具备复现三维景物的全部几何信息的能力,很显然三维景物背后部分信息在二维图像画面上是反映不出来的。因此,要分析和理解三维景物必须作合适的假定或附加新的测量,例如双目图像或多视点图像。在理解三维景物时需要知识导引,这也是人工智能中正在致力解决的知识工程问题。 (5)受人的因素影响较大

数字图像处理后的图像一般是给人观察和评价的,因此受人的因素影响较大。由于人的视觉系统很复杂,受环境条件、视觉性能、人的情绪爱好以及知识状况影响很大,作为图像质量的评价还有待进一步深入的研究。另一方面,计算机视觉是模仿人的视觉,人的感知机理必然影响着计算机视觉的研究。例如,什么是感知的初始基元,基元是如何组成的,局部与全局感知的关系,优先敏感的结构、属性和时间特征等,这些都是心理学和神经心理学正在着力研究的课题。 编辑本段主要优点 1. 再现性好数字图像处理与模拟图像处理的根本不同在于,它不会因图像的存储、传输或复制等一系列变换操作而导致图像质量的退化。只要图像在数字化时准确地表现了原稿,则数字图像处理过程始终能保持图像的再现。 2.处理精度高按目前的技术,几乎可将一幅模拟图像数字化为任意大小的二维数组,这主要取决于图像数字化设备的能力。现代扫描仪可以把每个像素的灰度等级量化为16位甚至更高,这意味着图像的数字化精度可以达到满足任一应用需求。对计算机而言,不论数组大小,也不论每个像素的位数多少,其处理程序几乎是一样的。换言之,从原理上讲不论图像的精度有多高,处理总是能实现的,只要在处理时改变程序中的数组参数就可以了。回想一下图像的模拟处理,为了要把处理精度提高一个数量级,就要大幅度地改进处理装置,这在经济上是极不

7

合算的。 3.适用面宽图像可以来自多种信息源,它们可以是可见光图像,也可以是不可见的波谱图像(例如X射线图像、射线图像、超声波图像或红外图像等)。从图像反映的客观实体尺度看,可以小到电子显微镜图像,大到航空照片、遥感图像甚至天文望远镜图像。这些来自不同信息源的图像只要被变换为数字编码形式后,均是用二维数组表示的灰度图像(彩色图像也是由灰度图像组合成的,例如RGB图像由红、绿、蓝三个灰度图像组合而成)组合而成,因而均可用计算机来处理。即只要针对不同的图像信息源,采取相应的图像信息采集措施,图像的数字处理方法适用于任何一种图像。 4.灵活性高图像处理大体上可分为图像的像质改善、图像分析和图像重建三大部分,每一部分均包含丰富的内容。由于图像的光学处理从原理上讲只能进行线性运算,这极大地限制了光学图像处理能实现的目标。而数字图像处理不仅能完成线性运算,而且能实现非线性处理,即凡是可以用数学公式或逻辑关系来表达的一切运算均可用数字图像处理实现。

第2章 设计总体思路

数字图像处理主要研究的内容有以下几个方面:

1) 图像变换由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。

2) 图像编码压缩图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。

3) 图像增强和复原图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;如强化低频分量可减少图像中噪声影响。图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立\"降质模型\",再采用某种滤波方法,恢复或重建原来的图像。

4) 图像分割图像分割是数字图像处理中的关键技术之一。图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。虽然目前已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热点之一。

8

5) 图像描述图像描述是图像识别和理解的必要前提。作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。对于特殊的纹理图像可采用二维纹理特征描述。随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积描述、表面描述、广义圆柱体描述等方法。

6) 图像分类(识别)图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视。 常用方法

1)图像变换:由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。

2 )图像编码压缩:图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。

3 )图像增强和复原:图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;如强化低频分量可减少图像中噪声影响。图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立“降质模型”,再采用某种滤波方法,恢复或重建原来的图像。

4 )图像分割:图像分割是数字图像处理中的关键技术之一。图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。虽然目前已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热点之一。 5 )图像描述:图像描述是图像识别和理解的必要前提。作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。对于特殊的纹理图像可采用二维纹理特征描述。随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积描述、表面描述、广义圆柱体描述等方法。

9

6 )图像分类(识别):图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视。

本实验利用达盛DSP试验箱设计实现静态图像的离散余弦变换(DCT)和IDCT算法。通过读入一幅标准灰色的Lena(64×64)图像,然后对其图像数据进行8×8分块,接着对每块分别进行二维离散余弦变换(DCT),并经量化后通过反变换(IDCT)把数据块重新还原组合,先通过Matlab进行仿真,显示DCT、IDCT和压缩图象,再通过CCS软件的Image 显示功能,显示出原图像和经处理后的图像。比较原图像数据和处理后的图像数据,并分别比较在Matlab中和CCS软件中的原图像和处理后的图像。

具体的设计首先进行初始化,调用DCT变换子程序输出变换结果。然后调用DCT逆变换子程序输出重构信号。设计总流程图如下:

10

读入Lena(64×64)图象 对图象数据进行8×8分块 二维DCT变化 系数均匀量化 熵编码 逆量化 N IDCT变化 分块转换是否完成 Y 组合输出图象

图2-1 DCT程序流程图

第3章 离散余弦函数的DSP实现

3.1 DSP的简介

DSP有两种解释:其一是Digital Signal Processing的缩写,即数字信号处理,是指数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。其二是Digital Signal Processor即数字信号处理器的意思,是指数字信号处理器是用来完成数字信号处理要求的具有特殊结构的一种微处理器,即我们经常所说的DSP器件。近年来,DSP作为一种新型的微处理器在各种消费类、通信、医疗和工业产品中得到了非常广泛的应用。DSP处理器是一类针对数字信号处理领域进行了优化的微处理器。和普通的微处理器相比,它们具有特殊的硬件结构特别适合各类数字信号处理算法的实现,从而使得产品易于实现和维护。

11

3.2 图象的量化

所谓量化就是将离散图像的值表示为与其幅度成比例的整数,就是将DCT系数按比例缩小,并取其最接近的整数值的处理过程。量化的作用是在保证一定的图像质量前提下,丢掉那些对视觉效果影响不大的信息。

在JPEG中,量化就是将DCT变换后系数矩阵的各个系数f(u,v)除以量化表中对应的且量化阶距m(u,v)。量化过程在DSP的实现,是先将各量化表分别存放在DSP的存储器中,然后将DCT变换得到的数据与量化表各个元素做乘法运算,我们使用的是C54xDSP中的MPYR指令,这样可以得到乘法结构的同时对量化值进行四舍五入运算。

3.3 熵编码

数据压缩技术的理论基础是信息论。根据信息论的原理,可以找到最佳数

据压缩编码方法,数据压缩的理论极限是信息熵。如果要求在编码过程中不丢失信息量,即要求保存信息熵,这种信息保持编码又叫做熵保存编码,或者叫熵编码。熵编码把一系列用来表示视频序列的元素符号转变为一个用来传输或是存储的压缩码流。

熵编码是无失真数据压缩,用这种编码结果经解码后可无失真地恢复出原图像。当考虑到人眼对失真不易觉察的生理特征时,有些图像编码不严格要求熵保存,信息可允许部分损失以换取高的数据压缩比,这种编码是有失真数据压缩,通常运动图像的数据压缩是有失真编码。

JPEG压缩算法使用了两种熵编码方法:哈夫曼编码和算术编码。在此我们只介绍哈夫曼编码。哈夫曼编码Huffman方法于1952年问世,迄今为止仍经久不衰,广泛应用于各种数据压缩技术中,且仍不失为熵编码中的最佳编码方法。

哈夫曼编码的理论依据是变字长编码理论。在变字长编码中,编码器的编码输出码字是字长不等的码字,按编码输入信息符号出现的统计概率,给输出码字分配以不同的字长。对于编码输入中,出现大概率的信息符号,赋以短字长的输出码字;对于编码输入中,出现小概率的信息符号,赋以长字长的输出码字。可以证明,按照概率出现大小的顺序,对输出码字分配不同码字长度的变字长编码

12

方法,其输出码字的平均码长最短,与信源熵值最接近,编码方法最佳。

TMS320F2812数字信号处理器是TI公司最新推出的32位定点DSP控制器,是目前控制领域最先进的处理器之一。其频率高达150MHz,大大提高了控制系统的控制精度和芯片处理能力。TMS320F2812芯片基于C/C++高效32位TMS320C28x DSP内核,并提供浮点数学函数库,从而可以在定点处理器上方便地实现浮点运算。在高精度伺服控制、可变频电源、UPS电源等领域广泛应用,同时是电机等数字化控制产品升级的最佳选择。

TMS320F2812采用哈佛总线结构,具有统一的存储模式,包括4M 可寻址程序空间和4M 可寻址数据空间。同时片内具有128 ×16 位的FLASH 存储器和18K ×16 位的SRAM,以及4K×16 位的引导ROM。最大支持外扩512K×16 位的SRAM 和512K×16 位的FLASH。具有两个事件管理器(EVA、EVB)以及外设中断模块(PIE),最大支持96 个外部中断。TMS320F2812 的外部存储器接口(XINTF)被映射到5 个独立的存储空间。

2407和2812是dsp2000系列性能最让人关注的两款芯片,在使用过两种芯片后,特将两款芯片的异同来作一比较。

都是对于电机控制开发使用。由此,在外设上的配备上有较多的相似之处。 相同点:

1 时间管理器,来管理定时器和pwm,及电机光电码盘的接口 2 多路ad来接受传感器的信号

3 通讯接口 spi can sci 使得可以方便的通讯

4 程序存储器和内部ram都有一定的容量满足不同的需求 5 3.3V电压供电,突出了低功耗的节电功能 6 可以进行程序和数据空间的外扩 7 jtag接口相同

8 内核相同 ,方便程序移植 不同:

1 电压 2407 3。3V内核和IO供电,flash烧写电压5V

2812 1。8V或者1.9V内核和3.3VIO供电,flash烧写电压3.3V 上电次序,2407没有关系 ,2812 io先上电,核后上电 2 clk 2407最大40M

2812 最大150M(内核电压1.9V)或者 135M(内核电压 1.8V) 3 下载程序方式 2407 编程器下载 2812 编程器下载 串口 spi 4 cpu 2407为16位处理器 2812为32处理器

13

5 程序和数据空间 2407 flash32k ram2。5K可扩展196K 2812 flash 16×128K ram 16×18K可扩展4M空间 6 时间管理器 2407 定时器16位 一个光电码盘接口 2812 定期器32位 有两个光电码盘接口 7 ad 2407 10位 2812 12位

8 sci 2407 1个 没有缓冲单元 2812 两个 具有缓冲单元

8 can 2407标准can符合2。0B协议 2812增强can和标准can 符合2。0B 9 mcbsp 2407 没有 2812 有

10 语言 2407 汇编 c 2812 汇编 c c++

11 TI支持 2407没有提供较多的例程支持 2812 提供完整的模块例程支持 12 编程风格 2407倾向于模块编程 2812 类编程,并且结构性更强

13 寄存器的保护 2407没有对系统寄存器的保护,2812提供了保护机制 14 在开发环境的帮助文件上看,2407比2812要好点, 2812的寄存器的设置和定 义帮助文件基本没有说明

对dsp及其开发环境及支持的一点建议:

1 dsp不象arm那样把用于外扩的数据地址线和IO功能复用,这对io管脚使用较多的人来讲不方便,还要进行扩展,如果不需要外扩的话,这些线就浪费了 2 对于现在3.3V和5V共存的时期,如果管脚能和5V兼容,那是最好状态了 3 不明白为什么管脚的电源和地总是在相邻的位置上,这样焊不好很容易短路的

4 用程序下载器,下载程序速度很慢,耽误时间

5 开发环境如果能实现软件仿真那就好了,不用非要硬件板了,调试起来那就方便多了

6 作为芯片开发商,最了解自己的芯片的功能,如果能够免费为大家提供各种芯片,尤其是处理器的外设例程,无论对于大家对芯片的上手速度和开发进度来讲都是好事,而且对于芯片的推销也是很好的事情。

3.4 在DSP上实现的DCT与IDCT变换

实验中取一个8×8的图象距阵块为例,首先是变换、量化、熵编码的编码过程,然后是逆变换、逆量化、逆熵编码的解码过程。本实验程序应用了均匀量化。 实验程序: #include

unsigned char imageBlock[64]={

14

55, 60, 55, 54, 60, 68, 81, 114,

116, 62, 52, 49, 53, 96, 132, 102,

146, 144, 141, 141, 146, 151, 154, 162, %读入图象数据 207, 213,214, 130, 94, 114, 131, 139, 159, 223,166, 101, 95, 88, 100, 96, 118, 164, 77, 139, 181, 180, 165, 95, 55, 60,55, 54, 60, 68, 81, 114, 62, 69, 53, 74, 123, 124, 87, 132, };

%均匀量化距阵

short Q_table[64]={ 16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 59, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99}; int Dct( unsigned char *block, short *coeff); %进行DCT和IDCT变换

int Dct( unsigned char *block, short *coeff); int Idct(short *coeff,unsigned char *block);

void main()

{short interBuffer[64]; unsigned char imageBlock2[64]; Dct(imageBlock, interBuffer); %量化

for(i=0;i<64;i++)

{ interBuffer[i] =interBuffer[i]/Q_table[i];} for(i=0;i<64;i++)

15

{ interBuffer[i] =interBuffer[i]*Q_table[i];} Idct(interBuffer,imageBlock2); }

%DCT算法程序

int Dct( unsigned char *block, short *coeff) {

int j1, i, j, k; float b[8]; float b1[8]; float d[8][8]; float f0=(float).7071068; float f1=(float).4903926; float f2=(float).4619398; float f3=(float).4157348; float f4=(float).3535534; float f5=(float).2777851; float f6=(float).1913417; float f7=(float).0975452;

for (i = 0, k = 0; i < 8; i++, k += 8) { for (j = 0; j < 8; j++) { b[j] = (float)block[k+j]; }

/* Horizontal transform */ for (j = 0; j < 4; j++) { j1 = 7 - j;

b1[j] = b[j] + b[j1]; b1[j1] = b[j] - b[j1]; }

b[0] = b1[0] + b1[3]; b[1] = b1[1] + b1[2];

16

b[2] = b1[1] - b1[2]; b[3] = b1[0] - b1[3]; b[4] = b1[4];

b[5] = (b1[6] - b1[5]) * f0; b[6] = (b1[6] + b1[5]) * f0; b[7] = b1[7];

d[i][0] = (b[0] + b[1]) * f4; d[i][4] = (b[0] - b[1]) * f4; d[i][2] = b[2] * f6 + b[3] * f2; d[i][6] = b[3] * f6 - b[2] * f2; b1[4] = b[4] + b[5]; b1[7] = b[7] + b[6]; b1[5] = b[4] - b[5]; b1[6] = b[7] - b[6];

d[i][1] = b1[4] * f7 + b1[7] * f1; d[i][5] = b1[5] * f3 + b1[6] * f5; d[i][7] = b1[7] * f7 - b1[4] * f1; d[i][3] = b1[6] * f3 - b1[5] * f5; }

/* Vertical transform */ for (i = 0; i < 8; i++) { for (j = 0; j < 4; j++) { j1 = 7 - j;

b1[j] = d[j][i] + d[j1][i]; b1[j1] = d[j][i] - d[j1][i]; }

b[0] = b1[0] + b1[3]; b[1] = b1[1] + b1[2]; b[2] = b1[1] - b1[2]; b[3] = b1[0] - b1[3]; b[4] = b1[4];

17

b[5] = (b1[6] - b1[5]) * f0; b[6] = (b1[6] + b1[5]) * f0; b[7] = b1[7];

d[0][i] = (b[0] + b[1]) * f4; d[4][i] = (b[0] - b[1]) * f4; d[2][i] = b[2] * f6 + b[3] * f2; d[6][i] = b[3] * f6 - b[2] * f2; b1[4] = b[4] + b[5]; b1[7] = b[7] + b[6]; b1[5] = b[4] - b[5]; b1[6] = b[7] - b[6];

d[1][i] = b1[4] * f7 + b1[7] * f1; d[5][i] = b1[5] * f3 + b1[6] * f5; d[7][i] = b1[7] * f7 - b1[4] * f1; d[3][i] = b1[6] * f3 - b1[5] * f5; }

for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) {

*(coeff+j*8+i) =(short) d[i][j]; } } return 0; }

%IDCT算法程序

int Idct(short *coeff,unsigned char *block) {

int j1, i, j;

float b[8], b1[8], d[8][8];

18

//d[i][j];

float f0=.7071068; float f1=.4903926; float f2=.4619398; float f3=.4157348; float f4=.3535534; float f5=.2777851; float f6=.1913417; float f7=.0975452; float e, f, g, h;

/* Horizontal */

/* Descan coefficients first */

for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { b[j] = *( coeff + j*8+i); }

e = b[1] * f7 - b[7] * f1; h = b[7] * f7 + b[1] * f1; f = b[5] * f3 - b[3] * f5; g = b[3] * f3 + b[5] * f5; b1[0] = (b[0] + b[4]) * f4; b1[1] = (b[0] - b[4]) * f4; b1[2] = b[2] * f6 - b[6] * f2; b1[3] = b[6] * f6 + b[2] * f2; b[4] = e + f; b1[5] = e - f; b1[6] = h - g; b[7] = h + g;

b[5] = (b1[6] - b1[5]) * f0;

19

b[6] = (b1[6] + b1[5]) * f0; b[0] = b1[0] + b1[3]; b[1] = b1[1] + b1[2]; b[2] = b1[1] - b1[2]; b[3] = b1[0] - b1[3]; for (j = 0; j < 4; j++) { j1 = 7 - j;

d[i][j] = b[j] + b[j1]; d[i][j1] = b[j] - b[j1]; } }

/* Vertical */

for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { b[j] = d[j][i]; }

e = b[1] * f7 - b[7] * f1; h = b[7] * f7 + b[1] * f1; f = b[5] * f3 - b[3] * f5;

g = b[3] * f3 + b[5] * f5; b1[0] = (b[0] + b[4]) * f4; b1[1] = (b[0] - b[4]) * f4; b1[2] = b[2] * f6 - b[6] * f2; b1[3] = b[6] * f6 + b[2] * f2; b[4] = e + f; b1[5] = e - f; b1[6] = h - g; b[7] = h + g;

20

b[5] = (b1[6] - b1[5]) * f0; b[6] = (b1[6] + b1[5]) * f0; b[0] = b1[0] + b1[3]; b[1] = b1[1] + b1[2]; b[2] = b1[1] - b1[2]; b[3] = b1[0] - b1[3]; for (j = 0; j < 4; j++) { j1 = 7 - j;

d[j][i] = b[j] + b[j1]; d[j1][i] = b[j] - b[j1]; } }

for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) {

*(block + i * 8 + j) = (unsigned char)(d[i][j]); } } return 0; }

程序数据: 原始数列矩阵:

进行DCT变换结果:

21

进行DCT逆变换结果:

第4章 离散余弦变换的Matlab实现

4.1离散余弦变换

离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT for Discrete Fourier Transform),但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位。

离散余弦变换经常被信号处理和图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行有损数据压缩。在静止图像编码标准JPEG中,在运动图像编码标准MJPEG和MPEG的各个标准中都使用了离散余弦变换。在这些标准制中都使用了二维的第二种类型离散余弦变换,并将结果进行量化之后进行熵编码。这时对应第二种类型离散余弦变换中的n通常是8,并用该公式对每个8x8块的每行进行变换,然后每列进行变换。得到的是一个8x8的变换系数矩阵。其中(0,0)位置的元素就是直流分量,矩阵中的其他元素根据其位置表示不同频率的交流分类。这是由于离散余弦变换具有很强的\"能量集中\"特性:大多数的自然信号(包括声音和图像)的能量都集中在离散余弦变换后的低频部分,而且当信号具有接近马尔科夫过程(Markov processes)的统计特性时,离散余弦变换的去相

22

关性接近于K-L变换(Karhunen-Loève 变换--它具有最优的去相关性)的性能。 二维DCT正变换和逆变换公式如下(8×8):

F(u,v)141477C(u)C(v)[77f(i,j)cos(2i1)u16(2i1)u16cos(2j1)v16(2j1)v16i0j7

f(i,j)C(u)C(v)[F(u,v)coscosu0v7C(u),C(v)12 (u,v=0) (其他情况C(u),C(v)1)

4.2 Matlab仿真

Matlab提供了dct2函数和idct2函数用于进行二维DCT和二维IDCT的计算,由于时间紧迫,用Matlab实现此仿真比较简单,而且我对Matlab比较熟悉,故用Matlab对离散余弦变换和压缩这块进行仿真。 DCT与IDCT变换程序:

RGB=imread('Lena64.bmp'); %读入64×64Lena图象 figure(1); imshow(RGB);

DCT=dct2(RGB); %进行DCT变换 figure(2);

imshow(log(abs(DCT)),[]);

IDCT=idct2(DCT); %进行IDCT变换 figure(3);

imshow(abs(IDCT),[]) 仿真结果:

图1-2原图象 图1-3 DCT变换 图1-4 IDCT图象 结果分析:

经过DCT变换后的图象完全离散,再经过IDCT还原后,图象基本复原,但也存在差别。

23

第5章 心得体会

如果说任何机会都是需要去创造出来的话,那么那个创造者,其实就是你自己。时间过得真快,转眼间已经有两个星期了,现在回想起来,往事还历历在目。但是不可否认的却是这些经历将会是我人生当中不可多得的财富和经验的累积。图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大。

这两周的课程设计实习周终于结束了,通过两周以来同学和老师的共同努力,我们终于完成了设计要求。但大家脸上的表情都是欣慰和欢喜的,到底工夫不负有心人。回想过去两周,这里面的辛苦只有做是课程设计的人才明白,才能体会。通过这种综合性训练,要学生达到以下的目的和要求:

1.结合课程中所学的理论知识,独立设计方案。达到学有所用的目的。 2.学会查阅相关手册与资料,通过查阅手册和文献资料,并掌握合理选用的原则,培养独立分析与解决问题的能力。

这次设计我们学到了很多东西,虽然作出来的东西很基础,但是我们加深了对知识的理解和掌握。作为一名大四的学生,我觉得能做类似的课程设计是十分有意义的。同时这是一次团队合作开发过程,一次难得的经历。通过此次设计试验也着重能够学到许多东西。

机会谁都有,关键在于自己怎么利用一些外部条件去创造。与其等待机会的

24

来临,还不如自己去创造机会,变被动为主动,事情才能成功。过去在自己的心里,老是有种恐惧的心理在作祟,怀疑自己的能力,认为自己不能胜任某件事情,甚至连尝试的胆量都没有。通过在保险公司的实习,我也明白了只有抛弃心中的恐惧,拿掉不可能,不断培养自己锻炼自己,才能在这个行业中走得更远。自己本身还是存在着很大的欠缺,这样才能不断地提升自身的素质、素养,不断地改进自己的知识结构水平,让自己投入到理论学习中,好好积累基础理论知识,方能厚积薄发。也将随着自身能力水平和环境的不断变化而更加完善。最后感谢老师的热心指导和帮助。

参考文献

1.邹彦主编. DSP原理及应用,电子工业出版社。 2.谭浩强编 C语言程序设计 清华大学出版社。

3.TMS320C54x DSP Reference Set, Volume 1: CPU TI Coperation 4.TMS320C54x Code Composer Studio Tutorial

5.TMS320C54x DSP Reference Set, Volume 3: Algebraic Instruction Set 6.TMS320C54x Optimizing C Compiler User’s Guide

25

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务