完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
第一次写文章,有什么不对的地方,还望各位多多指出-
学习知识内容: *** 摄像头原理+OV7670开发手册* IIC通信(软件)* OV7670初始化程序和获取图像程序* lcd液晶初始化程序* 主函数编写** 整体开发流程: 一。摄像头成像,组成原理 摄像头的设计与人的眼睛成像原理一致 camera的成像框架 景物通过凸镜头反射聚焦到感光片(CCD/CMOS:图像传感器)中,感光片产生电荷传导自ADC进行数模信号转换,形成RAW颜色数据,经过ISP图像处理算法(变成RGB,YUV常见的像素颜色格式)储存到相应的储存其中,在让CPU读取显示到相应的显示设备中 二。 摄像头基本结构 摄像头结构组成: Lens:镜头,负责成像和对焦 Holder:基座,负责固定镜头 IR:红外滤波片,负责过滤红外光(滤除人不可见的波) Sensor:图像传感器,负责将图像转换电信号 PCB:印刷电路板,负责供电控制及信号传输 FPC:可绕性印刷电路板,负责接口 马达:用来改变像距 三。介绍几个摄像头核心 图像传感器CCD,CMOS CCD就像传统相机的底片一样的感光系统,是感应光线的电路装置,你可以将它想象成一颗颗微小的感应粒子,铺满在光学镜头后方,当光线与图像从镜头透过、投射到CCD表面产生电流,将感应到的内容转换成数码资料储存起来。CCD像素数目越多、单一像素尺寸越大,收集到的图像就会越清晰 CCD:好用,图像更清晰,公益复杂,贵 CMOS:便宜,简单,图像质量较差 电荷耦合器件(CCD)原理简单。我们可以把它想象成一个没有盖子的记忆芯片。撞击记忆单元的光子在这些单元中产生电子(光电效应),因此光子的数目与电子的数目互成比例(光的明暗)。然而光子的波长(颜色)并没有被转换为电子。换言之,CCD 裸芯片实际上没有把色彩信息转换为任何形式的电信号。拍摄出来的照片是黑白的!(那为啥能得到彩色数据?) 大多数相机的方案:拜尔滤光片(马赛克滤波片)+单CCD+算法插值(ISP运算)。 拜尔滤光片使每个像素只能产生红、绿或蓝三色当中一种颜色的值。但是在输出时,由相机处理单元执行空间色彩插值法,使每个像素均包含三基色的成分。 拜尔滤光片原理 拜尔滤光片使每个像素只能产生红、绿或蓝三色当中一种颜色的值 如 通过拜尔滤光片的值为: 由于人对红色光不敏感,对绿色光敏感,所以拜尔滤光片的色彩比为:红:绿:蓝 = 1:2:1 所以为了得到真实色彩值,红和蓝的算法一样,和绿不一样。 ISP图像处理算法 原始的数据图像经过ISP颜色差算法,算出正确的颜色数据(RGB为一个字,所以ISP中有数据格式的转变, RAW-》RGB,YUV) 二.OV7670摄像头模块 -《PZ-0V7670 摄像头模块开发手册》 使用的设备:普中STM32F103学习版与之配套的OV7670摄像头,lcd液晶屏和原理图资料 内容: 1 OV7670 介绍 2 硬件设计 3 软件设计 4 实验现象 OV7670 简单简介(更多信息查看相应的开发手册) 通过 SCCB 总线控制,可以输出整帧、子采样、取窗口等方式的各种分 辨率 8 位影像数据。该产品 VGA 图像最高达到 30 帧/秒。用户可以完全控制 图像质量、数据格式和传输方式。 描述的是 OV7670/OV7171 图像传感器的功能模块,包括:****(加粗为比较重要的模块**)** ●感光阵列(Image Array)(共有 656x488 个像素,其中在 YUV 的模式中,有效像素为 640x480 个)(cmos) ●模拟信号处理理( Analog Processing) ●A/D 转换 ●测试图案发生器器( Test Pattern Generator) ●数字信号处理器(DSP) ●图像缩放( Image Scaler) ●时序发生器( Video Timing Generator)内部信号发生器和分布、帧率时序、自动曝光控制、输出外部时序( VSYNC、HREF/HSYNC 和 PCLK)。 ●数字视频端口( Digital Video Port) ●SCCB 接口 ●LED 和闪光灯输出控制 Note1: DSP(镜头校正、去噪声、黑白点补偿、自动白平衡等)配置文档-《OV7670 Software Application Note》* 像素输出格式: VGA,即分辨率为 640480 的输出模式; **QVGA,即分辨率为 320240 的输出格式,也就是本手册我们需要用到的格 式;** QQVGA,即分辨率为 160*120 的输出格式; 数据输出时序 PCLK,即像素时钟,一个 PCLK 时钟,输出一个像素(或半个像素,高字节+低字节)。 VSYNC,即帧同步信号。 HREF /HSYNC,即行同步信号(有效时,数据才被穿走或者写入) OV7670 的图像数据输出(通过 D[7:0])就是在 PCLK, VSYNC 和 HREF/ HSYNC 的控制下进行的(一个高电平开始写数据,再次高电平时写数据完成)。首先看看行输出时序,如图所示: 对外输出时序 因为 OV7670 的像素时钟( PCLK)最高可达 24Mhz,我们用 STM32F103ZET6 的 IO 口直接抓取,是非常困难的,也十分占耗 CPU(可以通过降低 PCLK 输出 频率,来实现 IO 口抓取,但是不推荐这样操作)。所以,我们并不是采取直接 抓取来自 OV7670 的数据,而是通过 FIFO 读取,PZ-OV7670 摄像头模块自带了 一个 FIFO 芯片,用于暂存图像数据,有了这个芯片,我们就可以很方便的获取 图像数据了 对外引脚描述 (1)如何存储图像数据。 PZ-OV7670 摄像头模块存储图像数据的过程为:等待 OV7670 同步信号→ FIFO 写指针复位→FIFO 写使能→等待第二个 OV7670 同步信号→FIFO 写禁 止。通过以上 5 个步骤,我们就完成了 1 帧图像数据的存储。 (2)如何读取图像数据。 在存储完一帧图像以后,我们就可以开始读取图像数据了。读取过程为: FIFO 读指针复位→给 FIFO 读时钟( FIFO_RCLK)→读取第一个像素高字节→ 给 FIFO 读时钟→读取第一个像素低字节→给 FIFO 读时钟→读取第二个像素 高字节→循环读取剩余像素→结束。 方法:中断检测同步帧跳变,第一次跳变:数据可以开始写入FIFO了,第二次跳变,数据写入完成可开始读取 硬件接口 OV的大量寄存器在文档:《OV7670高级数据手册》 程序可改进:SCCB通信方式用硬件,或者库函数编写。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1614 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1541 浏览 1 评论
970 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
682 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1592 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 22:19 , Processed in 0.878220 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号