2020-01-04 23:09:35 m0_38106923 阅读数 1975

目录

1、导入库文件

2、设计GUI

3、调用摄像头

4、实时图像处理

4.1、阈值二值化

4.2、边缘检测

4.3、轮廓检测

4.4、高斯滤波

4.5、色彩转换

4.6、调节对比度

5、退出系统


初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试有一定帮助,项目演示效果如下(CSDN插入视频电脑端不能居中真是难为强迫症):

0c2d9990a4eb18b78e8969fa40345a36232b20c0.jpg

1、导入库文件

这里主要使用PySimpleGUI、cv2和numpy库文件,PySimpleGUI库文件实现GUI可视化,cv2库文件是Python的OpenCV接口文件,numpy库文件实现数值的转换和运算,均可通过pip导入。

import PySimpleGUI as sg  #pip install pysimplegui
import cv2  #pip install opencv-python
import numpy as np #pip install numpy

2、设计GUI

基于PySimpleGUI库文件实现GUI设计,本项目界面设计较为简单,设计800X400尺寸大小的框图,浅绿色背景,主要由摄像头界面区域和控制按钮区域两部分组成。效果如下所示:

GUI代码如下所示:

    #背景色
    sg.theme('LightGreen')

    #定义窗口布局
    layout = [
      [sg.Image(filename='', key='image')],
      [sg.Radio('None', 'Radio', True, size=(10, 1))],
      [sg.Radio('threshold', 'Radio', size=(10, 1), key='thresh'),
       sg.Slider((0, 255), 128, 1, orientation='h', size=(40, 15), key='thresh_slider')],
      [sg.Radio('canny', 'Radio', size=(10, 1), key='canny'),
       sg.Slider((0, 255), 128, 1, orientation='h', size=(20, 15), key='canny_slider_a'),
       sg.Slider((0, 255), 128, 1, orientation='h', size=(20, 15), key='canny_slider_b')],
      [sg.Radio('contour', 'Radio', size=(10, 1), key='contour'),
       sg.Slider((0, 255), 128, 1, orientation='h', size=(20, 15), key='contour_slider'),
       sg.Slider((0, 255), 80, 1, orientation='h', size=(20, 15), key='base_slider')],
      [sg.Radio('blur', 'Radio', size=(10, 1), key='blur'),
       sg.Slider((1, 11), 1, 1, orientation='h', size=(40, 15), key='blur_slider')],
      [sg.Radio('hue', 'Radio', size=(10, 1), key='hue'),
       sg.Slider((0, 225), 0, 1, orientation='h', size=(40, 15), key='hue_slider')],
      [sg.Radio('enhance', 'Radio', size=(10, 1), key='enhance'),
       sg.Slider((1, 255), 128, 1, orientation='h', size=(40, 15), key='enhance_slider')],
      [sg.Button('Exit', size=(10, 1))]
    ]

    #窗口设计
    window = sg.Window('OpenCV实时图像处理',
               layout,
               location=(800, 400),
               finalize=True)

3、调用摄像头

打开电脑内置摄像头,将数据显示在GUI界面上,效果如下所示:

代码如下所示:

    #打开内置摄像头
    cap = cv2.VideoCapture(0)
    while True:
        event, values = window.read(timeout=0, timeout_key='timeout')

        #实时读取图像
        ret, frame = cap.read()

        #GUI实时更新
        imgbytes = cv2.imencode('.png', frame)[1].tobytes()
        window['image'].update(data=imgbytes)

    window.close()

4、实时图像处理

4.1、阈值二值化

进行阈值二值化操作,大于阈值values['thresh_slider']的,使用255表示,小于阈值values['thresh_slider']的,使用0表示,效果如下所示:

 代码如下所示:

if values['thresh']:
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2LAB)[:, :, 0]
    frame = cv2.threshold(frame, values['thresh_slider'], 255, cv2.THRESH_BINARY)[1]

4.2、边缘检测

进行边缘检测,values['canny_slider_a']表示最小阈值,values['canny_slider_b']表示最大阈值,效果如下所示:

代码如下所示:

if values['canny']:
    frame = cv2.Canny(frame, values['canny_slider_a'], values['canny_slider_b'])

4.3、轮廓检测

轮廓检测是形状分析和物体检测和识别的有用工具,连接所有连续点(沿着边界)的曲线,具有相同的颜色或强度,效果如下所示:

 代码如下所示:

