在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4010|回复: 0

[原创] 玩转Zynq连载46——[ex65] MT9V034摄像头的图像拉普拉斯边缘提取

[复制链接]
发表于 2019-12-30 10:04:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
00.jpg
1系统概述
如图所示,这是整个视频采集系统的原理框图。上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOS Sensor就能够持续输出标准RGB的视频数据流,FPGA通过对其同步信号,如时钟、行频和场频进行检测,从而从数据总线上实时的采集图像数据。MT9V034摄像头默认初始化数据就能输出正常的视频流,因此FPGA中实际上未作任何IIC初始化配置。
在FPGA内部,采集到的视频数据先通过一个fifo,将原本25MHz频率下同步的数据流转换到50MHz的频率下。接着将这个数据再送入写DDR3缓存的异步FIFO中,这个FIFO中的数据一旦达到一定数量,就会通过AXI HP0总线写入DDR3中。与此同时,AXI HP0总线也会读取DDR3中缓存的图像数据,缓存到FIFO中,并最终送往LCD驱动模块进行显示。LCD驱动模块不断的发出读图像数据的请求,并驱动液晶显示器显示视频图像。
本实例除了前面提到对原始图像做DDR3缓存和显示,还会在原始图像缓存到DDR3之前,另外做图像的多行缓存和拉普拉斯边缘提取处理,获得新的图像流,这个图像流通过AXIHP1总线写入到DDR3中。AXI HP1总线也会根据LCD显示模块的请求,读取处理后的图像进行显示。最终在VGA液晶显示器上,可以看到左侧图像是原始的图像,右侧图像是经过边缘提取处理后的图像。
46-1.JPG
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)点。
46-2.JPG
2.3Matlab实现
         基于第2种拉普拉斯边缘提取算子,我们的Matlab代码如下:
46-3.JPG
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('originimage');figure
imshow('lena.tif');title('image afterlaplace transform')
         滤波效果如下。
46-4.png
         Matlab源码、Lena.jpg原图和比对图存放在project\zstar_ex65\matlab文件夹下。
3基于FPGA的图像平滑处理
         工程文件夹project\zstar_ex65\zstar.srcs\sources_1\new下的laplace_transform.v模块实现了图像的拉普拉斯边缘提取处理。该模块功能框图如下,使用2个FIFO,分别缓存前后行,即进入图像处理的3组数据流分别是第n-1行、第n行和第n+1行的图像,控制输入数据流和2个FIFO缓存的图像在同一个位置、寄存器对前后2个像素的图像值进行缓存,这样便可实现中心像素点以及前后列、上下行之间数据的同步处理了。
46-5.JPG
4装配说明
         MT9V034摄像头模块通过Zstar ISB底板(P3)与Zstar Zynq开发板连接,VGA也是通过Zstar ISB底板与Zstar Zynq开发板连接,VGA板同时需要连接到VGA显示器。连接示意如图所示。
46-6.png
5板级调试
         本实例对应ex65实例工程,已经制作好的BOOT.bin放置在工程路径“zstar_ex65\zstar.sdk\BOOT”下。也可以参考文档《玩转Zynq-实例篇:[ex51] 制作裸跑程序的启动文件BOOT.bin.pdf》制作包含.bit文件的BOOT.bin文件,将其拷贝到TF卡中,插入Zstar开发板的卡槽中,做好装配连接,上电,可以看到VGA显示器同时显示左右两个图像,左侧图像为原始图像,右侧图像为拉普拉斯边缘提取处理后图像。
更多资料共享
腾讯微云链接:https://share.weiyun.com/5s6bA0s
百度网盘链接:https://pan.baidu.com/s/1XTQtP5LZAedkCwQtllAEyw
提取码:ld9c

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 03:33 , Processed in 0.018447 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表