清晰化算法在DSP TIDM642上的实现,之前的部分工作摘要于此。

1 DSP平台的选择

1.1 DM642 Evolution Module

选择现有的DM642 Evolution Module(EVM)作为开发平台。

(1) DM642作为TI公司一款功能强大的经典芯片之一。主要性能如下:

  • 高性能的定点信号处理器:指令执行周期可达1.39ns,时钟频率最高可达720MHz;完全兼容C64x系列软件。
  • 增强的超长指令字(VLIW) C64x核:6个32/40位的ALU;两个乘法器支持每时钟周期4个16×16bit乘法或8个8×8bit乘法;64个32位通用寄存器;
  • L1/L2存储结构;16KB L1P 程序Cache、16KB L1D 数据Cache;256KB统一编址的RAM/Cache;64位外部存储器接口(EMIF)总线;1024M可编址外部地址空间。

(2) DM642 EVM是基于DM642芯片的开发板,它是一个可开发DM642所有功能并包含所有相关外部器件的工作系统。它包括:32MB SDRAM;4MB线形Flash存储器;2个视频解码器;1个视频编码器;双口RS-232串行口和线形驱动;32KB I2C EEPROM等常用器件。
因此,DM642 EVM是进行数字图像处理较好的选择。

2 系统总体设计方案

视频实时系统分为视频采集、视频处理(去雾/夜视增强)和视频显示三个部分。处理过程如图所示。具体工作原理是:摄像头采集退化的模拟视频信号,模拟视频信号通过DM642 EVM上的解码芯片SAA7115解码成数字并行信号BT656码流送DM642视频端口(输入),并以EDMA方式传到SDRAM中存储。DM642 CPU通过访问SDRAM中的图像,处理后送回SDRAM中的输出缓冲区。DM642视频端口(输出)会以EDMA方式从SDRAM的输出缓冲区取得数据后形成BT656码流送出。DM642 EVM上的编码芯片SAA7105编码BT656码流成模拟视频信号输出,清晰化后的视频图像可以在显示器上显示。

3 算法基本流程

4 算法难点

(1)浮点型数据的处理:由于在算法中涉及到除法、在去雾中透射率的也是(0,1]之间的小数。而DM642是定点DSP,直接使用浮点型数据进行运算,速度太慢;
(2)滤波核半径较大时,算法复杂度也将是巨大的,算法在DSP上的运行效率也会十分低下。
(3)图像处理的数据量大,如何充分利用DSP资源,提高程序运行效率,成为算法实现的一个难点。

5 优化方案

  1. 降低算法本身复杂度,如:
  • 在导向滤波中求取均值、方差时,使用boxfilter的方法, 快速计算邻域内像素和,使得算法具有O(N)的时间复杂度。
  • 去雾过程是在RGB颜色空间进行的,因此,首先需要将视频解码器输出的YUV格式的数据转换成RGB格式。对于颜色空间的转换,直接使用转换公式至少需要4次乘法和6次加法。实际过程中对每个像素点都进行这样的运算,计算量很大。可使用部分查表法,以查表代替乘法运算。
  1. C代码的优化
  • 程序中影响性能的主要代码是循环,优化一个循环可以抽出这个循环放在单独的文件,重新编写、重新编译和单独运行。
  • 对浮点型数据的处理,采用Q格式定标的方法,浮点小数以定点小数形式运算。
  • 使用关键字restrict消除存储器相关性,利于指令并行操作。
  • 利用C64x的双16位扩充功能,一个周期可进行两个16位数据的运算。优化时,应该将连续的短整型数据流转换成整型数据流操作。
  • 使用内联函数和循环展开。内联函数(如_add2()等)直接与C64x汇编指令映射,循环体内加入内联函数不影响程序流水执行;而循环的展开可以使CPU内的功能单元和寄存器得到充分利用,使循环体达到最佳流水状态。
  • 使用逻辑运算代替乘除运算。
  • 把程序和经常要用的数据放入片内RAM。
  • 通过EDMA技术搬运片内片外的数据。EDMA不占用CPU时间,可提高运行速度。
  • 使用C64x编译器提供的若干优化选项,如-o3程序级优化等。
  • 使用TI提供的优化好的库函数,如DSPLIB、IMGLIB等。

6 实现测试环境和效果

2014

