基于FPGA的图像拉普拉斯边缘提取
0赞基于FPGA的图像拉普拉斯边缘提取
AT7_Xilinx开发板(USB3.0+LVDS)资料共享
腾讯链接:https://share.weiyun.com/5GQyKKc
百度网盘链接:https://pan.baidu.com/s/1M7PLzRs-yMJv7NFJE8GVAw
提取码:qr0t
1系统概述
如图所示,这是整个视频采集系统的原理框图。上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOS Sensor就能够持续输出标准RGB的视频数据流,FPGA通过对其同步信号,如时钟、行频和场频进行检测,从而从数据总线上实时的采集图像数据。MT9V034摄像头默认初始化数据就能输出正常的视频流,因此FPGA中实际上未作任何IIC初始化配置。
在FPGA内部,采集到的视频数据先通过一个FIFO,将原本25MHz频率下同步的数据流转换到50MHz的频率下。接着将这个数据再送入写DDR3缓存的异步FIFO中,这个FIFO中的数据一旦达到一定数量,就会写入DDR3中。与此同时,读取DDR3中缓存的图像数据,缓存到FIFO中,并最终送往LCD驱动模块进行显示。LCD驱动模块不断的发出读图像数据的请求,并驱动液晶显示器显示视频图像。
本实例除了前面提到对原始图像做DDR3缓存和显示,还会在原始图像缓存到DDR3之前,另外做图像的多行缓存和拉普拉斯边缘提取处理,获得新的图像流,这个图像流写入到DDR3中。根据LCD显示模块的请求,读取DDR3中处理后的图像进行显示。最终在VGA液晶显示器上,可以看到左侧图像是原始的图像,右侧图像是经过边缘提取处理后的图像。
2图像拉普拉斯边缘提取
2.1基本概念
在图像增强中,平滑是为了消除图像中噪声的干扰,或者降低对比度。与之相反,有时为了强调图像的边缘和细节,需要对图像进行锐化,提高对比度。
拉普拉斯锐化图像是根据图像某个像素的周围像素到此像素的突变,也就是说它的依据是图像像素的变化程度。我们知道,一个函数的一阶微分描述了函数图像是朝哪里变化的,即增长或者降低;而二阶微分描述的则是图像变化的速度,急剧增长下降还是平缓的增长下降。那么据此我们可以猜测出依据二阶微分能够找到图像的色素的过渡程度,例如白色到黑色的过渡就是比较急剧的。
或者用官方点的话说:当邻域中心像素灰度低于它所在的领域内其它像素的平均灰度时,此中心像素的灰度应被进一步降低,当邻域中心像素灰度高于它所在的邻域内其它像素的平均灰度时,此中心像素的灰度应被进一步提高,以此实现图像的锐化处理。
2.2拉普拉斯(laplace)算子
最常用的无方向性的二阶差分算子,其模板有3*3、5*5和7*7等多种形式。。
例如,以3*3算子为例,1~8像素是(x,y)点周围邻近的8个像素点。可以使用右侧的2种模板对(x,y)以及周边8个像素点进行运算,替代原来的(x,y)点。
2.3Matlab实现
基于第2种拉普拉斯边缘提取算子,我们的Matlab代码如下:
clear
clc
I1=imread('.\lena.jpg');
I=im2double(I1);
[m,n,c]=size(I);
A=zeros(m,n,c);
%for R
for i=2:m-1
for j=2:n-1
A(i,j,1)=I(i-1,j-1,1)+I(i+1,j-1,1)+I(i-1,j+1,1)+I(i+1,j+1,1)+I(i+1,j,1)+I(i-1,j,1)+I(i,j+1,1)+I(i,j-1,1)-8*I(i,j,1);
end
end
%for G
for i=2:m-1
for j=2:n-1
A(i,j,2)=I(i-1,j-1,2)+I(i+1,j-1,2)+I(i-1,j+1,2)+I(i+1,j+1,2)+I(i+1,j,2)+I(i-1,j,2)+I(i,j+1,2)+I(i,j-1,2)-8*I(i,j,2);
end
end
%for B
for i=2:m-1
for j=2:n-1
A(i,j,3)=I(i-1,j-1,3)+I(i+1,j-1,3)+I(i-1,j+1,3)+I(i+1,j+1,3)+I(i+1,j,3)+I(i-1,j,3)+I(i,j+1,3)+I(i,j-1,3)-8*I(i,j,3);
end
end
B=A;
%output
imwrite(B,'lena.tif','tif');
imshow('.\lena.jpg');title('origin image');figure
imshow('lena.tif');title('image after laplace transform')
滤波效果如下。
Matlab源码、Lena.jpg原图和比对图存放在at7_img_ex03\matlab文件夹下。
3基于FPGA的图像平滑处理
工程文件夹at7_img_ex03\zstar.srcs\sources_1\new下的laplace_transform.v模块实现了图像的拉普拉斯边缘提取处理。该模块功能框图如下,使用2个FIFO,分别缓存前后行,即进入图像处理的3组数据流分别是第n-1行、第n行和第n+1行的图像,控制输入数据流和2个FIFO缓存的图像在同一个位置、寄存器对前后2个像素的图像值进行缓存,这样便可实现中心像素点以及前后列、上下行之间数据的同步处理了。
AT7_Xilinx开发板(USB3.0+LVDS)资料共享
腾讯链接:https://share.weiyun.com/5GQyKKc
百度网盘链接:https://pan.baidu.com/s/1M7PLzRs-yMJv7NFJE8GVAw
提取码:qr0t