主要内容

基于计算机视觉工具箱的Sobel边缘检测算法

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

  • Simu金宝applink®如何允许您在系统级设计数字信号处理(DSP)算法。

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

  • 如何在Simulink环境中与ModelSim®或Cadence®Incisive®共同模拟手写HDL代码(对应于您的Simul金宝appink模型)。

这种方法是基于模型的设计.要了解更多关于基于模型的设计,请参考//www.tatmou.com/金宝搏官方网站solutions/model-based-design.html

您需要以下产品来运行示例中的所有模型:下载188bet金宝搏

  • MATLAB®

  • 金宝app

  • 定点设计器™

  • HDL验证器™

  • 计算机视觉工具箱™

  • DSP系统工具箱™

  • ModelSim SE或PE。或节奏尖锐

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

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

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

在本例中,Sobel边缘检测算法已在Simulink中实现。打开金宝app可执行模型双击“Sobel边缘检测”块,了解该算法是如何在Simulink中实现的。双击Sobel边缘检测块时,可以看到该算法由两个2D过滤器组成,一个用于计算列方向的渐变(顶部过滤器),另一个用于计算行方金宝app向的渐变(底部过滤器)。两个过滤器都使用3x3内核。

此Simu金宝applink模型用作开发路径其余部分的规范。这是一个可执行的规范,这意味着您可以很容易地在Simulink环境中执行该模型。金宝app

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

实现算法的设计与验证

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

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

定点设计

由于我们的最终目标是在FPGA或ASIC中实现算法,我们必须将双精度设计转换为定点设计。这可以很容易地使用Simulink完成。金宝app我们使用上一节中开发的双精度模型直接开发定点模型,而不引入任何新模块。金宝appSimulink允许我们确定数据和数学运算的比特数和比例,并为分析系统的定点操作提供了一个很好的环境。

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

打开定点模型并通过双击计算块(如2D过滤器或添加块)来检查定点是如何实现的,并查看相应的定点面板。

设计精化

在我们的示例中,边缘检测算法的输入是尺寸为200x100的二维图像。在实时系统中,输入很可能不是矩阵,而是串行数据流;例如,该串行数据流可由电荷耦合器件(CCD)生成。因此,我们需要修改设计的结构,以便边缘检测算法接受并对串行数据流执行二维滤波。

在这种程度上,我们首先序列化输入图像。然后,我们对该串行数据执行2D过滤。稍后,我们对数据流进行反序列化,以便能够将输出与黄金参考进行比较。要了解这是如何做到的,请参阅边缘检测细化模型。

此操作仅对底部过滤器进行。正如预期的那样,新的设计仍然产生与以前完全相同的结果。添加了两个延迟元素来补偿序列化块中的抛光。本设计还展示了Simulink的多速率能力。金宝app序列化块的输出采样率比该块的输入高20000倍。

金宝app仿真软件®Cosimulation

上一节中的模型可以传递给HDL设计器,后者可以使用上一节中设计的2D过滤器来编写相应的VHDL或Verilog代码。编写代码后,HDL设计器可以使用HDL验证器™ 使用ModelSim或Incisive在Simulink环境中模拟HDL设计,并将HDL设计的输出与可执行规范的输出进行比较。请注意,在此过程中,不需要生成HDL测试台。Simulink模型通过HDL验证器将输入测试向量反馈给ModelSim或Incisive,并将ModelSim或Incisive中的数据提取回Simulink环境。HDL设计者可以很容易地验证HDL代码是否按照金宝app规范运行。

  • ModelSim/QuestaSim

提到VHDL模型Verilog模型以了解如何使用HDL验证器来共同模拟Simulink和ModelSim。金宝app最后一个图显示了ModelSim中显示的信号的快照。

  • 尖锐/尖刻指Verilog模型了解如何使用HDL验证器软件对Simulink和Incisive平台进行联合仿真。金宝app