APP下载

基于Nios Ⅱ内核的自定义图像卷积指令

2019-08-22徐铭君

电子技术与软件工程 2019年12期
关键词:调用像素点时钟

文/徐铭君

1 图像卷积原理和特点

图像的卷积运算在图像处理中十分重要,卷积运算可以有效的提取图像的特征。现在机器视觉和机器学习的过程中往往需要对图像进行多次多层的卷积,对于一幅N2大小的灰度图像,利用M2的卷积核进行卷积运算(M

图像卷积是用原始图像的各个像素及其领域的灰度值与卷积核的对应元素进行逐项相乘后相加的过程,运用式(1)并把结果Y 重新赋值给z5。

2 SOPC自定义指令构建

2.1 自定义指令部分的实现

自定义指令可以让开发者定制Nios II 处理器来满足特定应用程序的需求。在ALU 上挂载自定义硬件逻辑块,可以加快软件的执行速度 。因为Nios Ⅱ给出的组合逻辑的自定义指令的传入接口是两个32bit 的输入dataa 和datab。而原始灰度图像的数据是8 位的无符号整形的变量,卷积核为有符号的8 位的变量,所以该系统在设计时把输入数据分割成为4 个变量,如图1。并把这四个灰度值和权重进行对应项相乘之后相加,交给输出接口32 位的result 输出,这样可以一次性完成2x2 像素点的灰度值卷积。通过重复调用这个指令并把结果相加,同样可以完成3x3,4x4 等的图像卷积运算。

图1:VHDL 实现数据分割

图2:软件位移合并图像数据

图3:边缘提取原图及输出图像

2.2 自定义指令软件调用

运用Nois Ⅱ内核所提供的自定义指令的调用宏ALT_CI_CONVOLUTION_0(A,B),可以调用VHDL 设计的卷积指令。但是因为该宏命令的传入参数只有两个32 位长的整形变量,所以应当依照上面VHDL 硬件描述语言中的数据划分方法,在C 语言软件上需要把四个传入的8 位灰度像素点进行整合如图2,对于用位移相或的方法,把原始图像的灰度移动到32位的变量中再传入自定义指令的宏中。

3 成果及运用

3.1 功能实现

利用该自定义指令系统进行图像卷积,采用Laplacian 算子的卷积核进行边缘提取。先分别对文字和智能车实验赛道进行退化处理(图3a,c),之后再使用Laplacian 算子的卷积核对该图像卷积,对应得到如下的结果图像(图3b,d)。

3.2 效率提升分析

利用Nios Ⅱ提供的时间戳(timestamp)功能,分别对完全C 语言软件实现和自定义指令实现的过程进行计时,并且输出两者所用的时钟周期。

对于3×3 的卷积核需要调用三次自定义四点卷积指令。经过测试,通过计时多次得到结果取平均值得到完全软件实现所用时钟周期为108397813,而自定义指令需要的时钟周期为62150273。为纯软件实现的57.34%,速度提升了74.4%。

4 结语

该自定义指令系统,运用VHDL 构建了一个四个灰度像素点的卷积器,相比于以往的完全靠软件实现图像卷积,加快了卷积的过程。使速度加快70%以上,特别的现在对于图像的卷积层数越来越深,用这种软硬件结合的方式对于图像的实时处理有积极的意义。

猜你喜欢

调用像素点时钟
别样的“时钟”
古代的时钟
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
基于5×5邻域像素点相关性的划痕修复算法
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
基于系统调用的恶意软件检测技术研究
时钟会开“花”
利用RFC技术实现SAP系统接口通信