if values['contour']:
    hue = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    hue = cv2.GaussianBlur(hue, (21, 21), 1)
    hue = cv2.inRange(hue, np.array([values['contour_slider'], values['base_slider'], 40]),
                      np.array([values['contour_slider'] + 30, 255, 220]))
    cnts= cv2.findContours(hue, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
    cv2.drawContours(frame, cnts, -1, (0, 0, 255), 2)

4.4、高斯滤波

进行高斯滤波,(21, 21)表示高斯矩阵的长与宽都是21,标准差取values['blur_slider'],效果如下所示:

 代码如下所示:

if values['blur']:
    frame = cv2.GaussianBlur(frame, (21, 21), values['blur_slider'])

4.5、色彩转换

色彩空间的转化,HSV转换为BGR,效果如下所示:

 代码如下所示:

if values['hue']:
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    frame[:, :, 0] += int(values['hue_slider'])
    frame = cv2.cvtColor(frame, cv2.COLOR_HSV2BGR)

4.6、调节对比度

增强对比度,使图像中的细节看起来更加清晰,效果如下所示:

  代码如下所示:

if values['enhance']:
    enh_val = values['enhance_slider'] / 40
    clahe = cv2.createCLAHE(clipLimit=enh_val, tileGridSize=(8, 8))
    lab = cv2.cvtColor(frame, cv2.COLOR_BGR2LAB)
    lab[:, :, 0] = clahe.apply(lab[:, :, 0])
    frame = cv2.cvtColor(lab, cv2.COLOR_LAB2BGR)

5、退出系统

直接break即可跳出循环。

if event == 'Exit' or event is None:
    break

拓展学习:基于Python的人工智能美颜系统 

 请关注公众号,回复关键字:OpenCV实时图像处理,获取项目资源。

2019-02-28 21:14:46 YEYUANGEN 阅读数 384

1.需求分析

  • 实时图像处理技术,尤其是基于多核DSP+FPGA架构的实时图像处理技术,因为该种方案本身所具有种种优点,又成为了现今各项图像处理新技术研究中的备受关注的焦点
  • 红外图像
  • 细胞图像
  • 图像拼接

2.总体设计方案:

FPGA负责完成视频图像采集、显示的逻辑控制;DSP负责完成图像拼接算法的实现;并利用FPGA内部FIFO与DSP的EMIFA接口直接通信,实现FPGA与DSP之间的数据交换。

2.1 DSP与FPGA的通信接口设计

  • 该框架基于数据流模式进行处理器内部的核间数据交互,采用了高速传输接口SRIO与FPGA之间进行通信。
  • 多核DSP与FPGA之间可选用uPP传输模式或者RapidIO高速数据通道进行双工数据通信。
  • PciE

2.2 图像采集接口

  • FPGA读采集图像时所需的标准接口Camera Link协议模块
  • 该系统的数字图像输入前端由SDI数字输入端、USB3.0传输模块、PAL制视频图像采集模块共同构成。

 

2.3 FPGA作为系统的主控制单元(除了做图像高速采集协处理器外,还起到类似ARM的作用?)

  • FPGA对图像进行显示的标准接口HDMI模块
  • FPGA实现PAL制式或DVI制式的视频图像采集,将采集到的图像数据传给DSP,接收DSP回传的结果并显示输出。

 

3.应用例子

  • 基于XILINX V6系列FPGA和TI TMS320C6657双核DSP的实时图像处理系统。系统选用TI多核DSP作为图像数据运算的主处理器,用以实现数字图像实时处理的核心算法。系统选用XILINX公司Virtex系列高端FPGA作为协处理器和系统的主控制单元,用来协调系统中各个外设功能模块,并完成图像采集和显示控制的功能。
  • 为了完成图像目标点的检测和确认,同时实现FPGA与DSP之间的通信数据高速传输,文中基于高速DSP芯片TMS320C6455提出了一种数字图像处理系统设计方案
  • 以TMS320C6657 DSP和XC6VLX240T FPGA为核心芯片,设计了一套基于图像处理的硬件系统平台
  • TI TMS320C6657双核DSP + Artix-7 FPGA
  • 基于视频的车辆异常行为检测系统设计与开发:采用2片ADI公司TigerSHARC系列——ADSP TS201芯片作为核心处理器;两片Xilinx公司的Spartan-6系列FPGA芯片XC6SLX100-3CSG484I,作为通信传输和接口控制的核心处理器
  • 选用TI公司TMS320C6000系列DSP和Altera公司的Cyclone II系列FPGA作为核心器件

关键词:多核DSP; TMS320C6657; 核间通信; 硬件系统平台; 图像匹配;

2009-01-13 22:42:00 lrx2712 阅读数 4272

 

1 引 言 随着计算机及通信技术的发展,图像和视频的应用愈加广泛。大部分图像数据在实际应用前皆需进行有针对性的处理,如根据图像数据特点和应用领域对图像进行增强、除噪、锐化和识别等。此 外,为了有效实时地传输信息,还必须对图像进行压缩。图像处理技术尤其是实时处理,现已成为一热门的研究课题。 

实现图像处理的主要方式有: (1)在通用计算机上用软件实现图像处理; (2)在通用计算机系统中加入专用的加速处理模块; (3)利用通用单片机; (4)利用专用DSP芯片; (5)利用通用可编程DSP芯片。 在众多图像处理方式中,最常用的是第1种,但此种方式要占用CPU几乎全部的处理能力,速度相对较慢,不适于实时处理,需要对其加以改进;而其他几种方式各有不足,如第2种方式不适于嵌入式应用,专业性较强,应用受到限制;第3种方式适于数字控制等不太复杂的数字信号处理,不适合计算较大的图像数据处理;第4种方式因为采用的是专用DSP芯片,故其应用范围受限,系统不够灵活,无法进行算法的升级与更新;第5种方式必须要用能充分考虑DSP内部并行性的汇编语言进行编制DSP程序,具有一定困难。但是,TI公司为了解决这个问题,推出了一个开放、具有强大集成能力的开发环境(CCS)[2]。它采用了由先进的开发工具组成的直观系统,使用CCS提供的工具,开发者可以非常方便地对DSP软件进行设计、编码、编译、调试、跟踪和实时性分析,可有效减少DSP编程时间。 综上所述,利用通用可编程DSP芯片[1-2]实现图像处理较之其他方式具有一定的优越性,而且DSP芯片的可编程性和强大的处理能力,使其可用于快速地实现各种数字信号处理算法,成为目前图像处理系统的最佳选择。

2 DSP芯片 数字信号处理器(DSP)[1-2]是一类具有专门为数字信号处理任务而优化设计的体系结构和指令系统的通用处理器件,具有处理速度快和有复合功能的单周期指令等特点,在高速图像处理中得到了越来越多的应用。

DSP芯片内部采用程序和数据分开存储和传输的哈佛结构,具有专门硬件乘法器,广泛采用流水线操作,提供特殊的DSP 指令,可用来快速地实现各种数字信号处理算法,加之集成电路的优化设计,使其处理速度比最快的CPU还快10~50倍。DSP芯片采用不同于普通单片机的体系结构,具有一些显著特点。 2.1 哈佛结构[1] 传统计算机采用传统的冯·诺伊曼(Von Neumann)结构,其程序和数据共用一个存储空间和单一的地址及数据总线,处理器要执行任何指令时,都要先从储存器中取出指令解码,再取操作数执行运算,即使单条指令也要耗费几个甚至几十个周期,在高速运算时,在传输通道上会出现瓶颈效应。 所有的DSP芯片均采用哈佛(Harvard)结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统中的4套总线:程序的数据总线与地址总线,数据的数据总线与地址总线。这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了1倍。又由于程序和数据存储器在两个分开的空间中,因此取指和执行能完全重叠。图1给出了冯·诺伊曼结构和哈佛结构的比较。 2.2 流水线技术[1] 与哈佛结构相似,DSP芯片广泛采用流水线以减少指令执行时间,从而增强了处理器的处理能力。 流水线处理器是由一系列处理电路组成,这些处理电路称为片断或部分。操作数流经每个片断,即每个片断对操作数进行部分处理,操作数经过所有片断后才能得到最后结果。流水线操作即把一条指令分成一系列步骤来完成,不同步骤完成不同的任务,一条指令只有经过所有步骤才能得到结果。这些步骤可以独立进行,这样就可以实现多条指令在不同步骤上的重复运行,从而加快运行速度。 流水线分为指令流水线和算术流水线。指令流水线是指取指令和执行指令的不同阶段在流水线上进行;算术流水线是指算术操作的不同阶段在流水线上进行。DSP芯片一般采用指令流水线方法。 由于采用了流水线技术,DSP芯片可以单周期完成乘法累加运算,大幅提高了运算速度,减少了指令执行的时间,从而增强了处理器的处理能力。处理器可以并行处理2~4条指令,每条指令处于流水线的不同阶段。 2.3 特殊的硬件结构[1-2] 数字信号处理中最重要的基本运算是乘法和累加运算,它们占用了大量运算时间,是最主要和最耗时的运算。DSP中设置了硬件乘法器和乘法并累加(MAC),这些操作往往可以在单周期内完成,大幅提高了DSP作乘法和累加的速度。因此,单周期的硬件乘法器和MAC是DSP芯片实现快速运算的保证。现代高性能的DSP芯片甚至具有两个以上的硬件乘法器以提高运算速度。数据宽度也从16位增加到32位。 数学运算消耗的时间往往少于存储器的操作。DSP芯片在片内集成了大容量的ROM和RAM来分别存放程序和数据,程序在片内执行的效率远远高于相同规格的通用微处理器,这样既降低了产品的体积和成本,又加快了处理速度。 2.4 特殊的寻址方式[1] 在数字信号处理中要遇到大量的地址运算,在某些情况下,地址运算量甚至超过了数据的运算量。DSP中设计有一个特殊的硬件算术单元——地址产生器。地址计算由这个专门的硬件来负责,不需要耗费额外的时间。现在的某些微处理器中也有独立的地址产生单元,对于一些特殊的地址运算不需要耗费额外的CPU时间,但是DSP的地址运算单元更强大,支持如比特翻转寻址和循环寻址,可极大加快运算速度,而对于非哈佛结构的处理器可能需要更多的处理周期。 2.5 并行处理结构[2] 图像处理中的运算量巨大,单个处理器无法满足实时处理的需求,需要多处理器并行处理。 DSP内部一般都集成多个处理单元,如硬件乘法器(MUL)、累加器(ACC)、算术逻辑单元(ALU)、辅助算术单元(ARAU)以及DMA控制器等。它们都可以并行地在同一个周期内执行不同的任务,例如辅助算术单元能为下一次的运算做好准备,适于完成连续的乘加运算。芯片内部还包括其他总线,如DMA总线等,可实现数据的后台传输而几乎不影响主CPU的性能。 为了提高并行处理能力,现代DSP芯片通常采用单指令多数据流结构(SIMD)、超长指令字结构(VLIW)、超标星体系结构、多DSP核体系结构和DSP/MCU混合结构,这些并行处理机制显著提高了DSP芯片的性能。

3 DSP的发展历程和方向 3.1 DSP发展历程 DSP发展历程[1]大致分3个阶段:20世纪70年代理论先行,20世纪80年代产品普及,20世纪90年代突飞猛进。 在DSP出现之前,数字信号处理只能依靠微处理器(MPU)来完成,但MPU的低处理速度无法满足高速实时的要求,因此直到20世纪70年代,才有人提出了DSP的理论和算法基础。那时的DSP仅停留在教科书上,即便是研制出来的DSP系统也是由分立元件组成的,其应用领域仅局限于军事、航空航天部门。 随着大规模集成电路技术的发展,1982年,世界上诞生了首枚DSP芯片。这种DSP器件采用微米工艺NMOS技术制作,虽功耗和尺寸稍大,但运算速度却比MPU快了几十倍,尤其在语音合成和编码解码器中得到了广泛应用。DSP芯片的问世是个里程碑,它标志着DSP应用系统由大型系统向小型化迈进了一大步。到20世纪80年代中期,随着CMOS技术的进步与发展,第2代基于CMOS工艺的DSP芯片应运而生,其存储容量和运算速度都得到成倍提高,成为语音处理和图像硬件处理技术的基础。 20世纪80年代后期,第3代DSP芯片问世,运算速度进一步提高,其应用范围逐步扩大到通信和计算机领域。 20世纪90年代,DSP发展最快,相继出现了第4代和第5代DSP器件。现在的DSP属于第5代产品,与第4代相比,其系统集成度更高,并将DSP芯核及外围元件综合集成在单一芯片上。这种集成度极高的DSP芯片不仅在通信和计算机领域发挥重要作用,而且逐渐渗透到人们日常的消费领域。 3.2 DSP发展方向[1] 现在DSP产品的应用已扩大到人们的学习、工作和生活的各个方面,并逐渐成为电子产品更新换代的决定因素;而半导体技术和超大规模集成电路的发展为DSP的推陈出新提供了物理基础,用户的需求又为DSP的发展指出了方向。总体而言,DSP技术将向以下几个方面发展: (1)系统级集成。缩小DSP芯片尺寸始终是DSP的技术发展方向。当前的DSP多数基于精简指令集计算(RISC)结构,这种结构的优点是尺寸小、功耗低和性能高。各DSP厂商纷纷采用新工艺,改进DSP芯核,并将几个DSP芯核、MPU芯核、专用处理单元、外围电路单元和存储单元集成在一个芯片上,成为DSP系统级集成电路。 (2)更高的运算速度。目前一般的DSP运算速度为100MIPS,即每秒钟可运算1亿条指令,但由于电子设备的个人化和客户化趋势,DSP必须追求更高更快的运算速度,才能跟上电子设备的更新步伐。DSP运算速度的提高主要依靠新工艺改进芯片结构。目前,TI的TM320C6X芯片由于采用超长指令字(VLIW)结构设计,其处理速度已高达2000MIPS。当前的DSP器件大都采用0.5~0.35μmCMOS工艺,按照CMOS的发展趋势,DSP的运算速度完全可能再提高100倍(达到1600GIPS)。 (3)可编程性。可编程DSP给生产厂商提供了很大的灵活性。生产厂商可在同一个DSP平台上开发出各种不同型号的系列产品,以满足不同用户的需求。同时,可编程DSP也为广大用户提供了易于升级的良好途径。人们已经发现,许多微控制器能做的事情,使用可编程DSP能做得更好更便宜,例如冰箱、洗衣机这些原来装有微控制器的家电如今皆已换成可编程DSP来进行大功率电机控制。 (4)支持高级编程语言的DSP开发软件。使用高级语言进行DSP软件开发可缩短软件开发的周期,加快DSP产业的发展。 (5)并行处理结构。并行结构所带来的好处是显而易见的,各DSP厂家纷纷在器件中引入并行机制,主要分为片内并行和片间并行。 (6)功耗低。

4 图像处理系统中DSP芯片的选择 对图像处理技术而言,由于要处理的数据量大,计算复杂,计算中间结果精度要求高,因此需要选择合适的DSP芯片。DSP芯片的选择应根据实际的应用系统需要而确定。一般来说,选择DSP芯片时应考虑如下诸多因素: (1)确定选择定点或浮点DSP[1]。数字信号处理算法的数据格式有定点和浮点之分,而数字信号处理系统采用的数据格式决定了它所处理信号的处理精度、动态范围和信噪比,且不同数据格式的易用性和开发难度也不一样。选择定点或浮点DSP,首先要看模数转换时需要的比特数,如果图像的每个像素小于16bit,则用16bit定点DSP即可;如果大于16bit,则需要用浮点DSP来捕捉更大的动态范围。其次考虑算法的复杂度和经济问题。一般说来,浮点DSP芯片的运算精度高,动态范围大,寻址空间大,指令运算能力较强,但功耗大、成本高、体积较大。定点DSP芯片的运算精度与浮点DSP芯片相同(数据位数和浮点芯片相同的情况下),而功耗、成本、体积与浮点DSP芯片相比较小,且易于实现,稳定性好。 (2)根据DSP芯片运算速度选择具体芯片[2]。运算速度是DSP芯片的一个最重要的性能指标,也是选择DSP芯片时所需考虑的一个主要因素。DSP芯片的运算速度一般采用DSP的指令周期、单周期的乘加次数或采用数字信号处理中的基准程序,如用FFT和数字滤波等的执行时间来测评DSP芯片的速度性能。 (3)其他考虑因素[2]。在硬件方面还应考虑芯片的外部总线结构、片上存储器结构、DMA功能、串行通信口和芯片间通信能力等因素,在软件方面主要是开发软件的功能性和时间要求等因素。 目前,应用最为广泛的是TI(Texas Instruments)公司TMS320C6000[1-3]系列的数字信号处理器。美国德州TI公司自1982年推出第1代数字信号处理器以来,现已相继推出了多代数字信号处理器,成为世界上最大的DSP芯片供应商。TMS320C6000系列是TI公司于1997年推出的高端系列的DSP。该系列的DSP在芯片设计上,最初主要是针对多通道无线通信和有线通信的应用领域,但由于其优异的高速处理性能和出色的对外接口能力,使它也很适用于图像处理领域。 TMS320C6000是基于超长指令字(VLIW)结构的通用DSP系列,具有超长指令字处理能力。其内部有8个并行处理单元,8条指令组成一个指令包,一个指令包的总字长为256位。它可在一个时钟周期内并行执行8条指令。这种高速高性能数字信号处理器的工作频率可达200MHz,每秒可完成1.6G次操作。该结构包括定点的C62x、浮点的C67x和新的C64x。C64x和C62x代码兼容,但结构有显著的加强,其初期的工作频率可达750MHz。C67x在C62x 8个功能块中的6个上增加了浮点功能,因此其指令集是不同的。 将TMS320C6000系列的数字信号处理器用于图像处理系统开发中,势必使技术水平得到进一步的提高。

5 基于DSP的图像处理软件开发 TI公司针对TMS320C6000系列芯片推出了一种CCS集成开发软件。CCS(Code Composer Studio)[1]是一个开放、具有强大集成能力的开发环境,它采用了由先进的开发工具组成的直观系统,可大幅减小DSP编程时间,并能在极短的时间内消除实时工作中的间歇。CCS包括TMS320C6200代码生成工具、集成开发环境IDE、DSP/BIOS插件和应用程序接口实时数据交换(API、RTDS)插件和主机接口等部分。使用CCS提供的工具,开发者可以非常方便地对DSP软件进行设计、编码、编译、调试、跟踪和实时性分析。DSP软件开发[1]流程图如图2所示。 DSP软件开发包括3个阶段: (1)第1阶段是指图2中“C代码优化”之前的部分。在第1阶段主要是在CCS环境下用C6000的代码产生工具,编译产生在C6000内运行的代码,证明其功能正确,然后再用CCS调试工具,分析确定代码中可能存在的影响性能的低效率段,进入第2阶段。 (2)图2中从“C代码优化”开始至“线性汇编”之前为第2阶段。这一阶段主要是利用优化方法改进C语言代码,主要使用内联函数、数据打包处理、软件流水线技术以及展开循环结构代码等优化手段,然后反复检查C代码性能,优化C代码,如果仍不能达到所期望的效率,进入第3阶段。 (3)其余部分为第3阶段。在这一阶段从C语言程序中抽出对性能影响很大的程序段,使用线性汇编语言重新编写,并使用汇编优化器优化该段代码。 最后可用EVM板或其他开发硬件,根据实时性的要求反复优化C程序和线性汇编程序,直到系统符合实时性和代码长度的要求。在这种CCS集成开发软件的环境下,C编译器的效率可达80,若将新的线性汇编语言和C6000汇编优化器配合使用,可使代码效率高达95以上。

6 基于DSP的图像处理系统 基于DSP的图像处理系统[2-5]的主要思想是利用C6000这样具有强大运算能力的DSP来满足图像处理技术中运算速度和处理的实时性要求。以DSP为核心部件的图像处理系统具有以下特点:(1)接口方便。DSP系统与其他以现代数字技术为基础的系统或设备均相互兼容,同这样的系统接口来实现某种功能要比模拟系统与这样的系统接口要容易的多;(2)编程方便。DSP系统中的可编程DSP芯片可使设计人员在开发过程中灵活方便地对软件进行修改和升级;(3)稳定性好。DSP系统以数字处理为基础,受环境温度及噪声的影响较小,可靠性高;(4)精度高。16位数字系统的精度可达10-5;(5)可重复性好。模拟系统的性能受元器件参数性能变化的影响较大,而数字系统基本上不受影响,因此数字系统便于测试、调试和大规模生产;(6)集成方便。DSP系统中的数字部件有高度的规范性,便于大规模集成。 图像处理系统一般由图像采集模块、图像处理模块和数据通讯模块三部分组成(如图3所示)。 图3中的图像处理模块接收来自采集模块的数字图像数据,对其进行相应处理,是系统的主体部分,其核心是用来实现处理算法的DSP芯片,如TI公司TMS320C6000系列芯片。 图像处理计算量大且实时性要求高,虽然DSP芯片对提高处理速度有一定的优越性,但对如遥感图像等大型且重要的图像数据却常常不能达到实时处理,因此需要采用多个DSP并行处理方式[4-6],进一步提高算法的运行速度,达到真正的实时处理。 目前比较常用的是双DSP结构[6]。两片DSP芯片交替进行采集和处理工作,可以实现数据采集和图像压缩的并行操作,降低处理时间;而在一片DSP内,也可将数据缓冲区分为两部分,同时进行数据读取和编码,实现片内并行操作,进一步节省时间。

7 结 论 在当今数字化时代的背景下,DSP已成为通信、计算机、消费类电子产品等领域的基础器件。DSP将是未来集成电路中发展最快的电子产品,并将成为电子产品更新换代的决定因素。将DSP芯片用于图像处理系统可大幅提高图像的处理速度,满足实时性需求,而且DSP系统具有接口方便、易于编程、稳定性好、精度高、可重复性好和集成方便等特点,因此可以说基于DSP的图像处理系统是图像处理领域的发展方向。

2008-09-22 08:48:00 roobt 阅读数 793

点击查看:http://www.61ic.com/Shop/DSP/C6000/200708/40.html

 

DM642 Ver2.0四路实时图像处理开发平台是索思达电子(SSD)为适应市场需求,最新推出的一款具有自主知识产权的基于定点处理单元的DM642 DSP (EVM)开发板 。DM642 Ver2.0开发套件功能强大,代码丰富,方便使用。在国内,我们的产品已经成为众多的国家级科研院所、大学、国家重点实验室、电力、通讯、工业、医疗类公司指定采购的开发工具,在长期的客户产品开发使用过程中得到广大客户的高度认可和好评.同时也为TI公司开拓DSP应用市场作出了大量的工作。

   

TMS320DM642TI推出的针对多媒体处理领域应用的高性能数字媒体处理器。该处理器是专门为视频与影像市场量身定制的,特别适用于VOIP视频、视频点播(VOD )、多信道数字视频摄录像应用以及高品质视频编码与解码解决方案。DM642 处理器内部集成了TMS320C64X DSP内核, 600MHz 运行速度下, 指令可达4800MIPS, 由于其强大的运算能力, 可以实现实时的H. 264 编解码算法。

 

 

DSP芯片和CPLD芯片

(提供CPLD源码)

TMS320DM642内部集成了外部内存接口(EMIF)控制单元,通过20 根地址线和64 位数据总线可直接与外部的SDRAMFLASH进行连接。

 

视频编码器芯片和视频解码器芯片

SAA7121H可将数字YUV视频数据编码为NTSCPALS-Video信号。该电路能接收CCIR格式相兼容的每行720个有效像素点,422多元格式的YUV数据。例如MPEG解码数据,它包含一个同步/时钟发生器和片下DAC

 

SAA7113H芯片是一款支持PAL/NTSC/SECAM视频解码器,具有自适应的2/4线梳状滤波器。SAA7113H是一种视频解码芯片,它可以输入4路模拟视频信号,通过内部寄存器的不同配置可以对4路输入进行转换,输入可以为4CVBS2S视频(Y/C)信号,输出8位“VPO”总线,为标准的ITU 656YUV 422格式。

 

 

 

FLASH芯片和SDRAM芯片 

 

FLASH:最大4M * 8位   8位异步静态存储器接口

SDRAM最大4M * 64位  64位同步动态存储器接口

 

 

 

UART芯片和UART接口

 

TL16C752B是TI公司推出的新型UART(Universal Asynchronous Receiver and Transmitter)。 TL16C752B内含双UART,并自带64字节收发FIFO,可自动进行软件流和硬件流控制,最大波特率可达3Mbsp。 开发板上采用TL16C752B通用异步收发器UART,其上包括两路独立的异步收发器,接收和发送各带64个字节的 FIFO,并各自带MODEM信号,最高传输速率1.5MBPS。在开发板上将TL16C753B配置在/CE空间,A、B两个通道所占用的地址范围如下:

 

 

 

另外,TL16C752B还提供了2个中断请求信号INTA,INTB分别用于通道A和B申请TMS320DM642的中断,在开发板上,INTA和INTB相与,复用TMS320DM642的INT5。

 

UART接口:RS232/RS422/RS485接口,可连接串口设备

 

 

 

视频接口和ATA硬盘接口

 

视频接口有4路视频输入接口和1路视频输出接口,4路视频输入接口可以同时完成对4路视频的采集,视频的编解码均支持NTSC和PAL制。

 

Video Input:视频输入接口,可连接摄像头或摄象机的输出。

Video Output:视频输出接口,可接监视器。

 

ATA硬盘接口:40IDE硬盘接口,方便大容量的图像及其它数据的存贮。(接标准的ATA硬盘)。ATA硬盘接口的实现,主要是指ATA标准的物理层的实现。即实现对物理层各个寄存器的访问。

 

主要包括两组寄存器:

 

命令块寄存器组(Command Block Registers)

控制块寄存器组(Control Block Registers)

 

在SSD-DM642开发板上,这两组寄存器在CPLD里面经过地址译码后,产生各自的片选信号(CS0和CS1)选通,并映射在TMS320DM642的存储空间,其地址分配如下:

 

 


 

 

网络接口和音频输入/输出接口及电源接口

 

话筒接口(MIC)提供麦克风偏压,通常是 3/4AVDD。

耳机接口(PHONE)AIC23内部包含耳机驱动放大电路,可以直接驱动16Ω或32Ω耳机而不需要外部驱动。

音频输入(LINEIN)有音频LINEIN输入口,其输入电平满足CD播放器输出的2Vrms。

电源接口(Power)供电电源输入(+5V)内正外负

网络接口(Ethernet):RJ45标准10/100M以太网接口,TMS320DM642的网络接口由EMAC(10/100 Mb/s Ethernet MAC)与MDIO(Management Data Input/Output)两部分组成。其中EMAC为网路的数据通路,MDIO为EMAC的状态及控制接口。

 

 

 

HPI接口(J13)/DSP JTAG仿真器接口和扩展的I/O口接口(J14)

 

HPI接口主机接口,可和ARM等连接,组成主从系统。在开发板上,HPI接口被配置为16位的,并且通过J13连接器把所有的引脚全部引出,其原理如下:

 

 

 

关于HPI详细的操作,参看TMS320C6000 DSP Host Post Interface(HPI)Reference Guide(文献号SPRU578)。

 

JTAG仿真器接口:DM642板上有一个十四芯﹑间距为10mil的双排插针JP1,它是一个JTAG仿真器标准接口,通过此接口可以对DM642进行硬件仿真调试,其定义如下:

 

 

扩展的I/O口接口(J14):有输入输出端口。具体管脚定义请查看说明书(第23页)

 

 

 

发光二极管和按键

 

发光二极管和按键:在开发板上面扩展了8个发光二极管和8个按键,用于调试和监控用。

 

 

 

S端子和时钟备用电池/RST按键

 

RST按键:提供手动复位用。

时钟备用电池:3V电池在系统断电后给时钟芯片供电。

S端子输出:视频输出接口,可接监视器。S端子也是非常常见的端子,其全称是Separate Video,也称为SUPER VIDEO。S-Video连接规格是由日本人开发的一种规格,S指的是“SEPARATE(分离)”,它将亮度和色度分离输出,避免了混合视讯讯号输出时亮度和色度的相互干扰。S端子实际上是一种五芯接口,由两路视亮度信号、两路视频色度信号和一路公共屏蔽地线共五条芯线组成。

 

系统资源:

○主处理器,TMS320DM642,主频 600MHz

SDRAM  4M * 64位。

FLASH  4M * 8位。

○实时时钟RTC + 512*8位的EEPROM

4路视频输入:标准PALNTSC制模拟视频输入(CVBS复合视频信号)。

最大输入:01Vpp

                 NTSC 720 * 525@30/

                 PAL  720 * 625@25/

1路视频输出:标准PALNTSC制模拟视频输出(CVBS复合视频信号或S端子信号输出等);

                最大输出范围: CVBS 01.23VppY01.23VppC00.89Vpp

○音频输入:双声道立体声输入或单一麦克风输入。8kHz--96kHz@16/20/24位采样。

○音频输出:立体声输出,8kHz--96kHz@16/20/24位采样。

2路异步串口:可编程配置为RS232/RS422/RS485标准,用于控制 云台或者其他设备;

○标准的IDE硬盘接口:用于本地存储大容量数字视频数据,实现数字视频录像机功能DVR

RJ45标准10/100M以太网接口,实现视频服务器或网络摄像机的功能;

16路数字量输入/输出,实现现场环境检测与控制;

8个外扩按键可实现人机对话输入使用。

8个发光二极管可用于调试程序和监测。

16位的HPI接口可以方便和其他主机连接(如ARM等)

○提供上电自动复位和手动复位功能,方便用户调试。

 

配套资料:

○完整的原理图(PDF格式),快速掌握多项实用技术的具体应用

○在线烧写FLASH的方法与工具,用以固化用户自己的程序

○用户手册:非常详细,让你快速踏入DSP开发应用之门

○芯片手册:开发板上全部芯片的芯片资料

○送TCP/IP协议卷 :卷1,卷2,卷3

○送USB1.1协议规范文档

○送U盘系统说明文档

○送FAT16FAT32系统说明文档

○送其它相关的开发说明文档

○提供开发板上全套Protel 99SE格式元器件封装库

 

代码试验:

A.基础实验类

    ○扩展的SDRAM 的读写实验

    ○扩展的FLASH 的读写实验

    ○串行EEPROM的读写实验

    McBSP发送接收实验

    GPIO驱动发光管闪烁实验

    ○跑马灯实验

    TIMER定时器实验

    ○扩展的中断源输入中断信号实验

    ○键盘扫描实验

    ○输入、输出接口实验

    ○录音、播音实验实验

    ○语音报警实验

    UART发送接收实验。

    EMAC自发送接收实验

    4路视频采集实验

    4路视频采集循环播放实验

    ○在线烧写FLASH实验

    DM642二次BOOTLOADER 实验

    ○图像的反色实验

    ○图像的灰度显示实验

    ○图像的阈值分割实验

    ○灰度图的线性变换实验

    ○灰度窗口实验

    ○灰度拉升实验

    ○直方图实验

    ○灰度均衡实验

    ○图像平移实验

    ○图像的垂直镜像变换实验

    ○图像的水平镜像变换实验

    ○图像的缩放实验

    ○图像的旋转实验

    ○图像的平滑实验(平均模板算法)

    ○图像的平滑实验(高斯模板算法)

    ○图像的均值滤波实验

    ○图像的中值滤波实验

    ○图像锐化实验(梯度锐化算法)

    ○图像锐化实验(拉普拉斯锐化算法)

    ○图像的边缘检测实验(Sobel边缘算法)

    ○图像的边缘检测实验(Prewitt边缘算法)

    ○图像的边缘检测实验(Laplacian边缘算法)

 

B.图像编码、解码类

    H263编码和解码实验

    JPEG编码和解码实验

MPEG2编码和解码实验

 

赠送资料:

TI原版的DM642EVM光盘资料:

    ○含DDKNDKRFFlashBurn等开发工具包等

    ○含DM642的原理图、驱动程序等

    ○含H263MPEG2JPEG等视频编解码软件

 

典型应用:

○视频服务器;

    ○网络摄像机;

    ○嵌入式智能交通;

    ○视频会议;

    ○数字视频录像机;

    ○多路视频监控;

    ○图像算法评估、分析等(MPEG1MPEG2MPEG4MJPEG JPEG2000H264及其它各种图像算法)

 

相关配件:

 

○直流稳压电压   1 1000mA---5V

○点对点网线     1 1米)

