【FPGA/图像处理】局部滤波器-二值模板匹配
世界Skill
图像处理理系列文章基本都是我本科毕设论文同步发布,这个项目以LGPL许可被发布在F-I-L。二值模板匹配也可以看做是一种形态学操作,比起腐蚀膨胀它的目的更为极端和明确,如果一个窗口与模板完全一致,则保留中心像素,否则消除。这种效果适用于一些细化算法[21,24],比如在某些迭代算法中作为最后迭代结束的一个参照。本节将会说明一个二值模板匹配模块的实现。
这个IP核的资源在这里:
MatchTemplateBin
3 算法实现
明确了设计和架构,便可以进行算法的实现。本章将会说明如何实现图像处理的算法,以及如何运用它们。
3.14 局部滤波器-二值模板匹配
二值模板匹配也可以看做是一种形态学操作,比起腐蚀膨胀它的目的更为极端和明确,如果一个窗口与模板完全一致,则保留中心像素,否则消除。这种效果适用于一些细化算法[21,24],比如在某些迭代算法中作为最后迭代结束的一个参照。本节将会说明一个二值模板匹配模块的实现。
3.14.1 原理
二值模板匹配的基本原理很简单,如式3-14-1所示,如果窗口和模板完全一致,则中心像素保留,否则置0,效果如图3-14-1。

图3-14-1 模板匹配效果
3.14.2 设计
根据原理可知,MatchTemplateBin核(以下简称MTB核)需要的配置参数和端口如表3-14-1与表3-14-2。
名字 | 类型 | 范围 | 默认值 | 说明 |
---|---|---|---|---|
work_mode | 无符号 | 0为流水线模式,1为请求响应模式 | 0 | 工作模式 |
window_width | 无符号 | 2 - 15 | 1 | 窗口宽度和高度。 |
名字 | 端口 | 类型 | 范围 | 默认值 | 说明 | clk | 输入 | 无符号 | 无 | 无 | Clock. |
---|---|---|---|---|---|
rst_n | 输入 | 无符号 | 无 | 无 | 复位,低有效。 |
template | 输入 | 无符号 | window_width * window_width - 1 : 0 | 无 | 用于操作的模板。 |
in_enable | 输入 | 无符号 | 无 | 无 | 输入数据使能,在流水线模式下,它是另一个复位信号,在请求响应模式下,只有在它有效的时候in_data才会被真正地改变。 |
in_data | 输入 | 无符号 | color_width * in_window_width * in_window_width - 1 : 0 | 无 | 输入数据,必须和in_enable同步输入。 |
out_ready | output | 无符号 | 无 | 无 | 输出数据有效,在两种模式下,这个信号都会在out_data可以被读取的时候有效。 |
out_data | output | 无符号 | color_width - 1 : 0 | 无 | 输出数据,将会和out_ready同步输出。 |
3.14.3 实现
根据3.14.2的设计便可以实现一个MTB核,流水线模式和请求响应模式实现如下。
3.14.3.1 流水线模式
输入使能后1个周期第一个结果被输出,开始流水化工作,波形如图3-14-2。

图3-14-2 流水线模式时序
3.14.3.2 请求响应模式
基本与3.14.3.1一致,但只有in_enable的上升沿时才会有窗口被输入,波形如图3-14-3。

图3-14-3 请求响应模式时序
3.14.3.3 IP核GUI
完成功能后对MTB核进行了封装,封装如图3-14-4。

图3-14-4 MTB核的GUI
3.14.4 仿真
MTB核只对二值图像有意义,我选取了两张二值图像闭运算的二值图像作为仿真源,分别测试了两套模版,原始图像如图3-14-5。

图3-14-5 原始测试图像
使用HDL功能仿真和软件仿真的结果进行PSNR的计算,仿真结果如图3-14-6所示。

图3-14-6 仿真结果,左侧为流水线模式下的HDL功能仿真结果,中间为请求响应模式下的HDL功能仿真结果,右侧为软件仿真结果
仿真结果的清晰图像如图3-14-8,可见模板匹配在适当的情况下的确可以满足一些效果。

图3-14-7 部分仿真结果,左侧为模板为000010000,右侧为111111111
3.14.5 资源和时序
最终实现与窗口大小关系很大,此处只对窗口为3x3的状况分析,根据Vivado生成的报表,主要资源耗费如表3-14-3。
Slice LUTs* | Slice Registers |
---|---|
5 | 2 |
同时根据时序报告,最大的Data Path Delay(数据路径延迟)为2.199ns,即:
FMax = 454.75MHz
即说明,MTB核在流水线模式下,理论上在处理1080p全高清图像时可以达到219帧。
由于数据路径延迟和应用的最终约束设置强相关,所以仅供参考。
3.14.6 分析与结论
PSNR如表3-14-5。
1-000010000 | 1-111111111 | 2-000010000 | 2-111111111 | Total |
---|---|---|---|---|
1000000.00 | 1000000.00 | 1000000.00 | 1000000.00 | 1000000.00 |
PSNR均值为最大值,MTB核与软件等效,同时可以达到很高的FMax,设计成功。
参考文献
[21] 施启乐,王从军,黄树槐等.数学形态学图像细化算法在RE中的应用研究[J].华中科技大学学报(自然科学版),2004,32(7):37-39.DOI:10.3321/j.issn:1671-4512.2004.07.013.
[24] 曹玉龙. 线划图像的细化算法研究[D].长安大学,2011.
感谢
仿真图像来源:
LM7-アイカツ
ぜろきち-Blue star