- 博客(29)
- 资源 (16)
- 收藏
- 关注
原创 CCS中调试DM6467高清视频采集(TVP7002输入)
DM6467的VPIF接口支持BT.1120和SMPTE 296M两种高清格式,其中BT.1120是1080P(1080I)分辨率,SMPTE296M是720P分辨率。我们这里直接测试BT.1120格式的高清视频。我们开发板上的高清视频AD芯片是TVP7002,TVP7002支持的视频格式如图 1所示。可以看出,要测试BT.1120格式的视频输入,只能使用1080P50、1080P60、108
2013-10-20 15:49:49 7160 9
原创 移植OpenCV的AdaBoost人脸检测算法到DM6467
移植OpenCV的AdaBoost人脸检测算法到DaVinci平台(DM6467开发板),大致讲了移植过程中需要修改的代码以及一些注意事项。
2013-10-20 11:48:46 6668 22
原创 移植OpenCV到ARM时的注意事项
在嵌入式平台中,一般来说是使用C语言进行编程,嵌入式系统所使用的编译器也通常对C语言有更好的优化能力,而对C++语言的支持力度不是很大。OpenCV源码采用C、C++混合编程,所有API既可以用C也可以用C++调用。早期的OpenCV大多使用C语言编写,而OpenCV 1.0之后的版本则主要使用C++了。为了适应嵌入式平台,我们在移植时一般选用早期的OpenCV版本,这里选用的即是OpenCV 1
2013-10-20 10:55:47 4462 2
原创 移植OpenCV到DM6467的ARM端并集成到C6Accel
由于之前将OpenCV封装为codec时程序运行极慢,为了使DSP能够运行OpenCV的一些图像处理算法,现在决定采取三个措施:1,将OpenCV移植到ARM端,ARM端的程序进行基本的内存分配、重要数据结构的初始化、运行一些非常简单的OpenCV函数,而将一些复杂的OpenCV算法放到DSP端执行。2,将OpenCV集成到C6Accel中,对于一些C6Accel中已经有的算法就不再用Op
2013-10-20 10:49:48 3426
原创 在DM6467上使用C6Accel进行Sobel处理
1 C6Accel简介C6Accel是一个包括许多信号处理和数学计算的算法包,它提供了一系列API,可以供ARM端程序调用。C6Accel符合TI的xDAIS算法标准,可以很容易地通过Codec Engine来调用并快速执行。用户可以使用C6Accel来加速其应用程序,也可以添加自定义的DSP算法以扩展C6Accel。 C6Accel包括浮点运算、定点运算、数学运算,其D
2013-10-20 10:37:22 3732 9
原创 VS2010下安装OpenCV 2.4.4
1 安装OpenCV首先,需要在OpenCV官网下载OpenCV软件包。当前最新版本为2.4.5,我们选用的版本为2.4.4。下载网址http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.4/。然后解压到指定路径,我设置的路径是D:\opencv。为了方便区分不同的OPenCV版本,我还将解压之后
2013-10-20 10:20:18 3140 5
原创 移植EMCV到DM6467(5)——修改encodedecode demo测试算法封装
1 修改encodedecode demo测试codec接下来,我们需要将修改过后的videnc_copy集成到encodedecodedemo中,实现实时采集视频、使用EMCV添加矩形框、然后输出显示的功能。1.1 修改demo(1)修改encodedecode.cfg要使用videnc_copy,需要在encodedecode.cfg中修改createFromS
2013-10-20 10:08:54 3217 8
原创 移植EMCV到DM6467(4)——video_copy例程的xDM算法封装
要移植EMCV(EmbeddedComputer Vision,OpenCV的嵌入式版本)到DM6467是一件挺繁杂的工作,要修改很多代码以及配置文件。以下将对整个移植过程进行简单介绍。注意:以下内容只是移植工作的主要部分,有很多小地方就忽略了。整个移植的思路是:首先对EMCV源文件进行裁剪,将未用到的函数都去掉,以降低代码复杂度,同时也减小程序出错的可能性;然后,通过对Codec Engin
2013-10-20 10:04:29 4989 14
原创 移植EMCV到DM6467(3)——CCS调试XDAIS算法
1 使用eXpressDSP Component Wizard生成算法为了简化xDAIS算法的开发步骤,我们可以使用eXpressDSP Component Wizard这个工具,在安装之后,它会出现在CCS的Tool菜单栏中,使用非常方便。eXpressDSPComponent Wizard通过图形化的配置界面引导用户一步一步地完成一个xDAIS算法模块的设计。在配置完成之后,
2013-10-19 22:53:22 3901 7
原创 移植EMCV到DM6467(2)——OpenCV程序调试
在《移植EMCV到DM6467(1)》中已经实现了使用EMCV来创建图像并添加矩形框这么一个简单的功能,现在要在其基础上进行第二步操作。首先,由于我们的DM6467开发板接收的视频来自TVP5150,PAL格式,颜色空间为YUV422semi-planar,而OpenCV中IplImage使用的是RGB格式图像,所以需要进行颜色空间转换。然后,由于EMCV中有很多C++风格的代码,需要改为C语
2013-10-19 22:46:31 3315 9
原创 移植EMCV到DM6467(1)——C++工程测试
EMCV全称为EmbeddedComputer Vision Library,是一个可在TI DM64x系列DSP上运行的计算机视觉库。EMCV提供了跟OpenCV完全一致的函数接口,通过EMCV,可以轻松地将原有的OpenCV算法移植到DSP,甚至不用改一行代码。目前EMCV已经支持IplImage,CvMat,CvSeq等基本数据结构,可使用cvCreateImage等创建和释放图像,以及
2013-10-19 22:41:12 6314 38
原创 DM6467的CAN模块调试(SPI转CAN)
DM6467没有自带的CAN总线控制器,不过有SPI控制器,所以要使用CAN总线的话可以用MCP2510芯片实现SPI总线到CAN总线的转换。总线转换电路如下所示。 对于CAN总线模块的测试需要先测试SPI模块,然后测试MCP2510部分。DM6467的SPI模块自带回环模式(loop-backmode),可以自发自收,对于测试比较方便。并且MCP2510也自带回环模式,也可以测试发送和接
2013-10-19 22:35:06 12479
原创 摄像头图像桶形畸变校正测试
1 桶形畸变原理如果摄像头使用短焦距广角镜头,那么得到的图像会发生桶形畸变,如下图所示。图 1 摄像头畸变图像 产生桶形畸变的原因是:镜头的放大倍数随着距离增大而逐渐减小,造成图像像素点放射形地围绕中心点的。原理图如下所示。 图 2 桶形畸变原理 桶形畸变的数学模型是: (1)
2013-10-19 22:26:48 14438 2
原创 基于DM6467的TVP7002 Linux驱动程序开发
在Linux中,使用V4L2框架管理所有的视频编解码设备。针对我们开发板的V4L2框架结构已经在之前的TVP5150驱动程序编写和OV5642驱动程序编写的说明文档中进行了详细的分析,所以这里不再对整体架构方面的问题进行论述,直接讲解对于TVP7002的Linux驱动程序开发需要修改内核中的哪些文件。 1 TVP7002 Linux驱动程序的编写在Linux内核中已经有现
2013-10-19 22:18:10 2991
原创 使用Matlab显示OV5642输入的Raw Bayer图像
对于OV5642输出视频格式,可以使用RAWBayer模式。这种格式传输的是Sensor最原始的感光数据,没有经过处理,具有更好的清晰度和图像显示效果。OV5642的RAW Bayer像素点格式如下所示。对于原始的RAW Bayer格式数据,需要转换成RGB像素点格式才能显示出图像。对于RAW和RGB之间的转换还是有一点复杂,在测试阶段可以使用一种简单的方法,即将相邻的四个像素点合并为
2013-10-19 22:13:12 2936 2
原创 使用Matlab显示OV5642输入的YUV图像
YUV格式的图像有很多种颜色空间和存储格式,这里使用的是YUYV4:2:2模式。YUYV4:2:2模式的采样方式如下所示。其存储格式为YUV422-Interleaved,如下图所示。在正确理解了YUYV4:2:2格式之后才能编写Matlab程序来显示图像,否则显示的图像可能出现奇怪的显示效果。使用Matlab显示YUV图像的代码如下所示:fid =
2013-10-19 22:04:17 2654
原创 高清编码的Loadmodule.sh文件修改
对于高清视频采集,需要使用大量的内存。1080P输入时,一帧图像的大小为1920 X 1080 X 2 = 4147200字节(4MB),这是很大的一片内存区域,需要合理分配内存才能保证程序的正常运行。在SDK中提供的loadmodule.sh脚本文件对内存的分配只适用于标清视频采集播放,在处理高清视频时如果仍然使用该配置方案则会出现内存分配不足的现象,所以需要进行修改。 DaV
2013-10-19 21:58:51 1382
原创 基于DM6467的OV5642视频采集编码程序设计(3)——PAL格式输入及其他调试
1 OV5642各种输出格式调试记录OV5642支持许多种格式输出,几乎能输出不大于2592 x 1944的任意分辨率和不大于30fps的任意帧率视频,但是要让OV5642输出想要的格式却并不是件容易的事,因为需要设置许多寄存器,都是一些相关模拟参数设置,并且数据手册中没有详细说明。所以,要设置OV5642为某种输出格式就只能使用官方提供的配置方案。通过在网上找了很长时间,发
2013-10-19 21:50:47 2820
原创 基于DM6467的OV5642视频采集编码程序设计(2)——Encode Demo测试
1 调试问题总结1.1 无法创建capture设备运行encode程序,串口输出以下提示信息。 经过核查代码,发现是在ColorSpace.c中的switch语句中少写了一个break。 switch(attrs->colorSpace) { case ColorSpace_UYVY: f
2013-10-19 21:19:59 2107 2
原创 基于DM6467的OV5642视频采集编码程序设计(1)——Codec Engine修改
1 DMAI修改1.1 DMAI简介DMAI(DaVinciMultimedia Application Interface)是一个搭建于操作系统(Linux或者DSP/BIOS)和Codec Engine之上的功能层,用来帮助用户快速地编写达芬奇平台上的可移植程序。在下图中可以看到,DMAI没有覆盖操作系统和Codec Engine,应用程序可以选择使用DMAI,也可以直
2013-10-19 21:10:49 3104 5
原创 YUYV422到YUV420PSEMI格式的转化
1.1 颜色空间说明由于TI提供的H264编码器只支持YUV420PSEMI颜色空间的视频图像格式,而OV5642不支持输出这个格式,所以选用了与之比较接近的YUYV422格式,然后由ARM进行转换。YUV420PSEMI的格式如下图所示。UV分量是交错的,与Y分量分开而单独存储在Y分量后面。整幅图像Y分量占2/3,UV分量占1/3。 YUYV422格式如下图所示。YUV三个分量
2013-10-19 21:04:05 3039 1
原创 Gap Statistic算法 Matlab代码
总共三个文件gap_stat.mclear all;close all;SampleNum=30; %样本观测点的数量B=1000; %参考数据集的数量MaxK=10;
2013-10-19 20:53:40 5066 3
原创 DM6467的OV5642 Linux驱动程序开发(三)——驱动测试
1 编写ov5642测试例程在编写好ov5642驱动之后,需要编写程序对其进行测试,这就是V4L2应用层程序。要编写V4L2应用层程序,首先需要理解V4L2提供的各种ioctl函数,要知道如何配置视频设备的初始化参数,特别注意的是配置是有一定顺序的,如果顺序错了那肯定会有错误。在初始化视频设备之后,需要建立缓冲区来接收视频设备传过来的帧,V4L2提供了两种模式来获取视频帧:MMA
2013-10-19 20:30:38 3407 1
原创 DM6467的OV5642 Linux驱动程序开发(二)——Linux内核修改
1 修改vpif驱动程序由于ov5642是由vpif进行管理,而原先的vpif驱动程序不支持sensorraw格式,所以需要修改vpif驱动程序以兼容sensor raw格式,这时首先需要参考原先在CCS中调试好的vpif寄存器配置。对于sensor视频输入,vpif的寄存器配置比较简单,如下所示。 channel0->regs-
2013-10-19 20:26:00 2918
原创 DM6467的OV5642 Linux驱动程序开发(一)——V4L2框架结构
1 Vpif的V4L2 linux驱动程序框架在linux中,使用V4L2框架来管理视频采集设备。V4L2框架主要包括两层:V4L2Device和V4L2 Subdevice,其中V4L2 Device是虚拟的设备,用以管理V4L2 Subdevice,而Subdevice才是真正的物理设备,例如各种视频AD芯片和sensor等。在DM6467使用的linux内核中,使用VP
2013-10-19 20:23:03 4092
原创 DM6467开发之U-Boot移植(3)——U-Boot移植测试
1 U-Boot常用命令及环境变量1.1 U-Boot环境变量U-Boot通过环境变量(environment)为用户提供一定程度的可配置性,这些环境变量包括串口终端所使用的波特率(baudrate)、启动操作系统内核的参数(bootargs)、本地IP地址(ipaddr)、网卡MAC地址(ethaddr)等等。环境变量可以固化到非易失性存储介质中,在
2013-10-19 20:06:11 1975 2
原创 DM6467开发之U-Boot移植(2)——U-Boot移植
1 U-Boot移植在U-Boot源码中,与某一个特定的开发板相关的文件或文件夹并不多,主要包括这些(其中有些是自己创建的):l board/davinci/dm6467evm/l cpu/arm926ejs/davinci/l lib_arm/l include/configs/davinci_dm6467evm.hl include/asm-ar
2013-10-19 20:01:11 2122
原创 DM6467开发之U-Boot移植(1)——U-Boot学习
1 DM6467启动流程在移植U-Boot之前,首先需要了解DM6467的启动流程,知道U-Boot在系统启动过程中的位置及作用。DM6467标准的启动过程如图 1‑1所示,主要包括四个步骤:RBL(ROM BootLoader)→UBL(User Boot Loader)→U-Boot →Linux内核。图1‑1 DM6467启动流程系统上电时,首先运行的是
2013-10-19 19:50:30 4738 1
移植OpenCV AdaBoost人脸检测算法到DM6467
2013-10-20
移植EMCV到DM6467(4)-xDM算法封装
2013-10-20
基于DM6467的OV5642视频采集编码程序设计
2013-10-19
DM6467的OV5642 Linux驱动程序开发
2013-10-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人