清晰化算法在DSP上的实现的更多相关文章

  1. Wellner 自适应阈值二值化算法

    参考文档: Adaptive Thresholding for the DigitalDesk.pdf       Adaptive Thresholding Using the Integral I ...

  2. sauvola二值化算法研究

    sauvola二值化算法研究   sauvola是一种考虑局部均值亮度的图像二值化方法, 以局部均值为基准在根据标准差做些微调.算法实现上一般用积分图方法 来实现.这个方法能很好的解决全局阈值方法的短 ...

  3. 基于dsp_builder的算法在FPGA上的实现

    基于dsp_builder的算法在FPGA上的实现   一.摘要 结合dsp_builder.matlab.modelsim和quartus ii等软件完成算法的FPGA实现. 二.实验平台 硬件平台 ...

  4. PIE SDK栅格矢量化算法

    1.算法功能简介 栅格数据矢量化较为复杂,如果由一幅扫描的数字化地图来建立矢量数据库,则需要经过数字图象处理,如边缘增强.细化.二值化.特征提取及模式识别才能获得矢量数据.人们通常将多色地图分色后逐个 ...

  5. 【DSP开发】【计算机视觉】EMCV:可在DSP上运行的OpenCV

    EMCV:可在DSP上运行的OpenCV EMCV项目主页: http://sf.net/projects/emcv EMCV全称为Embedded Computer Vision Library,是 ...

  6. 一种局部二值化算法:Sauvola算法

    之前接触过全局二值化(OTSU算法),还有OPENCV提供的自适应二值化,最近又了解到一种新的局部二值化算法,Sauvola算法. 转载自:http://www.dididongdong.com/ar ...

  7. 基于dsp_builder的算法在FPGA上的实现(转自https://www.cnblogs.com/sunev/archive/2012/11/17/2774836.html)

    一.摘要 结合dsp_builder.matlab.modelsim和quartus ii等软件完成算法的FPGA实现. 二.实验平台 硬件平台:DIY_DE2 软件平台:quartus ii9.0 ...

  8. [计算机图形学]光栅化算法:DDA和Bresenham算法

    目录 一.DDA 二.Bresenham 三.绘制图形 1. 绘制直线 2. 绘制圆 3. 绘制椭圆 一.DDA DDA算法是最简单的直线绘制算法.主要思想是利用直线的斜截式:\(y=kx+b\) 对 ...

  9. TinyMCE的使用(包括汉化及本地图片上传功能)

    TinyMCE我就不多介绍了,这是下载地址:https://www.tinymce.com/download/ 下载下来是英文版,要汉化也很简单.首先去网上随便下载个汉化包,然后把汉化包解压后的lan ...

随机推荐

  1. 每天进步一点点-深度学习入门-基于Python的理论与实现 (2)

    今天要补上两天的 不补了,新手,看的比较慢-- 手写识别例子跳过先 思考如何实现数字5的识别 三种方法: 训练数据:学习,寻找最优解 测试数据:评价模型能力. 损失函数:以损失函数为线索寻找自由权重参 ...

  2. 使用jQuery函数

    1选择器 1.1说明 选择器本身只是一个有特定语法规则的字符串, 没有实质用处,它的基本语法规则使用的就是CSS的选择器语法, 并对基进行了扩展,只有调用$(), 并将选择器作为参数传入才能起作用. ...

  3. 在IDEA安装SonarLint插件的步骤和使用方法

    1.安装SonarLint插件方式 2.使用方式 3.效果

  4. thinkphp Widget扩展

    Widget扩展一般用于页面组件的扩展.大理石平台规格 举个例子,我们在页面中实现一个分类显示的Widget,首先我们要定义一个Widget控制器层 CateWidget,如下: namespace ...

  5. delphi 压缩

    DELPHI 通过ZLib来压缩文件夹 unit Unit1; interface uses ZLib, Windows, Messages, SysUtils, Variants, Classes, ...

  6. 几道noip2018提高组初赛的题

    以下做法来均自llj @Nicodafagood 一.单项选择题 7. 在一条长度为 1 的线段上随机取两个点,则以这两个点为端点的线段的期望 长度是( ).A. 1 / 2B. 1 / 3C. 2 ...

  7. 2019年12月12日英语学习-Will I Or Won't I ?

    这节英语课上的内容没记住多少东西,觉得这个主题太枯燥了,不过整堂课和外教沟通交流还是不错的,因为这节课就我一个学生.给我了充分的机会去张嘴交流互动. 也没记住什么东西,不知道写什么.只记住将要决定做某 ...

  8. How to Add Swap on CentOS

    About Linux Swapping Linux RAM is composed of chunks of memory called pages. To free up pages of RAM ...

  9. 【Android】Retrofit网络请求参数注解,@Path、@Query、@QueryMap.

    对Retrofit已经使用了一点时间了,是时候归纳一下各种网络请求的service了. 下面分为GET.POST.DELETE还有PUT的请求,说明@Path.@Query.@QueryMap.@Bo ...

  10. 从0的1学习JavaSE,Jdk的安装

    一.常用的dos命令 dir 罗列出当前目录的下所有文件名字 cd 路径 切换路径,该路径可以是相对于路径也可以是绝对路径 相对路径,只相对于当前的目录下的文件 绝对路径,是从盘符开始的路径地址 注意 ...