清晰化算法在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. DOM 对象和jQuery对象的转换

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. vue组件添加鼠标滚动事件

    在一个组件标签上加鼠标滚动事件,应该写成    @mousewheel.native

  3. 6361. 【NOIP2019模拟2019.9.18】鲳数

    题目 题目大意 给你一个区间\([l,r]\),求这个区间内每个整数的十进制上从高位到低位的逆序对个数之和. 思考历程 一开始就知道这是个数位DP-- 结果一直都没有调出来,心态崩了-- 正解 先讲讲 ...

  4. jQuery-介绍 加载 选择器 样式操作 属性操作 绑定click事件

    jQuery - 介绍 加载 选择器 样式操作 属性操作 绑定click事件 注意:以下部分问题不能实现效果,因该是单词拼写错误(少个t)或者没有加引号(“swing”)... jquery介绍 jQ ...

  5. NOIp2018集训test-10-4/test-10-5 (联考四day1/day2)

    这个day1稍微有点毒瘤吧?? DAY1 排列 以前总是把day1t1想太复杂了翻车,差不多往正解的方向想了一下感觉不可能这么复杂这可是noipday1t1啊一定有非常简单的方法然后翻车了?? 题目转 ...

  6. Dll注入技术之注册表注入

    DLL注入技术之REG注入 DLL注入技术指的是将一个DLL文件强行加载到EXE文件中,并成为EXE文件中的一部分,这样做的目的在于方便我们通过这个DLL读写EXE文件内存数据,(例如 HOOK EX ...

  7. jQuery 基本选择器

    1 基本选择器 $(‘#id属性值’)  ----------->document.getElementById() $(‘tag标签名称’)----------->document.ge ...

  8. PAT_A1020#Tree Traversals

    Source: PAT A1020 Tree Traversals (25 分) Description: Suppose that all the keys in a binary tree are ...

  9. 剑指offer——17数值的整数次方

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方.   保证base和exponent不同时为0   一般解法: 直接相乘: cl ...

  10. Springboot-WebSocket获取HttpSession问题

    换了新工作,第一个任务就是和这个有关,以前没接触过,没办法,各种度娘.谷哥,大部分都是只言片语,要么就是特定的配置环境还不贴配置--,踩坑无数, 遂整理成笔记 WebSocket协议 WebSocke ...