○配套光盘       1

 

联系电话:0733-8103652  联系人:罗兰

2009-10-10 16:54:00 gaolinjie 阅读数 1075

EDMA在实时图像处理系统中的应用


摘要:增强型直接内存存取(EDMA)是数字信号处理器(DSP)中用于快速数据交换的重要技术,具有独立于CPU的后台批量数据传输的能力,能够满足实时图像处理中高速数据传输的要求。以TI公司的TMS320DM642型DSP为例,介绍EDMA控制器的特点。结合实例给出EDMA在图像数据实时传输中的具体控制和实现方法。实验结果表明,通过灵活控制EDMA不仅能够提高图像数据的传输效率,而且能够充分发挥:DSP的高速性能。
关键词:EDMA;实时图像处理;数字信号处理器;Sobel;TMS320DM642
中图分类号:TP274 文献标识码:A 文章编号:1006—6977(2006)01—0008—04

1 引言
    
数字图像处理技术在科学研究、工业生产和管理部门中得到越来越多的应用。在目标跟踪、机器人导航、自动驾驶、交通监视等领域中的应用也极大地促进了实时图像处理技术的发展。实时应用要求实时图像处理系统必须具有强大的运算功能。DM642(TMS320DM642)型处理器是TI最新推出的面向多媒体处理领域的数字信号处理器(DSP).给多媒体设备的实现提供了另一种有效的手段。DM642建立在C64x DSP核基础上.采用德州仪器公司开发的第二代高性能的先进的超长指令字结构VeloeiTl.2TM,在600MHz的时钟频率下.DM642每秒可以进行24亿次16位的乘累加或48亿次的8位的乘累加。这样强大的运算能力使得DM642可以进行实时多视频图像处理。它的增强型直接内存存取(EDMA)对DSP图像处理系统是非常重要的,它可以在没有CPU参与的情况下完成映射存储空间中数据搬移。灵活使用EDMA可以大大提高数据传输效率。以:DM642为例,结合Sobel算法给出EDMA的一种具体控制和实现方法。

