创龙教仪-木江鹏 · 1月25日 · 广东

C6000 DSP 嵌入式操作教程:7-2 基于CMOS数字摄像头的图像缩放实验

一、实验目的

学习图像缩放的原理,掌握OV2640 摄像头和VPIF总线的工作原理,实现OV2640 摄像头采集图像并进行实时图像缩小显示在 LCD 上。

二、实验原理

OV2640摄像头

OV2640 是世界上第一个 1/4 英寸 2 百万像素视频传感器,同时是 OmniVision 最新的

2.2 微米 OmniPixel2™架构的视频传感器,可支持 200 万像素,分辨率可高达 1600x1200,

帧率可达 30 帧/秒,最高帧率可达 60 帧/秒。

image.png

OV2640摄像头采集图像时,会先经过感光元件,采样的信号经过运放,再进行AD转换,AD量化之后得到数字化的视频信号会进行控制调整,最终通过视频输出接口输出。

除此之外还有其他的一些信号接口,比如时钟输入,像素时钟,行同步信号,帧同步信号,时序产生和逻辑控制单元等等。

image.png

OV2640时序

图像数据在HREF为高的时候输出,当HREF变高后,每一个PCLK时钟,输出一个字节数据。比如我们采用UXGA时序,RGB565格式输出,每2个字节组成一个像素的颜色(低字节在前,高字节在后),这样每行输出总共有16002个PCLK周期,输出16002个字节。

image.png

当HREF输出高电平时开始读取一行像素点,当低电平时不操作,重复操作即可读取一帧图像。OV2640支持:RGB565或JPEG输出。RGB565输出时,时序如图所示。JPEG输出时,PCLK大大减少,且HREF不连续,数据流以0XFF,0XD8开头,以0XFF,0XD9结束。

image.png

image.png

VPIF接口

Video Port Interface (VPIF), 是一种视频接口。VPIF的通道0和通道1只能用于接收数据,通道2和通道3只能用于发送数据

image.png

VPIF 传输协议

VPIF 接口主要支持三种协议的传输:BT-656、BT-1120和Raw Capture mode

image.png

VPIF 端口接收通道支持三种协议:

BT-656

BT-1120

Raw Capture mode

image.png

VPIF 端口发送通道支持两种协议:

BT-656

BT-1120

image.png

图像缩放

在计算机图像处理和计算机图形学中,图像缩放是指对数字图像的大小进行调整的过程。图像缩放是一种非平凡的过程,需要在处理效率以及结果的平滑度和清晰度上做一个权衡。当一个图像的大小增加之后,组成图像的像素的可见度将会变得更高,从而使得图像表现得“软”。相反地,缩小一个图像将会增强它的平滑度和清晰度。

图像缩放包含图像缩小和图像放大。常用的图像缩放算法有:最邻近插值、双线性内插值和双三次插值法。

双线性插值

在双线性内插值法中,对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v),其中i、j均为非负整数,u、v为[0,1]区间的浮点数,则这个像素得值 f(i+u,j+v) 可由原图像中坐标为 (i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:

f(i+u,j+v)= (1-u)(1-v)f(i,j)+ (1-u)vf(i,j+1)+ u(1-v)f(i+1,j)+ uvf(i+1,j+1)其中f(i,j)表示源图像(i,j)处的的像素值,以此类推。

优点:双线性内插值法计算量大,但缩放后图像质量高,不会出现像素值不连续的的情况。

缺点:双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。

OpenCV

OpenCV 是一个基于 C/C++语言的开源图像处理函数库。

l 代码都经过优化,可用于实时处理图像

l 具有良好的可移植性

l 可以进行图像/视频载入、保存和采集的常规操作

l 具有低级和高级的应用程序接口(API)

l 提供了面向 Intel IPP 高效多媒体函数库的接口,可针对使用的 Intel CPU 优化代码,提高程序性能

OpenCV模块

OpenCV模块功能包括图像数据操作、图像/视频的输入输出、基本图像处理(去噪、边缘检测、角点检测、采样与插值、色彩变换、形态学处理、直方图、图像金字塔结构)等 。

l cv – 核心函数库

l cvaux – 辅助函数库

l cxcore – 数据结构与线性代数库

l highgui – GUI 函数库

l ml – 机器学习函数库

参数说明

src:输入图像.

dst:输出图像.

interpolation:差值方法:

• CV_INTER_NN:最近邻插值

• CV_INTER_LINEAR :双线性插值 (默认的方法)

• CV_INTER_AREA : 使用像素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 CV_INTER_NN 方法

• CV_INTER_CUBIC :立方插值(双三次插值)

函数 cvResize 将图像 src 改变尺寸得到与 dst 同样大小。若设定ROI,函数将按常规支持 ROI。

image.png

程序流程

程序流程设计中首先要使能缓存,接着进行DSP中断初始化和LCD的初始化,然后初始化配置I2C和OV2640摄像头,初始化VPIF总线。最后摄像头采集接收数据,灰度转换后进行图像缩小处理,并将数据显示在LCD上。

image.png

三、操作现象

实验设备

本实验使用的硬件接口为LCD和VPIF 接口,所需硬件为实验板、仿真器、TL2640I 摄像头模块、LCD和电源。

image.png

硬件连接

(1)将 TL2640I 摄像头模块连接到实验板的 VPIF 接口。

(2)连接仿真器和电脑的USB接口,

(3)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

image.png

软件操作

导入工程,选择Demo文件夹下的对应工程

编译工程

将CCS连接实验箱并加载程序

点击运行程序

在LCD屏幕上实时显示采集并做了缩小处理的图像

实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。

image.png

image.png

推荐阅读
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息