主要内容

Sobel边缘检测算法与计算机视觉工具箱

这个例子展示并解释了“自上而下”应用于Sobel边缘检测算法的设计方法。Sobel边缘检测算法是一种流行但简单的边缘检测算法,也是本例的重点。通过这个例子,你将学到:

  • Simu万博1manbetxlink®如何允许您在系统级别上设计数字信号处理(DSP)算法。

  • 如何详细阐述设计,使其在硬件上实现。

  • 如何在Simulink环境中与ModelSim®或Cadence®Xcelium®共同模拟手写HDL代码(对应于您的Simuli万博1manbetxnk模型)。

这种方法就是一个例子基于模型的设计.要了解更多关于基于模型的设计,请参阅//www.tianjin-qmedu.com/万博 尤文图斯solutions/model-based-design.html

您需要以下产品来运行示例中的所有模型:s manbetx 845

  • MATLAB®

  • 万博1manbetx

  • 定点设计师™

  • 高密度脂蛋白校验™

  • 计算机视觉工具箱

  • DSP系统工具箱

  • ModelSim SE或PE。或者叫Cadence Xcelium

Sobel边缘检测算法的可执行规范

随着设计变得越来越大、越来越复杂,有必要在较高的层次上描述设计。这种高层次的描述不仅使设计人员能够更快地运行模拟,还可以在整个开发过程中用于验证。由此产生的过程允许开发人员在早期识别错误,并避免在开发结束时昂贵的错误发现。这种高级设计通常由系统工程师完成。

为了在ASIC或FPGA等硬件上实现DSP算法,系统级工程师首先设计算法,并验证算法是否满足项目要求。这个设计后来成为负责将算法应用到硬件的工程师的黄金参考。

本例中,在Simulink中实现了Sobel边缘检测算法。万博1manbetx打开可执行模型双击“Sobel Edge Detection”块,学习如何在Simulink中实现算法。万博1manbetx双击Sobel边缘检测块,可以看到该算法由两个2D滤波器组成,一个用于计算列方向的梯度(顶部滤波器),另一个用于计算行方向的梯度(底部滤波器)。两个过滤器都使用3x3内核。

这个Sim万博1manbetxulink模型作为开发路径其余部分的规范。这是一个可执行的规范,这意味着您可以很容易地在Simulink环境中执行这个模型。万博1manbetx

本例使用卫星图像作为边缘检测算法的输入。该图像用作输入测试向量,并在整个示例中使用。如果负责算法硬件实现的工程师也在Simulink环境中工作,那么就不需要额外的开销来将测试向量移植到不同的应用程序中,或者创建容易出现人为错误的测试集。万博1manbetx可执行规范中使用的测试工具贯穿整个示例。

实现算法的设计与验证

在设计可执行模型时,系统工程师通常不把实现细节记在心里,而是实现算法来匹配行为需求。一旦系统工程师将可执行规范提交给开发团队,开发团队可能需要对可执行规范进行修改,以使设计适合具有有限资源(如内存或处理能力)的实时系统。

在本例中,开发人员可能决定消除平方运算,用绝对值运算代替它们,以实现更有效的硬件实现。这将导致共同模拟结果与黄金参考之间的差异,但为了这个例子,我们假设差异是可以接受的。打开边缘检测设计模型。您可以看到,与之前的模型相同的测试向量仍在使用。结果可以很容易地对照黄金基准进行验证。一个数字显示器显示了黄金参考和新设计之间的平均差异。

定点设计

由于我们的最终目标是在FPGA或ASIC中实现算法,因此我们必须将双精度设计转换为定点设计。使用Simulink可以很容易地做到这一点。万博1manbetx我们使用在前一节中开发的双精度模型直接开发一个定点模型,而不引入任何新的块。万博1manbetxSimulink允许我们确定数据的位数和缩放以及数学操作,并为分析系统的定点操作提供了一个很好的环境。

在这个定点设计中,过滤器的输入是一个有符号的9位整数,而过滤器的输出是有符号的11位整数。如果双击每个计算块,例如过滤器或求和块,您可以看到开发人员可以轻松地调整与该块的内部计算相关的位宽和缩放。这为设计师提供了巨大的杠杆,在匹配黄金参考输出的同时,使用最少的位数来节省设备上的面积。

打开定点模型并通过双击计算块,如二维滤波器或加法块,并查看相应的定点面板,来检查定点是如何实现的。

设计详解

在我们的例子中,边缘检测算法的输入是一个大小为200x100的二维图像。在实时系统中,输入很可能不是矩阵,而是连续的数据流;例如,这种串行数据流可以由电荷耦合器件(CCD)产生。因此,我们需要修改设计结构,使边缘检测算法接受并对串行数据流进行二维滤波。

为此,我们首先序列化输入图像。然后对这些串行数据进行二维滤波。我们稍后将数据流反序列化,以便能够将输出与黄金引用进行比较。要了解如何做到这一点,请参阅边缘检测细化模型。

此操作仅对底部过滤器进行。正如预期的那样,新设计仍然产生与以前相同的结果。已经添加了两个延迟元素来补偿序列化程序块中的缓冲。本设计也充分展示了Simulink的多速率能力。万博1manbetx串行程序块的输出相对于该块的输入的采样率高20000倍。

万博1manbetx仿真软件®Cosimulation

上一节中的模型可以传递给HDL设计人员,HDL设计人员可以使用上一节中设计的2D过滤器来编写相应的VHDL或Verilog代码。一旦代码编写完成,HDL设计人员就可以使用HDL Verifier™在Simulink环境中使用ModelSim或Xcelium模拟HDL设计,并将HDL设计的输出与可执行规范的输出进行比较。万博1manbetx注意,在这个过程中,不需要生成HDL测试平台。Simu万博1manbetxlink模型通过HDL Verifier将输入的测试向量提供给ModelSim或Xcelium,并将ModelSim或Xcelium中的数据提取回Simulink环境。HDL设计人员可以很容易地验证HDL代码是否按照规范运行。

  • ModelSim / QuestaSim

硬件描述语言(VHDL)模型Verilog模型以了解如何使用HDL验证器来共同模拟Simulink和ModelSim。万博1manbetx最后一个图显示了ModelSim中显示的信号的快照。

  • 参考Verilog模型了解如何使用HDL Verifier软件共同模拟Simulink和Xcelium平台。万博1manbetx