2 DM642的EDMA控制器
    DM042的EMDA能提供超过2Gb/s的外部带宽.支持64路独立触发的事件传输,总共有85个参数对“Linking”或“Chaining”进行配置。Linking是在1个事件被触发时允许1个序列进行传输。Chaining是当1个通道的数据传输完毕时触发另1个通道的数据传输。Linking和Chaining使得仅仅被CPU初始配置之后EDMA能够连续的自动运行。EDMA的特点决定了其适合图像处理的功能。由于图像处理的原始数据量很大.同时图像处理中也会产生同等量的中间数据.对于片内存储资源有限的高速DSP来说,一般需要借用外部存储空间。为了提高系统的实时处理能力.可以将数据在不同存储空间转移的任务交给EDMA来完成,而CPU只用于数据的计算。同时,EDMA对数据重排功能可以优化图像数据在内存中的存储,这不仅可以提高内部存储空间的利用效率.而且可以提高数据的传输速率。虽然对图像数据的传输也可由软件实现,但将消耗大量的CPU时钟周期。使DSP的高速性能难以发挥。而由EDMA来完成同样的工作几乎不占用CPU的时钟周期。

    在C64xDSP中.EDMA控制器负责片内L2存储器与其他设备之间的数据传输。EDMA控制器和DMA在结构上有很大的不同.其增强之处包括:
    提供了64个通道;
    通道间的优先级可以设置;
    支持不同结构数据传输的链接。
    EDMA控制器由以下几部分组成;
    事件和中断处理寄存器;
    事件编码器;
    参数RAM;
    硬件地址产生。

    其中,事件寄存器控制对EDMA事件进行捕获。1个事件相当于1个同步信号,由它触发1个EDMA通道开始数据传输。如果有多个事件同时发生.则由事件编码器对它进行分辨。EDMA的参数RAM中存放了有关的传输参数,这些参数会被送入地址发生器硬件.进而产生读写操作所需要的地址。

    EDMA支持8bit、16bit和32bit数据的存储。在EDMA中定义了下列概念:
    (1)数据单元(element)的传输。单个数据单元从源地址向目的地址传输.如果需要,每1个数据单元都可以由同步事件触发传输;
    (2)帧(frame)。l组数据单元组成1帧,l帧中的数据单元可以是相邻连续存放的,也可以是间隔存放的.帧传输可以选择是否受同步事件控制,“帧”一般在1维传输中提及;
    (3)阵列(array)。1组连续的数据单元组成1个阵列.在1个阵列中的数据单元不允许间隔存放。1个阵列的传输可以选择是否受同步事件控制。“阵列”一般在2维传输中提及;
    (4)块(block)。多个帧或者多个阵列的数据组成1个数据块;
    (5)1维(1一D)传输。多个数据帧组成1个1维的数据传输。Block中帧的个数可以是l~65536。
    (6)2维(2一D)传输。多个数据阵列组成1个2维的数据传输。第1维是阵列中的数据单元,第2维是阵列的个数。

