数字图像处理在DSP上的实现
- 格式:doc
- 大小:133.50 KB
- 文档页数:22
通过DSP实现对数字图像的增强处理与应用分析一、基本原理图像增强是指按特定的需要突出一幅图像中的某些信息,同时削弱或去除某些不需要的信息,它是一种将原来不清晰的图像变得清晰或强调某些感兴趣的特征,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果的图像处理方法。
图像增强技术基本上可分成两大类:频域处理法和空域处理法。
频域处理法的基础是卷积定理,它是将图像看作波,然后利用信号处理中的手段对图像波进行处理。
空域处理法的基础是灰度映射变换,它是直接针对图像中的像素进行处理,所用到的映射变换取决于增强的目的,例如增加图像的对比度,改善图像的灰度层次等处理均属于空域处理法的范畴。
线性空域锐化滤波法是一种经典且有效的图像增强技术。
最常用的线性空域锐化滤波器是一种线性高通滤波器,其工作原理在于让图像的低频分量受到抑制而不影响高频分量,由于低频分量对应于图像中灰度值缓慢变化的区域,和图像的整体特性无关,仅与图像整体对比度以及平均灰度值等有关系,所以该滤波器把这些分量滤去后,使得图像进一步锐化。
然后通过增强图像中被模糊的细节以达到目标和背景易于分离的目的。
在空域内进行滤波是利用模板和图像进行卷积来实现的,其主要步骤如下:(1)将模板在图像中漫游,实现模板的中心与图像中某个像素位置重合;(2)将模板上系数与模板下的图像的对应像素相乘;(3)将所有乘积的结果相加;(4)将相加之和(模板的输出响应)赋给图像中对应模板中心位置的像素。
例如图1(a)给出一幅原始图像的一部分,其中sx 表示像素的灰度值。
图1(b)是一个3X3 的模板,模板内的kn 表示为模板系数。
如将k0 所在位置与图像中灰度值为s0 的像素重合(即把模板中心放在图中的(x, y)位置),则模板的输出响应R 表示为:R=k0s0+k1s1+……+k8s8 并且把R 值赋给增强图,作为(x, y)位置处的灰度值,如图1(c)所示。
如果对原图像的每个像素都这样进行处理就可以得到所有位置增强后的新灰度值。
《现代信号处理课程设计》课程设计报告设计题目 DSP的数字图像处理技术实现目录第一章绪论-----------------------------------------------31.1.1 课程设计目的及任务------------------------31.1.2 阈值分割的实现方法------------------------4 第二章视频采集与显示相关概念-----------------------------52.1 帧和场-------------------------------------------52.2 YCbCr及其采样格式--------------------------------5 第三章 DSP平台及软件开发---------------------------------73.1 DSP平台-----------------------------------------73.1.1 DSP发展简介-------------------------------73.1.2 TMS320F2812 DSP芯片简介-------------------83.2 F2812 DSP软件开发-------------------------------93.2.1 F2812 软件开发平台CCS---------------------93.2.2 F2812 DSP软件开发流程---------------------10 第四章阈值分割在MATLAB上的实现--------------------------12 第五章阈值分割在DSP上的实现----------------------------135.1 系统流程与实现方案------------------------------135.1.2 初始化模块--------------------------------145.1.3 图像阈值处理及输出模块--------------------165.2 工程中的主要库和文件(详见附录)-----------------185.2.1 工程中的库(.lib)--------------------------185.2.2 工程中的主要文件--------------------------185.3 程序运行及结果验证------------------------------19 附录:各源程序代码及其详细分析----------------------------20 总结----------------------------------------------------32第一章绪论1.1.1 课程设计目的及任务本课程设计教学所要达到的目的是:1)掌握如何使用DSP仿真平台;2)掌握DSP内部结构和工作原理;3)熟悉DSP的指令系统;4)熟悉用DSP实现各种基本算法。
基于DSP的数字图像处理系统的设计与实现文:杨文胜李梅时间:2008—10-7 17:20:49安徽广电信息网络有限责任公司阜阳分公司摘要:为满足高数据量图像处理需求,提出并设计了以TMS320DM642为处理器的数字图像处理硬件系统,并在DSP/BIOS上配以实时图像处理软件系统,实现数字图像处理。
本文阐述了系统模块的构成、软件系统的设计,在此平台上,采集图像并运用优化算法对图像进行增强、分割、边缘检测,结果表明系统运行正常。
关键词:TMS320DM642 图像处理DSP一、引言随着计算机科学技术发展和相关理论的不断完善,数字图像处理技术被广泛应用于可视电话、电视会议、监控系统、商用及工业生产领域中.在技术要求中,一个突出的问题就是数据量庞大、数据处理相关性高、实现实时比较困难。
而实时性的主要因素为图像处理的速度,即要求数字图像处理系统要有强大的运算能力.高性能DSP 的发展为实时的图像处理提供了一个解决方法。
高速DSP 不仅可以满足在运算性能方面的需要,而且由于DSP 的可编程性,还可以在硬件一级获得系统设计的极大灵活性。
TI公司的TMS320DM642是一款专门面向多媒体应用的专用DSP。
该DSP时钟高达600 MHz,8个并行运算单元,处理能力达4800MIPS;采用二级缓存结构,具有64位外接存储器接口,兼容JTAG边界扫描,为了面向多媒体应用,还集成了3个可配置的视频端口.采用DM642为核心设计的数字图像处理系统,能够很好的满足图像处理要求。
二、系统硬件平台框架系统的整体硬件框图如图1所示,整个系统是以TMS320DM642为核心构成的应用系统.包括DM642处理器芯片、视频编解码器芯片、其他外围电路。
DM642通过I2C总线对视频编解码器进行配置,使其能够满足系统的需求;通过VP口接收和传送视频数据以及同步控制信号;通过EMIF总线实现外部存储器的扩展,SDRAM 用于运行时的程序代码和数据的存储,FLASH用于系统引导程序的存储。
数字图像处理实验一、实验目的1.了解数字图像处理的基本原理;2.学习灰度图像反色处理技术;3.学习灰度图像二值化处理技术;4.掌握数字图像处理在DSP上的实现。
二、实验设备计算机,CCS 2.0版软件,DSP仿真器,实验箱。
三、实验要求要求实现灰度图像的读入、反色处理和二值化处理,并将原灰度图像、反色处理后和二值化处理后的图像显示出来。
四、实验步骤和内容1.实验准备(1)DSP仿真器与计算机连接好;(2)将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1相连接;(3)打开SEED-DTK5502的电源。
观察SEED-DTK_MBoard单元的+5V,+3.3V,+15V,-15V的电源指示灯以及SEED-DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。
(4)复习数字图像处理的基本原理,重点学习灰度图像反色处理和二值化处理相关的理论知识;(5)在计算机E盘,建立“Tu”子目录,将“Lena64.bmp”文件拷入;2.具体实验步骤(1)打开CCS软件,进入CCS的主界面;(2)按照在CCS环境下进行DSP程序开发的一般过程和实验要求编写程序;首先在E盘建立一个自己的工作目录,然后运行Project/New命令,新建一个工程文件(扩展名为.pjt);接着运行File/New/Source File命令新建扩展名为.c的主程序和扩展名为.cmd的链接命令文件;将C的运行支持库文件rts55x.lib(位于C:\ti\c5500\cgtools\lib目录下)复制到E盘自己建立的工作目录下;(3)运行Project /Add Files to Project命令,将扩展名为.c的主程序、扩展名为.cmd的链接命令文件和C的运行支持库文件rts55x.lib添加到工程文件当中去;在工程管理窗口中,双击Source文件夹下的C语言源文件,可以在右边窗口中看到该文件的具体内容,如下图3-4所示;然后可以继续编辑、修改源程序,以便满足实验要求。
论文题目: 基于DSP的数字图像处理专业:学号:姓名:老师:成绩:目录摘要●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●● 2 1基于DSP的图像处理●●●●●●●●●●●●●●●●●●●●●2 1.1图像处理的基本概念●●●●●●●●●●●●●●●●●●● 2 1.2图像处理的研究背景●●●●●●●●●●●●●●●●●●● 2 2基于DSP的图像处理原理简介●●●●●●●●●●●●●●●● 3 3图像处理各领域应用●●●●●●●●●●● ● ●●●●●●●●●3 4数字图像处理技术主要问题●●●●●●●●● ●●●●●●●● 4 5图像处理研究内容● ●●●●●●●●●●●●● ●●●●●●●● 4 6 TMS320C6000 DSP芯片●●●●●●●●●●●●● ●●●●●●● 5 6.1 DSP芯片的特点●●●●●●●●●●●●●●●●●●●●● 5 6.2基于DSP的图像处理系统●●●●●●●●●●●●●●●● 6 6.3图像处理的硬件系统● ●●●●●●●●●●●●●● ●●●●● 76.3.1 TMS320C6000 DSP芯片的硬件系统●●●●● ●●●●● 76.3.2 TMS320C6000的硬件结构简介●●●●●●● ●●●●● 76.3.3 TMS320C6000系列CPU结构●●●●●●●● ●●●●● 7 6.4算术单元●●●●●●●●●●●●●●●●●●●●● ●●●●● 8 6.5总线结构●●●●●●●●●●●●●●●●●●●●● ●●●●● 8 6.6专用寻址单元● ●●●●●●●●●●●●●●●●●●●●●●● 9 6.7流水处理●●●●●●●●●●●●●●●●●●●●●●●●●● 9 6.8大容量片内存储器●●●●●●●●●●●●●●●●●●●●● 10 6.9零消耗循环控制●●● ●●●●●●●●●●●●●●●●●●● 10 7基于DSP的图像处理实现●●●●●●●●●●●●●●●●●● 107.1图像处理分类● ●●●●●●●●●●●●●●●●●●●●●● 107.2图像直方图统计● ●●●●●●●●●●●●●●●●●●● 10 8基于DSP数字图像具体实例(实际结果见附录)● ●●●●● 118.1图像反色●●●●●●●●●●●●●●●●●●●●●●●● 118.2图像二值化自适应阀值法●● ●●●●●●●●●●●●●● 11 9论文总结● ●●●●●●●●●●●●●●●●●●●●●●●●●● 12 10参考文献● ●●●●●●●●●●●●●●●●●●●●●●●●● 13 11附录(DSP数字图像处理实验结果)●●●●●●●●●●●● 1411.1图像反色实验●●●●●●●●●●●●●●●●●●●●● 1411.2用固定值128作为阀值●● ●●●●●●●●●●●●●● 1411.3用图像的灰度均值作为阀值●●●●●●●●●●●●●● 1511.4用自适应阀值法找出最佳阀值●●●●●●●●●●●●● 15摘要:随着计算机、多媒体和数据通信技术的高速发展,数字图像技术近年来得到了极大的重视和长足的发展,并在科学研究、工业生产、医疗卫生、教育、娱乐、管理和通信等方面取得了广泛的应用。
课程设计任务书成绩评定表摘要以TMS32C5501为例,介绍了其系列DSP(digital signal processing)芯片HPI(host port interface)口的各个组成部分及其功能,并以AT89C51单片机作为主处理机,阐述了与TMS320C5501之间实现数据共享的方法,成功地解决了主处理机通过HPI接口对DSP 内部数据进行在线修改和实时监控的问题。
最后给出了如何用HPI口实现程序的加载引导,以提高程序运行速度的方法。
关键词:TMS320C5501,DSP,HPI口;目录绪论....................................................................................... 错误!未定义书签。
1、基本原理 (2)1.1 数字图像处理常用方法 (2)1.2 数字图像处理的优点 (3)1.3 数字图像缩小基本原理 (4)2、TMS320C5X的硬件结构 (4)2.1 C55X的CPU体系结构 (5)2.2 指令缓冲单元(I) (5)2.3 指令缓冲单元(P) (5)2.4 指令缓冲单元(A) (6)2.5 指令缓冲单元(D) (6)3、数字图像缩小设计方法 (8)3.1 设计思路 (8)3.2 实验步骤 (8)4、数字图像缩小的CCS实现 (10)4.1 简述CCS环境 (10)4.1.1 CCS主要特点 (10)4.1.1 DSP/BIOS和API函数以及RTDX插件 (9)4.2 CCS配置 (10)4.3 CCS环境中工程文件的使用 (10)4.3.1 建立工程文件 (10)4.3.2 创建新文件 (13)4.3.3 向工程项目中添加文件 (13)4.4编译链接和运行目标文件 (14)4.4.1对程序进行编译链接 (14)4.4.2装载OUT文件 (14)5运行结果 (14)结论 (15)附录程序清单 (23)参考文献 (24)1、课题分析DSP作为一种先进的可编程处理器,近几年来应用极其广泛。
DSP技术及应用课程设计报告课题名称:数字图像处理——二值化学院:电气信息工程学院专业:通信工程班级:姓名:学号:指导教师:董胜成绩:日期:2014.6.9-2014.6.20目录一、设计目的及要求 (2)二、设计所需的软件介绍 (2)三、设计原理 (3)四、程序流程图 (6)五、设计程序 (7)六、处理后的效果展示 (11)七、课程设计心得 (15)八、参考文献 (16)一、设计目的及要求:目的:1、掌握CCStudio3.3的安装和配置;2、掌握数字图像处理的原理、基本算法和各种图像处理技术;3、掌握图像的灰度化、二值化和灰度直方图的原理及编程思路;4、掌握图像滤波(图像锐化、中值滤波、边缘检测、特征识别等)的基本原理及编程方法及编程思路;要求:1、能够根据设计题目要求查阅检索有关的文献资料,结合题目选学有关参考书。
查询相关资料,初步制定设计方案。
2、用CCS软件进行C语言设计相关算法,实现对图像的采集及处理。
3、编写相应的C语言程序实现各种图像处理。
二、设计所需的软件介绍:英文全称:Code Composer Studio 中文译名:代码调试器,代码设计套件。
CCS的全称是Code Composer Studio,它是美国德州仪器公司(Texas Instrument,TI)出品的代码开发和调试套件。
TI公司的产品线中有一大块业务是数字信号处理器(DSP)和微处理器(MCU),CCS便是供用户开发和调试DSP和MCU程序的集成开发软件。
Code Composer Studio v3.3 (CCStudio v3.3) 是用于 TI DSP、微处理器和应用处理器的集成开发环境。
Code Composer Studio 包含一整套用于开发和调试嵌入式应用的工具。
它包含适用于每个 TI 器件系列的编译器、源码编辑器、项目构建环境、调试器、描述器、仿真器以及多种其它功能。
Code Composer Studio IDE 提供了单个用户界面,可帮助您完成应用开发流程的每个步骤。
基于DSP的图像处理15级电气二班曹永鸿1.1图像处理的基本概念图像处理是指安之低昂的需要突出一幅图像中的某些信息,同时削弱或去除默写不需要的信息,他是一种将原来不清晰的图像变得清晰或强调某些感兴趣的特征,一直不感兴趣的特征,是指改善图像质量丰富信息量,加强图像判读和识别效果的图像处理方法。
图像处理就是增强图像中用户感兴趣的信息,其主要目的有两个:一是改善图像的视觉效果,提高图像成分清晰度;二是使图像变得更有利于计算机处理。
1.2.1 TMS320C6000 DSP芯片的硬件系统本文选择TI公司的TMS320C6000系列开发板,作为算法实现的嵌入式硬件平台。
TMS320C6000系列DAP是美国TI公司于1997年推出的新一代高性能的数字信号处理芯片,具有很高的工作频率和极强的并行处理能力。
片内有A、B两组共8个并行处理单元,每组内分为L、M、D、S四个单元,每组处理单元结合同侧的寄存器和数据通道,构成了一个完整的数据处理单元。
C6000处理器的A、B两个王正德数据处理单元之间可以通过两条数据交叉通路进行数据交叉访问,所以这样的硬件结构非常适合实现数据的并行处理,利于实现数据实时处理。
1.3基于DSP的图像处理实现图像处理技术基本上可以分成两大类:品与处理法和空域处理法。
频域处理法的基础是卷积定理,它是将图像看做波,然后利用信号处理中的手段对图像波进行处理。
空域处理法的基础是灰度映射变换,它是直接针对图像中的像素进行处理,所用到的映射变换拒绝与增强的目的,例如增强图像的对比度,改善图像的灰度层次等处理均属于空域处理法的范畴。
1.3.2数字图像边缘检测 sobel 算子这种做法能够在增强目标边缘细节的同时以削弱部分高频成分的噪声。
Sobel边缘检测增强算法的变异是从抑制噪声并增强目标的方向入手。
从理论上来说,本方法可以大大提高对红外目标的探测识别能力。
另外,从最终增强的结果与原始图像比较情况来说,图像的每个区域的细节都得到了很好的提升。
实验目的:1. 学习使用MATLAB读取图像,并输出.h文件2. 学习使用TI IMGLIB库函数的使用方法3. 理解掌握Sobel算子进行图像边缘检测的DSP实现实验原理:两个具有不同灰度值的相邻区域之间总存在边缘,边缘是灰度值不连续的表现。
由于边缘是图像上灰度变化最剧烈的地方,边缘检测就是充分利用了这个特点,对图像各像素点进行微分或求二阶微分来确定边缘像素点。
一阶微分图像的峰值处对应着图像的边缘点;二阶微分图像的过零点处对应着图像的边缘点。
为了提取图像边缘,我们定义了图像的梯度为梯度算子,常用的梯度算子有Robert 算子、Sobel算子、Prewitt算子和拉普拉斯算子等。
实验步骤:一、对lenna.bmp图像的DSP处理1. 用MATLAB读取图像并输出.h文件。
本实验是对经典图像lenna.bmp的读取和数据分析。
程序如下:[I,map]=imread('lenna.bmp');imshow(I)It(:,:,1) = I(:,:,1)';I=double(I');fid=fopen('lenna.h','w');fprintf(fid,'/*lenna image 256*256 */\n\n'); fprintf(fid, sprintf('short lenna[256][256] = {\n')); for ii=1:65536fprintf(fid, '%3d,', I(ii)); if 0 == mod(ii, 8) fprintf(fid, '\n');endendfprintf(fid,'\n};\n'); fclose(fid);运行之后将产生一个lenna.h文件,文件内存取了256*256个数据,供CCS调用。
2. 使用TI IMGLIB实现Sobel边缘检测。
基于DSP的数字图像处理设计DSP一方面是Digital Signal Processing的缩写,意思是数字信号处理,就是指数字信号理论研究。
DSP另一方面是Digital Signal Processor,意思是数字信号处理器,就是用来完成数字信号处理的器件。
DSP的发展概况最初的DSP器件只是被设计成用以完成复杂数字信号处理的算法。
DSP器件紧随着数字信号理论的发展而不断发展。
在20世纪60年代,数字信号处理技术才刚刚起步。
60年代中期以后,快速傅里叶算法的出现及大规模集成电路的发展大大促进了DSP技术与器件的飞速发展。
DSP器件的发展大致可分为三个阶段:(1)1980年前后的雏形阶段。
(2)1990年前后的成熟阶段。
(3)2000年之后的完善阶段DSP器件的特点1.高速、高精度运算能力(1)硬件乘法累加操作,在一个指令周期内可完成一次乘法和一次加法。
(2)哈弗结构和流水线结构。
哈佛结构的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。
与两个存储器相对应的是系统中设置了程序总线和数据总线,从而使数据的吞吐率提高了一倍。
由于程序和存储器在两个分开的空间中,因此取指和执行能完全重叠。
流水线与哈佛结构相关,DSP芯片广泛采用流水线以减少指令执行的时间,从而增强了处理器的处理能力。
使取指、译码和执行等操作可以重叠执行,处理器可以并行处理二到四条指令,每条指令处于流水线的不同阶段。
(3)硬件循环控制。
大多数的DSP都有专门的硬件,用于零开销循环。
所谓零开销循环是指处理器在执行循环时,不用花时间去检查循环计数器的值、条件转移到循环的顶部、将循环计数器减1。
(4)特殊的寻址模式。
DSP 处理器往往都支持专门的寻址模式,它们对通常的信号处理操作和算法是很有用的。
例如,模块(循环)寻址(对实现数字滤波器延时线很有用)、位倒序寻址(对FFT很有用)。
数字图像处理在DSP上的实现(旋转)1 绪论1.1设计目的图像旋转是一种应用广泛的数字图像处理技术,随着应用水平的不断提高,对在嵌入式系统中实现高分辨率大图像旋转的需求也越来越高。
如在航空领域的高分辨率数字地图图像的显示处理过程中,由于现有的显示芯片均不能支持图像旋转功能,就需要在资源有限的嵌入式平台上实现大幅面地图图像的实时旋转。
采用DSP平台是一种实现方式,具体实现时需仔细考虑两个方面的问题,一是选用计算量小的旋转算法,二是充分发挥DSP平台强大的并行计算能力。
1.2设计任务1.能从计算机上读取图片。
2.编写图像旋转程序,在TMS320C5509上实现。
2 设计原理及分析2.1设计原理目前,已经有很多有效降低计算量的图像旋转算法,基于图像线性存储结构的旋转方法就是其中之一。
然而,在DSP平台上,有限的高速存储资源限制了这些算法效率的直接发挥,需要针对算法及DSP平台的性能结构特点进行高效的数据调度。
对于图像旋转问题而言,数据调度还需要克服由于存在大量非连续图像像素地址访问而严重影响DSP数据存取及CPU效率发挥的问题。
这是图像旋转本身的特殊性,在其他图像处理技术中是不存在的。
由DSP的结构特点可知,只有在数据和程序均位于片内存储器当中的条件下,DSP的效率才能得到最大化的发挥。
在大图像旋转算法中,由于涉及的图像数据量远大于DSP的片内存储器容量,源图像和最终视口图像等数据必须被存放在片外存储器中。
在这种情况下,为了保证DSP CPU 高速处理能力的发挥,必须优化数据流,将源图像分块,依次搬移至片内处理,并设法保证CPU 当前要处理的图像数据块已经事先在片内存储器中准备好了。
因此在算法整体优化结构上采用Ping-Pong双缓冲技术,利用EDMA与CPU并行工作来隐藏图像数据块在片内和片外之间的传输时间,使CPU能连续不断地处理数据,中间不会出现空闲等待。
传统的图像旋转一般通过矩阵乘法实现:其中,α为旋转角度。
dsp图像处理实验报告DSP图像处理实验报告一、引言数字信号处理(DSP)是一种用于处理数字信号的技术,广泛应用于各个领域。
图像处理是DSP的一个重要应用,通过对图像进行数字化处理,可以实现图像增强、边缘检测、目标识别等功能。
本实验旨在通过DSP技术对图像进行处理,探索图像处理算法的实际应用。
二、实验目的1. 了解数字信号处理在图像处理中的应用;2. 掌握DSP平台的基本操作和图像处理算法的实现;3. 进一步熟悉MATLAB软件的使用。
三、实验环境和工具本实验使用的DSP平台为TMS320C6713,开发环境为Code Composer Studio (CCS)。
图像处理算法的实现主要依赖于MATLAB软件。
四、实验步骤1. 图像采集与预处理首先,通过CCD摄像头采集一张待处理的图像,并将其转化为数字信号。
然后,对图像进行预处理,包括去噪、灰度化等操作,以提高后续处理的效果。
2. 图像增强图像增强是指通过一系列算法和技术,提高图像的质量、清晰度和对比度。
在本实验中,我们采用了直方图均衡化算法对图像进行增强。
该算法通过对图像像素值的统计分析,调整像素值的分布,使得图像的对比度更加明显,细节更加突出。
3. 边缘检测边缘检测是图像处理的重要环节,可以用于目标识别、图像分割等应用。
在本实验中,我们采用了Canny算法进行边缘检测。
Canny算法是一种经典的边缘检测算法,通过对图像进行多次滤波和梯度计算,得到图像的边缘信息。
4. 目标识别目标识别是图像处理中的关键任务之一,可以应用于人脸识别、车牌识别等领域。
在本实验中,我们以人脸识别为例,使用了Haar特征分类器进行目标识别。
Haar特征分类器是一种基于图像特征的分类器,通过对图像进行特征提取和分类器训练,可以实现对目标的快速准确识别。
五、实验结果与分析通过对图像进行处理,我们得到了增强后的图像、边缘检测结果和目标识别结果。
经过对比分析,我们发现图像增强算法能够有效提高图像的对比度和清晰度,使得图像更加易于观察和分析。
本科毕业论文(科研训练、毕业设计)题目:DSP 图像处理算法的实现-III姓名:翁彬彬学院:信息技术与科学学院系:电子工程系专业:电子信息工程专业年级:2004学号:04140059指导教师(校内):杨涛职称:教授指导教师(校外):职称:2008 年 5 月20 日1摘要本文研究的是基于TI 公司DSP 硬件平台的数字图像处理技术。
考虑到可移植性,采用C 语言编写代码。
采用空域法设计图像处理的算法,所涉及运算包括卷积,相关,中值滤波等。
由于图像处理要处理大量的数据,需用DSP 处理器来提高效率。
TMS320C6000 系列DSP 是TI 公司最新推出的一种并行处理的数字信号处理器,其特有的代码优化器也使得C 优化更加方便。
我们根据TMS320C6000 系列的结构特点,对C 代码进行一系列优化,例如:选用适当的编译器选项,内联函数的使用,字处理技术,打开循环,流水线技术,线性汇编等一系列方法对C 代码进行优化,从而极大地提高了数字图像处理的工作效率。
关键字数字图像处理TMS320C6000 系列DSP C 语言优化Abstract: In this thesis, based on the DSP hardware platform of TI Co., the algorithms of digital image processing were studied. C language was used to program these algorithms for the purpose of maximizing the portability of program modules. These algorithms, which include convolutions, correlations and medium filters, were designed based on spatial patterns. To make real-time image processing possible, DSP processors are used to process the massive data in images. The TMS320C6000 DSPs from TI Co. are parallel digital image processors, of which the C-complier makes the compilation and optimization of C-codes seamless and highly efficient. The C-code optimization was highly improved based on the unique designing features of TMS320C6000 series, such as proper choices of compiling options, the utility of intrinsics, the word processing technology, loop opening, pipeline technologies, linear assembly and etc.Keywords: Digital image processing technology TMS320C6000 C code optimization2目录:引言 (4)第一章数字图像处理的基本知识 (4)1.1 数字图像处理简述 (4)1.2 几种处理算法 (4)第二章TMS320C6000DSP芯片的特点 (6)2.1 数字信号处理器的特点………………………………………… ..62.2 TMS320C6000 的硬件结构简介 (7)2.3 TMS320C6000 指令系统................................................10.第三章基于TMS320C6000DSP系列的代码优化 (11)3.1 第一个阶段代码优化 (11)3.2 第二个阶段代码优化 (13)3.3 第三个阶段代码优化 (17)第四章对所编C代码进行优化处理 (20)4.1 小循环的打开 (20)4.2 较大循环的打开 (21)结论 (22)致谢语 (24)参考文献 (24)3随着计算机技术的发展,数字图像处理技术以其广阔的应用领域,受到人们越来越多的关注,本次实验是以DSP 为平台,对数字图像处理系统进行仿真。
摘要图像放大是一种应用广泛的数字图像处理技术,随着应用水平的不断提高,对在嵌入式系统中实现图像的清晰放大的需求也越来越高。
如在安保领域的高分辨率数字图像的显示处理过程中,由于现有的显示效果不够理想,就需要在对图像进行清晰的放大。
采用DSP平台是一种实现方式,它能充分发挥DSP平台强大的并行计算能力。
关键词: DSP CCS软件数字图像处理目录1.数字图像处理背景与介绍 (1)1.1图像处理的研究背景 (1)1.2图像处理国内外研究现状 (2)2.课程设计的目的与原理 (4)2.1设计目的 (4)2.2设计任务 (4)2.2设计原理 (5)3 软件程序 (6)3.1主程序 (6)3.2初始化和读取图像程序 (12)4 运行结果分析 (13)5.结论 (14)参考文献 (15)基于DSP的数字图像处理(放大)1.数字图像处理背景与介绍1.1图像处理的研究背景数字图像处理又称为计算机图像处理在国外最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。
数字图像处理作为一门学科大约形成于20世纪60年代初期。
早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。
图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。
首次获得实际成功应用的是美国喷气推进实验室(JPL)。
他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球表面地图,获得了巨大的成功。
随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、彩色图及全景镶嵌图,获得了非凡的成果,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的诞生。
在以后的宇航空间技术,如对火星、土星等星球的探测研究中,数字图像处理都发挥了巨大的作用。
DSP技术及应用实验报告学院:班级:姓名:学号:指导老师:完成日期:数字图象处理实验一、实验目的1. 学习使用实时运行库并了解数字图象处理的基本原理;2. 熟悉用C和汇编混合编程的方法及混合编程的调试方法;3. 学习灰度图象反色处理技术及其二值化处理技术。
二、实验环境1. 集成开发环境Code Composer Studio2.0(简称CCS)2. 实验程序DSP54X-28-Tuxiangchuli.c,DSP54X-28-Tuxiangchuli.cmd,rts.lib,c5402.gel(说明同前)。
三、实验步骤实验操作流程参照前面实验。
1. 建立新项目DSP54X-28-Tuxiangchuli.pjt,添加所需文件。
双击打开源程序DSP54X-28-Tuxiangchuli.c,找到打开图片语句,根据源语句及Tupian文件夹所在位置,重新设置好图片的打开路径(保存时注意文件属性。
必须修改好,否则会要求手动输入64*64个数据,如出现这种情况,通过任务管理器关闭CCS后重新打开修改)。
2. 改设置:Build option子菜单linker中Basic项Autoinit Model 改为load-time Initialization或Run-time Initialization(用No Initialization 得不到正确的图像)。
3. 编译连接Build后, 装载得到的.out程序。
主程序中,在三个“i=0”处设置三个断点,如下图所示。
选择Debug_>Go main,使程序从main处开始执行。
单击“Run”,程序运行到第一个断点处停止;4. 用View/Graph/Image打开一个图形观察窗口,以观察程序载入的“Lena64.bmp”图像,该图像在“....\Tupian”目录中;按下图设置该观察窗口,以观察变量y为64*64的二维数组(也可在程序执行前就打开图形窗口,设置完确定时对y选择“否”即可):下图为“Lena64.bmp”在CCS环境下第一个断点处的显示图像;单击“Run”,程序运行到第二个断点处停止,这时可在图形观察窗口中,观察原图像经反色处理后的结果图像,如下图:再单击“Run”,程序运行到第三个断点处停止,这时可在图形观察窗口中,观察到原图像二值化处理后的结果图像,本程序中,二值化处理阀值设为128,见下图:5.修改程序,对图像做其它处理(如反向显示,上下颠倒等),记录实验数据及结果,写出报告。
DSP 在图像处理中的应用The Application of DSP in Image Processing刘 治3 李 建 田 伟 LIU Zhi LI Jan TIAN Wei摘 要 本文以TI T MS320C54X DSP 为例描述了DSP 作为优秀的数字信号处理平台所具备的特点,并在此基础上介绍了在DSP 上实现数字图像处理所需的方法及特殊算法。
关键词 DSP 芯片 T MS320C54X 图像处理 Abstract This paper presents the excellent characteristics of DSP chips using TI T MS320C54X DSP as an exam 2ple.And s ome methods and alg orithms ,which w ould be im plemented on DSP chips in image processing ,are intro 2duced.K eyw ords DSP chips T MS320C54X Image processing.3山东大学信息科学与工程学院 250100 数字图像处理在当今工业及医疗领域的应用日益广泛,从而对图像处理系统的实时性和准确性提出了更高的要求。
DSP 芯片以其适应于高速数字信号处理的内部结构,在图像处理领域发挥了不可替代的作用。
1 DSP 芯片简介当前数字信号处理领域并存两大类处理器:通用处理器(G PP )和专用处理器(DSP ),通用处理器主要应用于PC 机中,而DSP 器件主要应用于便携式、嵌入式设备中。
消费类电子产品对器件成本和功耗要求苛刻,DSP 器件正是在这两方面较通用处理器有优势。
DSP 芯片采用能提供多条地址及数据总线的哈佛结构而摒弃了以往的冯・诺依曼结构(两种结构的简单比较见图1)。
由于片内存储器比片外存储器快,在通用处理器中广泛使用的高速缓存也被引入到DSP 芯片中来。
数字图像处理在DSP上的实现(旋转)1 绪论1.1设计目的图像旋转是一种应用广泛的数字图像处理技术,随着应用水平的不断提高,对在嵌入式系统中实现高分辨率大图像旋转的需求也越来越高。
如在航空领域的高分辨率数字地图图像的显示处理过程中,由于现有的显示芯片均不能支持图像旋转功能,就需要在资源有限的嵌入式平台上实现大幅面地图图像的实时旋转。
采用DSP平台是一种实现方式,具体实现时需仔细考虑两个方面的问题,一是选用计算量小的旋转算法,二是充分发挥DSP平台强大的并行计算能力。
1.2设计任务1.能从计算机上读取图片。
2.编写图像旋转程序,在TMS320C5509上实现。
2 设计原理及分析2.1设计原理目前,已经有很多有效降低计算量的图像旋转算法,基于图像线性存储结构的旋转方法就是其中之一。
然而,在DSP平台上,有限的高速存储资源限制了这些算法效率的直接发挥,需要针对算法及DSP平台的性能结构特点进行高效的数据调度。
对于图像旋转问题而言,数据调度还需要克服由于存在大量非连续图像像素地址访问而严重影响DSP数据存取及CPU效率发挥的问题。
这是图像旋转本身的特殊性,在其他图像处理技术中是不存在的。
由DSP的结构特点可知,只有在数据和程序均位于片存储器当中的条件下,DSP 的效率才能得到最大化的发挥。
在大图像旋转算法中,由于涉及的图像数据量远大于DSP的片存储器容量,源图像和最终视口图像等数据必须被存放在片外存储器中。
在这种情况下,为了保证DSP CPU高速处理能力的发挥,必须优化数据流,将源图像分块,依次搬移至片处理,并设法保证CPU当前要处理的图像数据块已经事先在片存储器中准备好了。
因此在算法整体优化结构上采用Ping-Pong双缓冲技术,利用EDMA与CPU并行工作来隐藏图像数据块在片和片外之间的传输时间,使CPU能连续不断地处理数据,中间不会出现空闲等待。
传统的图像旋转一般通过矩阵乘法实现:其中,α为旋转角度。
由于图像是线性存储的,各个像素点之间的相对位置关系确定。
如图1(a)所示,图像旋转前,任意像素点P(x,y)和P1(x1,y1)、P2(x2,y2)及A(xA,yA)在几何上是矩形的四顶点关系。
由于旋转变换是线性变换,如图1(b)所示,图像旋转后,各个像素点之间的相对位置关系不发生变化,旋转算法的数据调度目的是使算法能够按照一定的规则,将源图像数据有规律地分块,并按次序分别传输到DSP片存储器中,完成计算后,形成视口图像块,再将视口图像块按同样的顺序进行排列,形成旋转后的视口图像。
整个过程要求调入和调出的图像数据均是规则分块的,并且调入的源图像块中应该包含计算视口图像块的过程中所需要的全部像素数据,尤其需要解决其中的大量非连续图像像素地址访问问题。
视口逆时针旋转的情况与此类似。
区别有以下两点:①源图像块的左边框中点与相应的视口图像块旋转后的左上角顶点对应;②源图像块的顶点局部坐标地址值与视口图像块的顶点局部坐标地址值之间的对应关系式应为:其中height指源图像块的高度。
3 软件程序3.1主程序#include<stdlib.h>#include<stdio.h>#include<graphics.h>#include<alloc.h>#include<ctype.h>int load_cut(char *fname);int load_convolution_matrix(char *fname);int convolve_image(void);int swap_pictures(void);int minx,maxx,miny,maxy;int LOADPAGE=0;int ENHANCEPAGE=1;int *cmat, *pmat, *vmat;int cmx,cmy,cmnum;struct palettetype palette,newpal; int driver,mode;int cleancut=-1;int init_graphics(void){driver=DETECT; mode=0; detectgraph(&driver,&mode);if(driver==VGA) mode=VGAMED; initgraph(&driver,&mode,""); getpalette(&palette); getpalette(&newpal);}int cleanup_image(void){int i,j,num,x,y,k;if(cleancut<0) return; setactivepage(LOADPAGE); setvisualpage(ENHANCEPAGE); for(x=minx;x<maxx;x++) {for(y=miny;y<maxy;y++) {if(getpixel(x,y)!=0) num=-1;else num=0;for(j=-1;j<2;j++) {for(i=-1;i<2;i++) {if(getpixel(x+i,y+j)!=0) num++;}}if(num>cleancut) {k=getpixel(x,y);setactivepage(ENHANCEPAGE);putpixel(x,y,k);setactivepage(LOADPAGE);}}}k=ENHANCEPAGE; ENHANCEPAGE=LOADPAGE; LOADPAGE=k;}void show_test_image(void){int i;minx=cmx; miny=cmy;maxx=100+minx; maxy=100+miny;setcolor(1);moveto(minx,miny);randomize();for(i=0;i<20;i++)lineto(random(100)+minx,random(100)+miny);for(i=0;i<10;i++)fillellipse(random(50)+25+minx,random(50)+25+miny,random(25),random(25));}main(){char fname[50];int flag=0;load_convolution_matrix("matrix.dat");printf(".CUT file (1) or test image (0)?");scanf("%d",&flag);flag= flag? 1:0;if(flag) {fflush(stdin);printf("filename to process:");gets(fname);}printf("Delete pixels with x or fewer neighbors. x="); scanf("%d",&cleancut);if(cleancut>8) cleancut=8;init_graphics();setactivepage(1); cleardevice();setactivepage(0); cleardevice();setactivepage(LOADPAGE); setvisualpage(LOADPAGE); if(flag) load_cut(fname);else show_test_image();cleanup_image();setvisualpage(ENHANCEPAGE);convolve_image();swap_pictures();restorecrtmode();}int toggle_colors(char c){c=tolower(c);c=c-'a';if(c<0 || c>=palette.size) return 0;newpal.colors[c]= palette.colors[c]-newpal.colors[c]; setpalette(c,newpal.colors[c]);return 1;}int swap_pictures(void){int mode=0;char a;setvisualpage(LOADPAGE);for(;;) {a=getch();if(a==27) return;if(toggle_colors(a)) continue;if(mode==0) setvisualpage(ENHANCEPAGE);if(mode==1) setvisualpage(LOADPAGE);mode=1-mode;}}int convolve_image(void){int i,j,k,nval;int *vx, *vy, *c;int colmax,offset,end,midy;char **lines=NULL;char *temp=NULL;offset=-minx+(cmx/2);end=cmy-1; midy=cmy/2;lines=(char **)malloc(cmy*sizeof(char *));for(i=0;i<cmy;i++) lines[i]=(char *)malloc(sizeof(char)*(maxx-minx+cmx+1));setactivepage(LOADPAGE);for(j=-cmy/2;j<cmy/2;j++) {for(i=minx-cmx/2;i<(maxx+cmx/2+1);i++) {lines[j+midy][i+offset]=getpixel(i,j+miny);}}colmax=getmaxcolor();for(j=miny;j<maxy;j++) {setactivepage(LOADPAGE);for(i=j+cmy/2,k=minx-cmx/2,nval=maxx+cmx/2;k<nval;k++) lines[end][k+offset]=getpixel(k,i);for(i=minx;i<maxx;i++) {/* Load & multiply neighbors into matrix */ setactivepage(LOADPAGE);vx=vmat; vy=vmat+1; c=cmat; nval=0;for(k=0;k<cmnum;k++) {if(*c) nval+= lines[(*vy)+midy][i+(*vx)+offset]*(*c);/* if(*c) nval+= getpixel(i+(*vx),j+(*vy)) * (*c); */c++;vx+=2; vy+=2;}/* Cut off values too high or too low */if(nval<0) nval=0;if(nval>colmax) nval=colmax;/* Place new pixel value */setactivepage(ENHANCEPAGE);putpixel(i,j,nval);}if(kbhit()) { getch(); break; }/* rotate line pointers */temp=lines[0];for(i=1;i<cmy;i++) lines[i-1]=lines[i];lines[end]=temp;}for(i=0;i<cmy;i++) {if(lines[i]!=NULL) free(lines[i]);}if(lines!=NULL) {free(lines);}return;}int build_offset_vectors(void){int *t;int il,im,jl,jm,i,j;il=-cmx/2; im=cmx+il;jl=-cmy/2; jm=cmy+jl;t=vmat;for(j=jl;j<jm;j++) {for(i=il;i<im;i++) {*t++=i; *t++=j;}}}int load_convolution_matrix(char *fname) {/* Layout of matrix file:#x #yx0y0 x1y0 ... xny1.... .... ... ....x0ym x1ym ... xnym*/FILE *mf;int *t;int i,j,im,jm;if( (mf=fopen(fname,"rt"))==NULL ) {printf("Cannot load matrix file.\n");abort();}fscanf(mf,"%d%d",&im,&jm);if( (im&1)==0 || (jm&1)==0 ) {printf("Convolution matrix MUST have a center point.\n"); abort();}if( (cmat=(int *)calloc(im*jm,sizeof(int)))==NULL ) {printf("Unable to calloc convolution matrix.\n");abort();}if( (vmat=(int *)calloc(2*im*jm,sizeof(int)))==NULL ) { printf("Unable to calloc offset vector matrix.\n");abort();}cmx=im; cmy=jm; cmnum=im*jm;t=cmat;for(j=0;j<jm;j++) {for(i=0;i<im;i++) {if( fscanf(mf,"%d",t++)!=1 ) {printf("Unable to read matrix.\n");abort();}}}fclose(mf);build_offset_vectors();}int load_cut(char *fname){static unsigned char st[3000];char *sp=st,*spend;int stp=0;int width,height;FILE *fp;int x,y,xl,yl;int i,n,len,d,j;fp=fopen(fname,"rb");width=getw(fp); height=getw(fp);xl=cmx; yl=cmy;minx=xl; miny=yl;maxx=xl+width; maxy=yl+height;if(maxy>(getmaxy()-cmy)) {maxy=getmaxy()-cmy;height=maxy-yl;}getw(fp);y=yl-1;for(sp=st,n=0;n<height;n++) {stp=getw(fp);for(sp=st,spend=st+stp;sp<spend;) *sp++=getc(fp); sp=st; spend=sp+stp; x=xl; y++;while(sp<spend) {if(*((unsigned char *)sp)>0x80) {len=(*sp++) & 0x7f;if(!(*sp)) { x+=len; continue; }setcolor(*sp++);moveto(x,y);linerel(len,0);x+=len;continue;} else {len=*sp++;for(j=0;j<len;j++) putpixel(x++,y,*sp++);continue;}}}fclose(fp);}3.2初始化和读取图像程序#include<stdio.h>#define MODEPHOTO1 1#define MODEPHOTO2 2#define GRAYBARLEVEL 16void ReadImage(unsigned char*pImage,char*cFileName,int nWidth,int nHeight);void InitImage(unsigned int nMode,unsigned char*pImage,int nWidth,int nHeight){swich(nMode){case MODEPHOTO1:Readimage(pImage,"..\\DSP.bmp",nWidth,nHeight);break;case MODEPHOTO2:ReadImage(pImage,"..\\1.bmp",nWidth,nHeight);break;default:break;}}void ReadImage(unsigned char*cFileName,int nWidth,int nHeight) {int j;unsigned char*pWork;FILE*fp;if(fp=fopen(cFileName,"rb")){fseek(fp,1078L,SEEK_SET);pWork=pImage+(nHeight-1)*nWidth;for(j=0;j<nHeight;j++,pWork-=nWidth)fread(pWork,nWidth,1,fp);fclose(fp);}}4 运行结果分析从实验结果可以看出,调整图像旋转,由于存在对称性,一幅图像任意角度的旋转可分解为一次90°或180°或270°的旋转,再加上一次±45°以的旋转。