图像处理系统设计注意点:
1.将算法开发和FPGA实现分离
用软件的图像处理环境可以使用大批量的图像样本进行测试及调试算法,再将算法映射到硬件上,
这样大大节省了硬件调试周期。
2.算法的精度
图像处理的算法中,大部分需要采用浮点数运算,而浮点数运算再FPGA中是非常不划算的,因此需 要转换成定点数计算,此时会设计到浮点运算转定点运算时精度下降的问题。
3.软件和硬件的合理划分
这里的软件是指DSP,CPU,硬件是指FPGA;一般 结构规则 计算量大的操作如sobel算子 均值滤波 可以采用硬件进行,不规则的动态可变长度循环的底层算法由软件进行;
图像处理FPGA 设计基本方法:
1.阵列结构结合流水线处理设计
例如RGB图像,包括三组数据,处理时需要并行三通道后,每个通道进行分别的串行流水处理。
2.缓存设计
帧缓存 行缓存 列对齐
3.资源
分辨率 处理窗口 对资源影响成倍增加
基于FPGA设计框架举例: 1、灰度直方图统计
直方图是图像的灰度分布统计的一种表示方法,统计目标图像中各个灰度点的像素个数,很多对于 图像的调整算法都是基于此进行的;
如何基于FPGA进行统计呢?
1)由于是统计图像的直方图,所以一定是统计结果会在图像经过之后才能产生,因此需要进行缓 存;
缓存一:统计后的结果;
缓存二:经过统计处理器的图像数据,以便后面和直方图做同步处理。
2)图像常常用8位、24位、32位来表示一个像素的灰度值,
因此,统计种类分别为2^8=256/2^24=16777216/2^32=4294967296,地址位宽根据此进行 选择设定;
根据不同的精度选择不同的缓存方式:片内或片外缓存;
3)处理流程:
首先根据当前来的灰度值做为读RAM地址,读出RAM中对应灰度值的的统计值;
第二将读出结果加一并回写回RAM的当前地址中;
第三重复操作至当前图像处理结束;
第四下一幅图像到来之前顺序按灰度值从0到最大的顺序将最终结果读出;
第五读出最终结果后,将RAM清空。
4)处理细节
定义参数 图像高度IH 图像宽度IW 像素逐行输入
因此以行同步脉冲的上升沿作为统计开始,行同步脉冲作为行统计计数器
行统计计数器达到最大高度时,作为统计结束标志。
2.灰度直方图均衡化处理
1.统计出直方图,获取各个像素灰度累加和
2.乘以均衡系数:(2^DW-1)/IW*IH(像素最大值/图像的面积)
直方图是图像的灰度分布统计的一种表示方法,统计目标图像中各个灰度点的像素个数,很多对于 图像的调整算法都是基于此进行的;
如何基于FPGA进行统计呢?
1)由于是统计图像的直方图,所以一定是统计结果会在图像经过之后才能产生,因此需要进行缓 存;
缓存一:统计后的结果;
缓存二:经过统计处理器的图像数据,以便后面和直方图做同步处理。
2)图像常常用8位、24位、32位来表示一个像素的灰度值,
因此,统计种类分别为2^8=256/2^24=16777216/2^32=4294967296,地址位宽根据此进行 选择设定;
根据不同的精度选择不同的缓存方式:片内或片外缓存;
3)处理流程:
首先根据当前来的灰度值做为读RAM地址,读出RAM中对应灰度值的的统计值;
第二将读出结果加一并回写回RAM的当前地址中;
第三重复操作至当前图像处理结束;
第四下一幅图像到来之前顺序按灰度值从0到最大的顺序将最终结果读出;
第五读出最终结果后,将RAM清空。
4)处理细节
定义参数 图像高度IH 图像宽度IW 像素逐行输入
因此以行同步脉冲的上升沿作为统计开始,行同步脉冲作为行统计计数器
行统计计数器达到最大高度时,作为统计结束标志。
2.灰度直方图均衡化处理
1.统计出直方图,获取各个像素灰度累加和
2.乘以均衡系数:(2^DW-1)/IW*IH(像素最大值/图像的面积)
直方图是图像的灰度分布统计的一种表示方法,统计目标图像中各个灰度点的像素个数,很多对于 图像的调整算法都是基于此进行的;
如何基于FPGA进行统计呢?
1)由于是统计图像的直方图,所以一定是统计结果会在图像经过之后才能产生,因此需要进行缓 存;
缓存一:统计后的结果;
缓存二:经过统计处理器的图像数据,以便后面和直方图做同步处理。
2)图像常常用8位、24位、32位来表示一个像素的灰度值,
因此,统计种类分别为2^8=256/2^24=16777216/2^32=4294967296,地址位宽根据此进行 选择设定;
根据不同的精度选择不同的缓存方式:片内或片外缓存;
3)处理流程:
首先根据当前来的灰度值做为读RAM地址,读出RAM中对应灰度值的的统计值;
第二将读出结果加一并回写回RAM的当前地址中;
第三重复操作至当前图像处理结束;
第四下一幅图像到来之前顺序按灰度值从0到最大的顺序将最终结果读出;
第五读出最终结果后,将RAM清空。
4)处理细节
定义参数 图像高度IH 图像宽度IW 像素逐行输入
因此以行同步脉冲的上升沿作为统计开始,行同步脉冲作为行统计计数器
行统计计数器达到最大高度时,作为统计结束标志。
2.灰度直方图均衡化处理
1.统计出直方图,获取各个像素灰度累加和
2.乘以均衡系数:(2^DW-1)/IW*IH(像素最大值/图像的面积)
直方图是图像的灰度分布统计的一种表示方法,统计目标图像中各个灰度点的像素个数,很多对于 图像的调整算法都是基于此进行的;
如何基于FPGA进行统计呢?
1)由于是统计图像的直方图,所以一定是统计结果会在图像经过之后才能产生,因此需要进行缓 存;
缓存一:统计后的结果;
缓存二:经过统计处理器的图像数据,以便后面和直方图做同步处理。
2)图像常常用8位、24位、32位来表示一个像素的灰度值,
因此,统计种类分别为2^8=256/2^24=16777216/2^32=4294967296,地址位宽根据此进行 选择设定;
根据不同的精度选择不同的缓存方式:片内或片外缓存;
3)处理流程:
首先根据当前来的灰度值做为读RAM地址,读出RAM中对应灰度值的的统计值;
第二将读出结果加一并回写回RAM的当前地址中;
第三重复操作至当前图像处理结束;
第四下一幅图像到来之前顺序按灰度值从0到最大的顺序将最终结果读出;
第五读出最终结果后,将RAM清空。
4)处理细节
定义参数 图像高度IH 图像宽度IW 像素逐行输入
因此以行同步脉冲的上升沿作为统计开始,行同步脉冲作为行统计计数器
行统计计数器达到最大高度时,作为统计结束标志。
2.灰度直方图均衡化处理
1.统计出直方图,获取各个像素灰度累加和
2.乘以均衡系数:(2^DW-1)/IW*IH(像素最大值/图像的面积)
3.线性滤波器
首先需要区分线性和非线性滤波器的区别,区别在于其输出与输入之间是否有唯一且确定的函数 传递。
线性滤波器分类:
平滑滤波器:主要包括均值滤波器和高斯滤波器等
锐化滤波器:主要包括SOBEL算子 LAPLAS算子 梯度运算等
滤波器的物理意义主要是响应信号对目标信号响应后的样子,也就是响应函数g(i,j) 滑过整个图 像,即对图像做一个卷积处理,就得到了滤波结果。
1)均值滤波器概述
用一个图像区域的各个像素的平均值来代替原图像的各个像素值,主要作用是减小锐度,减小噪 声。
均值滤波一般出现在图像处理的预处理步骤,
预处理后,根据噪声来源,例如针对椒盐噪声做中值滤波处理,针对高斯噪声做高斯滤波处理
后续可能继续做边缘提取等复杂操作处理。
2)均值滤波器设计
设计一个滤波器可以理解成设计一个响应函数g(x,y)=Σi=-rrΣj=-rr I(x+i,y+j)) / (2r+1)2
数学公式很好理解,就是求一个窗口的所有像素灰度值之后后再除以整个窗口的面积也就是像素 点个数,求出平均值;
均值滤波的方法将数据存储成3x3的矩阵,然后求这个矩阵。在图像上对目标像素给一个模板,
该模板包括了其周围的临近像素(以目标象素为中心的周围 8 个像素,构成一个滤波模板,即去 掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。 |