3 EDMA的控制机制
3.1 事件与事件控制寄存器

    EDMA有64个通道.每1个通道都有1个事件与之关联.由这些事件触发相应通道的传输。

3.2 传输参数与参数RAM

    EDMA控制器与DMA控制器在结构上有所区别。C64x的.EDMA控制器是基于RAM结构。参数.RAM(Parameter RAM。PaRAM)的容量是2KB,总共可以存放85组EDMA传输控制参数。多组参数还可以彼此连接起来,从而实现某些负责数据流的传输.例如循环缓存和数据排序等。参数RAM中保存的内容包括:
    64个EDMA通道对应的入口传输参数.每组参数包括6个字;
    用于重加载,链接的传输参数组。每组参数包括24字节;
    8字节空余的RAM可以作为“草稿区”(scratchpad area)。
 
   一旦捕获到某个事件.控制器将从PaRAM顶部的64组入口参数中读取数据对应的控制参数送往地址发生器硬件。

    表l给出1组EDMA传输参数的内部结构,总共6个字.192bit。可以通过32bit的外设总线对EDMA的参数.RAM进行访问。

    可选参数(Option Parameter),32bit,用户可以根据情况选择设置该参数。

    SRC/DST地址.32bit,用于存放EDMA访问起始的源地址和目的地址,可以通过可选参数中的SUM/DUM位设定对SRC/DST地址的修改方式。

    数据单元计数(Element Count),16bit无符号数.存放l帧(1一D传输)或1个阵列(2一D传输)中的数据单元数。

    帧/阵列计数(Frame/Array Count),16bit无符号数.存放的是1-D数据传输中的帧计数,或是2一D数据传输中的阵列计数。

    数据单元,帧,阵列索引(Element/Frame/ArrayIndex).16bit无符号数,作为地址修改的索引值。数据单元索引只应用于1-D传输,为下一数据单元的地址偏移值(2一D传输不允许数据单元间隔存放)。帧,阵列索引用于控制下一帧,阵列的地址索引。

    数据计数的重加载(Element Count Reload),16bit无符号数。用于在每帧最后一个数据元素传输之后.重新加载传输计数值。这个参数只能用于1一D传输中。

    链接地址(Link Address),16bit。当设定可选参数中的LINK=1时,可以由链接地址确定下1个EDMA事件采用参数的装载,重装载地址,从而使多组EDMA传输参数形成EDMA传输链。

