龙空技术网

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

创龙教仪 104

前言:

此刻小伙伴们对“c语言如何输出像素点”大约比较珍视,同学们都需要知道一些“c语言如何输出像素点”的相关资讯。那么小编在网摘上网罗了一些关于“c语言如何输出像素点””的相关内容,希望朋友们能喜欢,你们快快来学习一下吧!

一、实验目的

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

二、实验原理OV2640摄像头

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

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

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

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

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

OV2640时序

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

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

VPIF接口

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

VPIF 传输协议

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

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

BT-656

BT-1120

Raw Capture mode

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

BT-656

BT-1120

图像缩放

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

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

双线性插值

在双线性内插值法中,对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(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。

程序流程

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

三、操作现象

实验设备

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

硬件连接

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

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

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

软件操作

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

编译工程

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

点击运行程序

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

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

标签: #c语言如何输出像素点