打印
[FPGA]

图像聚类与标记的FPGA实现——工业视觉应用

[复制链接]
5496|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 feihufuture 于 2021-9-6 16:08 编辑

目前,在工业视觉中,产线图像帧流,经过图像预处理,经过图像分割后,再加上图像聚类与标记,则可进入后端处理,如神经网络分类等等。

目前,经过多年的技术升级与优化,图像聚类与标记的FPGA IP,鲁棒性更强,在效率上完虐PC机,优势除了算法优化好以外,还得益于FPGA的并行性和DDR访问通道数的并行性。

端口信号如下:
cluster_top 
        (
        input                                                        Clk,
        input                                                        Rst,
        
        
        input                [15                :        0]                BinaryImageWidth,
        input                [15                :        0]                BinaryImageHeight,
        input                [15                :        0]                RoiStartRow,//start from 0
        input                [15                :        0]                RoiEndRow,//start from 0
        input                [15                :        0]                RoiStartCol,//start from 0, must > 0, to insure StartpPos - 1'b1 >= 0
        input                [15                :        0]                RoiEndCol,//start from 0        
        input                [15                :        0]                ClusterDistance,
        input                                                        DataModify,
         
        
        //for saving time, the upper layer can get the next line ready, which will be used next time.
        input                                                         ClusterStart,
        output                                                        LineDataFetch,
        input                                                        LineDataRdy,
        output                [15                :        0]                LinePos,          //the line position in the image, which is to be read from ddr by upper layer.        
        output                [15                :        0]                LineRdAddr,  //upper layer only read [RoiStartRow,RoiEndRow], this layer only read [RoiStartCol,RoiEndCol]
        input                [7                :        0]                LineRddata,
        output                                                        LineDone,//line done        
        input                [8                :        0]                LineWrAddr,//wait until the upper layer read this blockram line data.
        output                [127        :        0]                LineWrData,//data is valid for one clock period delay to LineWrAddr.        
        
        
        
        
        
        
        //1) read RAM data to modify, and write modified data to outer RAM, both use the same RAM.
        //2) DmLineRdAddr and DmLineWrAddr will deal with the data [RoiStartCol,RoiEndCol]
        //3) DmLineRdAddr/DmLineRddata/DmLineWrEn/DmLineWrAddr/DmLineWrData are operate the RAM.
        //4) RAM data : 8'hff is the default value, others are the real class.
        output                                                        DmLineDataFetch,
        input                                                        DmLineDataRdy,
        output                [15                :        0]                DmLinePos,//the line position in the image, which is to be read from ddr by upper layer.
        output                [9                :        0]                DmLineRdAddr,//8192 bytes/16 = 512, so 10 bit width is enough.
        input                [127        :        0]                DmLineRddata,
        output                                                        DmLineWrEn,
        output                [9                :        0]                DmLineWrAddr,//modify result write into outer RAM address.
        output                [127        :        0]                DmLineWrData,
        output                                                        DmLineDone,//modify line data done, the upper layer use this signal to write line data into ddr.
        output                                                        DmDone,
        
        
        

        output                                                        ClusterFinish,//all line finish
        output                [15                :        0]                ClusterNum,
        input                [15                :        0]                ClusterRamAddr,        
        output                [111        :        0]                ClusterDoutb


效果方面,举个简单的图案把:








使用特权

评论回复

相关帖子

沙发
KiddyFY| | 2021-12-6 14:35 | 只看该作者
学习一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:WX:feihu612 免费合作开发ECAT主从站

171

主题

1027

帖子

97

粉丝