4 EDMA的传输操作
    EDMA进行数据传输时有2种启动方式,1种是CPU启动.另1种是由同步事件触发。每1个通道的启动是相互独立的。

4.1 CPU启动EDMA/非同步的EDMA

    CPU可以通过写事件置位寄存器(ESR)启动1个EDMA通道。向ESR中某1位写1时,将强行触发对应的事件。此时,与正常的事件响应过程类似,EDMA的PaRAM中的传输参数被送入地址发生器.完成对EMIF、L2存储器或外设的存取访问。由CPU启动的EDMA属于非同步的数据传输。EER中的事件使能与否不会影响这种EDMA传输的启动。

4.2 由事件触发EDMA

    一旦事件编码器捕获到1个触发事件并锁存在ER寄存器中,将导致PaRAM中对应的参数被送入地址发生器.进而执行有关的传输操作。尽管是由事件启动传输操作,但是事件本身必须首先被CPU使能。EER寄存器负责控制事件的使能。触发EDMA传输的同步事件可以源于外设,外部器件的中断或某个EDMA通道结束。与DMA的情况不同,与EDMA的每1个通道相关联的触发事件是固定的。因此,如果假设EER中的EVT4=1,那么EXT_INT4引脚的外部中断信号就会启动EDMA通道4的传输。所以,每个事件也就指定了1个特定的EDMA通道。

