《FPGA与数字图像ISP课程》
设计报告
实验目录
实验目录1-1
一、数字图像处理ISP基础
1.1 数字图像的组成
现代数字图像(手机,电脑,IMAX电影,商业显示屏),均是由一系列的像素点组成,这些像素点称为像素阵列:
1. 像素(Pixel),组成数字图像的基础元素,单色图像,像素也是单色的,从最亮至最暗,分成一系列等级,称为图像的灰度。例如8位单色像素,从全0(最暗)至全1(最亮),具有256个灰度等级,组成的图像称为256级灰度图像。彩色图像通常全色域组成(或者红绿蓝三原色RGB格式,或者是YUV格式,即YCbCr格式),例如一个24位的RGB像素,组成的图像颜色成分为:256*256*256
2. 像素阵列通常为矩形,矩形阵列的参数有:阵列的宽度W,高度H。例如电脑显示器的1024*768,电视机的1080P为1920*1080,4K图像的阵列为3840*2160。由W*H组成的一幅图像,称为一帧(a frame)
3. 动态图像(视频)显示过程中,单位时间(秒)能够显示的图像的帧数,表示视频的质量,例如电脑显示器通常设置为70 fps(Frame Per Second),IMAX电影需要高于200fps,冬奥LED显示屏为500fps,体育AI比赛助理裁判需要1000fps,BBC和世纪地理的动物视频拍摄,需要2000fps以上,科学研究(粒子碰撞)的观察,需要10万fps以上的捕获和显示。
4. 数字图像的显示存储映射模式,通常为连续存放。
例如:图像的阵列为W*H=600*400,其图像阵列为:
图像阵列视图
其在显示存储器中的映射为(W=600,H=400):
显示存储器视图
图像处理过程,是将源图像:,经过函数T转换为目标图像:
其中的转换函数T,通常是一个滤波器(滤镜)。而滤波器的数学模型,与DSP类似,是一个卷积函数。但与DSP最大的不同是:
1. 图像处理中,T卷积时,源图像,卷积范围并不从x和y两个方向的全部卷积。这是因为离当前处理的目标像素点距离比较远的像素点,对计算结果的贡献率非常低,可以忽略不计。因此图像T卷积,仅仅需要卷积计算目标像素点领域的很小的一个范围,即可得到足够精确的数值。(即数字图像处理过程,并不需要全部领域像素参与计算)
2. 现代数字图像处理中,大多使用一个3*3的模板做为邻域范围:
3X3图像比例
其中:
1. :对应模板坐标的卷积函数系数,通常通过卷积函数的数学模型分析(例如微分方程得到的,因此,若函数确定,则系数是已知的。
2. :对应模板坐标的原图像数值(例如单色图像,则是它在该点的像素的值);
3. :目标图像在坐标的像素值;
4. :图像处理函数
5. :源图像(实际使用模板的邻域)
使用3*3模板进行全图像卷积的过程:
源图像第0次卷积(Z5=1,0):
图像卷积视图
图像卷积识别计算
1.3数字图像ISP的边界处理
当使用3*3模板做卷积计算:
1. 当Z5的坐标位于图像的最左列(0列)时,计算阵列的最左列(Z1,Z4,Z7)三个像素将出现在图像的外围(左边界之外),此时目标图像最左列,卷积计算的诸元不全,称之为左边界
2. 当Z5的坐标位于图像的最右列(599列)时,计算阵列的右列(Z3,Z6,Z9)三个像素将出现在图像的外围(右边界之外),此时目标图像最右列,卷积计算的诸元不全,称之为右边界
3. 当Z5的坐标位于图像的最上行 (0行)时,计算阵列的上列(Z1,Z2,Z3)三个像素将出现在图像的外围(最上行之外),此时目标图像最上行,卷积计算的诸元不全,称之为上边界
4. 当Z5的坐标位于图像的最下行 (399行)时,计算阵列的上列(Z7,Z8,Z9)三个像素将出现在图像的外围(最下行之外),此时目标图像最下行,卷积计算的诸元不全,称之为下边界
边界处理通常采用零填入,或者镜像填入。后面的设计例子中采用教材中的零填入原则。
1.4中值滤镜例子
1.4.1源图像
原图像
1.4.3加入20%椒盐噪声
加入20%椒盐噪声
1.4.4经中值滤镜处理
经中值滤镜处理
二、中值滤镜
2.1数学模型
若采用3*3模板,其卷积公式为:
这里的系数:,需要满足:
这里的中值Med,为Z1至Z9的排序(升序或降序)的第5个数值。
中值滤镜的图像处理,是以牺牲图像的清晰度,换取消除图像椒盐噪声(特亮点噪声和特暗点噪声)。
2.2设计需求
1. 中值滤镜,3×3模板;
2. 流水线设计,吞吐量每个节拍一个像素(目标千帧速率);
3. 源图像尺寸600×400;
4. 目标图像边界处理填0;
5. 像素深度8位;
6. 显存宽度32位(吞吐量分析);
7. 忽略图像采集;
2.3顶层框图
设计顶层框图视图
吞吐量分析:
1. 目标是1个时钟周期,计算出一个像素;
2. 由于计算模板采用3*3,三行三列,三行数据读取,至少三个时钟周期;而写入至少一个时钟周期。
3. 若存储器的数据宽度为像素宽度,三个读周期一个写周期,仅仅完成一个像素,吞吐量为1/4;
4. 为了实现1/1(4/4),若存储器的数据宽度为像素宽度的4倍,则一个读周期,读入4个像素,三个读周期,读出三行的四个像素;一个写周期,写四个像素。其平均吞吐量实现1/1。(图像字周期为三拍读一拍写,构成4拍周期);
2.4顶层架构
设计顶层架构1-1
设计顶层架构1-11视图
关于数字图像处理设计课程今天我们先讨论至此,接触过数字电路以及MATLAB课程的同学及在职人员,有一些Verilog hdl 硬件描述语言的基础者;通过以上设计的顶层框图及顶层设计架构已经给出了设计实现关于中值滤波器的电路描述思想,后续文章中将继续讨论FPGA在数字图像中的重要性以及应用深度的学习设计思想;欢迎老铁们一起讨论学习分享。