《基于FPGA实现分离用软件的图像处理系统设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA实现分离用软件的图像处理系统设计.docx(11页珍藏版)》请在第一文库网上搜索。
1、基于FPGA实现分离用软件的图像处理系统设计图像处理系统设计注意点:1将算法开发和FPGA实现分离用软件的图像处理环境可以使用大批量的图像样本进行测试及调试算法,再将算法映射到硬件上,这样大大节省了硬件调试周期。2 .算法的精度图像处理的算法中,大部分需要采用浮点数运算,而浮点数运算再FPGA中是非常不划算的,因此需要转换成定点数计算,此时会设计到浮点运算转定点运算时精度下降的问题。3 .软件和硬件的合理划分这里的软件是指医,CPU,硬件是指FPGA;一般结构规则计算量大的操作如SObeI算子均值滤波可以采用硬件进行,不规则的动态可变长度循环的底层算法由软件进行;图像处理FPGA设计基本方法:
2、1阵列结构结合流水线处理设计例如RGB图像,包括三组数据,处理时需要并行三通道后,每个通道进行分别的串行流水处理。2.缓存设计帧缓存行缓存列对齐3.资源分辨率处理窗口对资源影响成倍增加基于FPGA设计框架举例:1、灰度直方图统计直方图是图像的灰度分布统计的一种表示方法,统计目标图像中各个灰度点的像素个数,很多对于图像的调整算法都是基于此进行的;如何基于FPGA进行统计呢?1)由于是统计图像的直方图,所以一定是统计结果会在图像经过之后才能产生,因此需要进行缓存;缓存一:统计后的结果;缓存二:经过统计处理器的图像数据,以便后面和直方图做同步处理。2)图像常常用8位、24位、32位来表示一个像素的灰
3、度值,因此,统计种类分别为28=256/224=16777216/232=4294967296,地址位宽根据此进行选择设定;根据不同的精度选择不同的缓存方式:片内或片外缓存;3)处理流程:首先根据当前来的灰度值做为读RAM地址,读出RAM中对应灰度值的的统计值;第二将读出结果加一并回写回RAM的当前地址中;第三重复操作至当前图像处理结束;第四下一幅图像到来之前顺序按灰度值从0到最大的顺序将最终结果读出;第五读出最终结果后,将RAM清空。4)处理细节定义参数图像高度IH图像宽度Iw像素逐行输入因此以行同步脉冲的上升沿作为统计开始,行同步脉冲作为行统计计数器行统计计数器达到最大高度时,作为统计结束
4、标志。4 .灰度直方图均衡化处理1.统计出直方图,获取各个像素灰度累加和2.乘以均衡系数:(2CDWT)IW*IH(像素最大值/图像的面积)5 .直方图线性拉伸处理此节暂时略过;6 .线性滤波器首先需要区分线性和非线性滤波器的区别,区别在于其输出与输入之间是否有唯一且确定的函数传递。线性滤波器分类:平滑滤波器:主要包括均值滤波器和高斯滤波器等锐化滤波器:主要包括SOBE1算子1AP1AS算子梯度运算等滤波器的物理意义主要是响应信号对目标信号响应后的样子,也就是响应函数g(i,j)滑过整个图像,即对图像做一个卷积处理,就得到了滤波结果O1)均值滤波器概述用一个图像区域的各个像素的平均值来代替原图
5、像的各个像素值,主要作用是减小锐度,减小噪声。均值滤波一般出现在图像处理的预处理步骤,预处理后,根据噪声来源,例如针对椒盐噪声做中值滤波处理,针对高斯噪声做高斯滤波处理后续可能继续做边缘提取等复杂操作处理。2)均值滤波器设计设计一个滤波器可以理解成设计一个响应函数g(x,y)=i=-rrj=-rrI(x+i,y+j)/(2r+1)2数学公式很好理解,就是求一个窗口的所有像素灰度值之后后再除以整个窗口的面积也就是像素点个数,求出平均值;均值滤波的方法将数据存储成3x3的矩阵,然后求这个矩阵。在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个像素,构成一个滤波模
6、板,即去掉目标像素本身),再用模板中的全体像素httpw的平均值来代替原来像素值。KP12叫P2IP23P31P32P33(参考:http:WW1234S7891011121314151617*厂1n_n_n_n_n_FunJ11fU1111J0一世企完整的313陞列XIXZZZZ10)CO3COCZXaZXZ/W1。10CX2ZXOCSZDCZXZXXZXZ1DwXn12(eXT乂8X9X1o)(11XHX13XrX1e)G。XX12X13Xa)A2P.1 矩阵元素移位赋值2 a1ways(posedgee1kornegedgerstn)begin3if(rst_n=1b)beginp_11
7、,p_12,p_13p_21,p_22,p_23=p_12,二p_22,p31,p_32,p_33=p,32,ende1sebeginP3,p_23,row1);row_2;p_33,row_3;p_11,p_12,p_13=5b,p.21,5,b,5b;p_22,p_23(=5,b,54b0,5,bp_31,p_32,p_33=5b,5,b,5b1011121314151617181920232425262728293031323334endendenda1ways(posedgee1kornegedgerst_n)beginif(rst_n=1,b)beginmeanva1ueadd1=0
8、;mean_va1ue_add2=0;mean_va1ue_add3=0;ende1seif(per_href_ff1)beginmean_va1ue_add1=p_11+p_12+p_13;mean_va1ue_add2=p_21+0+p_23;meanva1ue_add3二p31+p32+p33;endend3536wire8:0Inean_VaIUe;8位数之和37wire5:0fin_y_data;平均数,除以8,相当于左移三位。3839 assignmean_va1ue=mean_va1ue_add1+mean_va1ue_add2+mean_va1ue_add3;40 assign
9、fin_y_data=mean_va1ue8:3;ViewCode3)sobe1算子:-101iGx=I-20+2I1 -10+1I-1-2-1IGy=000I+1+2+1I包括X和Y两个方向的两套3X3矩阵,使其分别和图像的X和Y方向进行卷积计算(矩阵的卷积计算即将所有元素做乘加计算);两个方向的卷积结果求平方根计算;计算结果如果大于阈值则等于Oxffff,如果小于阈值则等于0;最终输出则是图像的边缘。参考代码如下:由于算子简单以及有正负区分,因此需要做正值和负值分别计算后再进行相减计算。1矩阵元素移位赋值2 a1ways(posedgee1kornegedgerst_n)begin3if(
10、rst_n=1b)begin4p11,p_12,p_13=5,b,5b,5,b;5p_21,p_22,p_23二15b,15,b,15b;6p_31,p_32,p_33=15,b,15b,15,b;101112131415161718192023242526272829303132338e1sebegin9if(per_hrefff0=1&f1agdo=1)beginp_13=p_12,p_23=p_22,P.33=p_32,p_13=5b,p_23=5b,P_33=5b,p_13,row;p_23,row_2;p_33,row_3;5,b,5ib05ib0,5,b5b,5bp_11,p_12
11、,p_21,p_22,p_31p_32,ende1sebeginp1,p2,p_21,p_22,p31,p_32,endendenda1ways(posedgee1kornegedgerstn)beginif(rst_n=1,b)beginmean_va1ue_add1=0;meanya1ueadd2=0;mean_va1ue_add3=0;ende1seif(per_href_ff1)beginmeanva1ue_add1二p11+p12+p13;mean_va1ue_add2=p_21+0+p_23;mean_va1ue_add3=P_31+p_32+p_33;end34end36wire
12、8:0mean_va1ue;8位数之和37wire5:0fin_y_data;平均数,除以8,相当于左移三位。39 assignmean_va1ue=mean_va1ue_add1+mean_va1ue_add2+mean_va1ue_add3;40 assignfin_y_data=mean_va1ue8:3;ViewCode3)sobe1算子T0+1GX=-20+2I-10+1I-1-2-1IGy=000I+12+1I5 .非线性滤波器非线性滤波器通常下是没有特定的转移函数,统计排序滤波器;中值滤波将3*3滑动块中的灰度值进行排序,然后用排序的中间值取代3*3滑块中心的值。示意图如下图所示
13、。15791213182124T中值图3.2中值注波算法实现框图第一步:将每一行按最大值、中间值、最小值排列第二步:提取出最大值的最小值,中间值的中间值,最小值的最大值第三步:将第二步提取出来的三个数进行排序,中间值即我们要求的中间值。6 .图像分割图像分割是将图像划分成若干个互不相交的小区域的过程,将图像中有意义的特征或应用所需要的特征信息提取出来,最终结果是分割成一些具有某种特征的单元,称为图像的基元。黄飞4p_11,p_12,p_13二5,b,5b,5,b;5p_21,p_22,p_23=15b,15,b,15456789b0;6p_31,p_32,p_33=15,b,15b,15,b;7end8e1sebegin9if(per_href_ffO=1&f1ag_do=1)begin