5 在实时图像处理系统中的应用

    在实时图形处理系统中,经常是把数据块转移,例如从视频通道采集数据传送到SDRAM中作为后续处理的缓存,或是把数据传送到片内RAM中。EDMA使数据的传送简单易行。下面以把数据从视频通道传送到片内RAM中并作Sobel边缘提取算法和把数据从视频通道传送到SDRAM中并作So—bel边缘提取算法为例。

    (1)把数据从视频通道通过1维方式传送到片内RAM中并作Sobel边缘提取算法
    只对摄像头采集的I块数据进行Sobel边缘提取。采用一维EDMA传送方式,每1次传送采集1行中的部分数据(DAT_copy()函数)。在PAL制式下.先把1行数据放到nMemTemp数组中,然后对从144行到432行、从180列到435列的图像进行Sobel边缘提取.最后把变换后的数据输出到显示缓冲区.如图1所示。

    
    因为Sobel算法需要3行数据,所以可以开辟1个可以存放3行数据的缓冲区,通过指针的交换把从视频通道过来的数据分别放到缓冲区中。保存的3行图像使用翻卷的缓冲区管理,3个变量分别指示当前使用的y行、y—l行和y一2行在缓冲区中的起始偏移量。可以这样:轮流往3块缓存区拷贝数据.只要改变拷贝的指针就可以。在拷贝当前这1块的时候.已经拷贝的另外2块数据依然没有变化,所以就可以实现3块数据保存采集图像中的相邻3行数据.如表2所示。


        

    

    (2)把数据从视频通道通过2维方式传送到SDRAM中并作Sobel边缘提取算法可以通过DAT_copy2d 0函数直接把采集的l幅图像亮度分量存放到SDRAM中,如下:

    
    其中.m_dbFrameBufferTemp是指向SDRAM中缓冲区的指针,numPixels是1行的像素数,num-Lines是行数。当把数据存放到SDRAM的1个数组中后.Sobel算法的实现就非常简单了。当然也可以参照1维的方法来实现。

6 结束语
    大批量的图像数据传输和复杂算法的处理一直是高速数字图像处理器的速度瓶颈,利用DSP的EDMA功能可以在不中断信号处理器算法处理工作的同时完成图像数据的搬移,在有效地解决了大批量图像数据传输速度瓶颈的同时,又能让DSP的处理器核专门从事算法处理工作,极大地提高了系统的并行性能。

没有更多推荐了,返回首页