FPGA图像处理中矩阵提取

本文介绍了FPGA图像处理中矩阵提取的原理和实现,特别是利用line buffer进行矩阵运算。作者探讨了Xilinx和Altrea的IP在处理边缘像素时的不便,并提出了一种使用SpinalHDL的解决方案,该方案无需用户预先填充边缘像素,简化了RTL设计。文章详细展示了3x3和5x5矩阵的仿真结果,并指出对于边缘像素的处理,填充的元素可能是其他边缘像素值。
摘要由CSDN通过智能技术生成

对于图像处理的知识,个人仅限于研究生时上过的数字图像处理课程,而对于FPGA的数字图像处理,一直仅限于略(yan)有(gao)耳(shou)闻(di)。国庆躺尸看了点儿简单的FPGA图像处理,发现在FPGA图像处理中矩阵提取是个有趣的东东,本文仅限个人DIY,是否具有工程价值不做论述,权当一乐。

无处不在的line buffer

闲暇逛知乎,发现在FPGA图像处理中,凡事牵涉到矩阵运算的算法里面基本都有line buffer的身影,而line buffer往往采用Xilinx的Ram-based Shift Register或者Altrea的Shift Register来实现:

嗯,简单明了,似乎没什么难的,随后翻了翻两个厂商的IP,发现有点儿别扭:

1、我把数据从IP的din灌入进去了,但输出数据什么时候有效没告诉我啊,虽然仿真时可以看到数据有效时的状态但设计里你还要我手动去控制判断什么时候是有效输出是不是有点儿过分了 ……

2、当年老师也讲过在进行矩阵处理时对于边缘像素提取矩阵时往往需要填充像素。软件里感觉还好但FPGA里实时地你要我补像素貌似有点儿麻烦哎 ……

也许个人太懒了吧,这种事情做起来都不复杂,但要在RTL里做这些我还是有点儿拒绝的。另辟蹊径,借助SpinalHDL里方便的电路描述符方式,魔改实现一个IP:

1、串行输入像素,带Valid指示,输入前无需用户进行边缘像素填充。

2、输出nxn矩阵用于做图像处理,输出数据有效带Valid标签。

对于3x3矩阵,用户调用的RTL接口列表将会如下所示(起名有点儿随意 ):

module bufWindow (
  input         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值