fpga图像处理中处理窗口的获取
分类:
文章
•
2025-02-21 14:27:04
- 窗口概念:在用FPGA图像处理时往往要对中心像素及其邻域像素进行处理,这是我们就要选取一个合适的窗口一般为N*N并且这个窗口在整幅图像上遍历所有像素点。
- 获取方法:窗口的获取有很多种方法,这里用generate-for语句生成,以后可以再补充其他方法。
- 首先数据流是一个像素一个像素传进来的,而我们假设要获取3*3的窗口则需要一个存储窗口的存储器,这里用由9个寄存器组成rom/ram来存储,且对一部分数据缓存,这里选用FIFO缓存。
- 要想知道数据读取到哪一个位置就要对输入数据进行行列计数。
- 还需要一整个窗口获取后的标志位即当计数到坐标为(3,3)时
- 需要被缓存的是每行余下的像素,这里每行用一个FIFO缓存,就需要三个FIFO。
- 下面来介绍下算法思想:
- 首先简单介绍下如下图,窗口从起始位置出发一直到结尾遍历整张图片结束然后每行窗口内的像素是要被读取的,余下的被缓存进FIFO等待窗口经过读取。
- 因为像素是一个一个传进来的第一个是图片第一行的第一个像素,这里采用流水线的模式进行窗口的获取和余下像素的缓存。要注意的是移动的并不是窗口,窗口是固定的,移动的是像素。流程如下。数据流先经过窗口(可以先预设一个空白矩阵,然后将这里面的数据赋值给一维数组构成的窗口)可以用移位寄存器,三个FIFO用来缓存每行余下的像素值,等待窗口读取。这里要注意窗口数据读取的时机应该为图片中第一个流程的时候(第二点中提到过)。