图像采集系统设计.docx
《图像采集系统设计.docx》由会员分享,可在线阅读,更多相关《图像采集系统设计.docx(23页珍藏版)》请在冰豆网上搜索。
图像采集系统设计
DSP实习报告
题目:
图像采集系统的设计
班级:
xxx
姓名:
xxx
学号:
xxx
指导老师:
xxxx
一.实习题目…………………………………………………3
二.实习背景知识…………………………………………….3
三.实习内容………………………………………………….5
四.实习程序功能与结构说明……………………………….8
六.实习心得………………………………………………..19
一、实习题目
图像采集系统的设计
二、实习目的:
1、熟练掌握数字信号处理的典型设计方法与技术手段;
2、熟悉D6437视频输入,输出端的操作及编程。
;
3、掌握常用电子仪器设备的使用方法;
4、熟悉锐化变换算法。
三、实习背景知识
1、计算机
2、CCS3.3.软件
3、DSP仿真器
4、EL_DM6437平台
EL-DM6437EVM是低成本,高度集成的高性能视频信号处理开发平台,可以开发仿真达芬奇系列DSP应用程序,同时也可以将该产品集成到用户的具体应用系统中。
方便灵活的接口为用户提供良好的开放平台。
采用该系列板卡进行产品开发或系统集成可以大大减少用户的产品开发时间。
板卡结构框图如图所示:
板卡硬件资源:
TMS320DM6437DSP,可工作在400/600MHz;
2路视频输入,包括一个复合视频输入及一个S端子视频输入;
保留了视频输入接口,可以方便与CMOS影像传感器连接;
3路视频输出,包括2路复合视频,一路S端子输出;
128MByte的DDR2SDRAM存储器,256MBit的NorFlash存储器;用户可选的NANDFlash接口;
可选的256K字节的I2CE2PROM;
1个10M/100Mbps自适应以太网接口;
1路立体声音频输入、1路麦克风输入,1路立体声音频输出;
USB2.0高速接口,方便与PC连接;
1个CAN总线、1个UART接口、实时时钟(带256Byte的电池保持RAM);
4个DIP开关,4个状态指示LED;
可配置的BOOT模式;
10层板制作工艺,稳定可靠;
标准外部信号扩展接口;
JTAG仿真器接口;
单电源+5V供电;
板卡软件资源:
完整的DSP示例程序及实验指导书;
USB演示软件,及读写示例C++程序;
功能概述:
EL-DM6437EVM达芬奇视频开发板通过专用的DDR2存储控制器接口扩展了64MBytes的DDR2SDRAM,为视频应用带来了高吞吐、高容量存储带宽,并可以扩展到最大256MByte;256MBit的NorFlash为视频应用程序脱机运行提供了有力的容量保证;板卡通过一个视频解码芯片和CPU连接,使得CPU可以接受外部的复合视频信号输入和S信号输入,信号都是自动检测,大大提高了视频处理的灵活性;CPU还提供视频DAC,通过几个运算放大器即可把DDR2存储器内的数据输出为用户可观察到的信号,非常方便;除此之外,板卡还包括很多资源,包括音频输入输出、10M/100M的自适应以太网接口、USB2.0接口、实时时钟、4位LED指示和4位DIP开关量输入、CAN总线及UART接口等等一系列功能;最重要的是所有外部存储器接口信号都连接到扩展接口上,用户可以通过设计外部子板扩展自己的功能。
板上还包括灵活的端口复用切换,使得用户可以根据不同场合使用不同的端口配置,最大的利用CPU各种功能。
板卡通过标准接口提供电源输入,采用单5v的供电方式,注意供电电流需要大于1安培,电源调节模块为微处理器及其他外设提供3.3V和1.04/1.2V(对应不同频率CPU)电压。
在使用该系列板卡开发过程中可以通过J1接口连接仿真器。
四、实习内容:
1.连接好电脑和仿真器,EL_DM6437和仿真器;
2.用视频线一头连接板卡的P3或者P5,另一头连接显示器的AV输入,并调制AV模式;
注:
如果带转接头的话,AV输入应该是黄色端子。
3.用视频线连接摄像头输出和板卡的F9插座,注意摄像头输出制式为PAL;
4.给EL_DM6437和摄像头上电,打开CCS并连接;
5.打开ColorSharpen文件夹的工程ColorSharpen.pjt,
此工程功能为:
把摄像头捕捉
到的一副图像进行锐化处理,并将之输出到显示器;6.编译源程序
7.下载程序out文件,如果没有就先编译一下Project—》Build;
8.把摄像头对准需要捕捉的图像场地;
9.设置第一个断点,在video_test.c的422行处;
10.点击运行,稍等片刻后程序停止在断点,此时可以从显示器看到图像;
11.继续点击运行,如果成功,显示出锐化图像;
并显示
这时可以发现显示屏显示出摄像头所指影像已被锐化。
11.结束
注:
1)锐化算法最简单思想是前一个象素取后一象素与本身的差值;
五.实习程序与结构说明
/*
*Copyright2007byTechshineIncorporated.
*Allrightsreserved.
*Author:
lyj
*/
/*
VideoTest*
*
*/
#includevp5146.h
1#defineCOLORBARS
0#defineLOOPBACK
1#defineSVIDEO_OUT
0
#defineCOMPONENT_OUT
typedefstruct__RGBC
{
Uint8Red;
Uint8Green;
Uint8Blue;
}RGBCOLOR;
voidPictureSharpen(Uint32memaddr);
/*------------------------------------------------------------------------*
**
*vpfe_init()*
**
*NTSC:
*
*Width:
720*
*Height:
480*
**
**
*------------------------------------------------------------------------*/
voidvpfe_init(Uint32buffer,Uint32width,Uint32height)
{//同步、模式设置
VPFE_CCDC_SYN_MODE=0//0x00032F84;//interlaced,withVDporityasnegative
|(0<<19)//使能SDRAM端口输出到resizer的输入,0=disable
|(0<<18)//使能视频口videoport,输出到SDRAM,0=disable
|(1<<17)//数据写使能,控制CCD列数据是否写入DDR,0=disable
|(1<<16)//vd/hd使能,如果hd、vd定义为输出,那么内部产生时序,否则外部产生
|(0<<15)//Field状态,表明当前的field状态,0=奇场,1=偶场
|(0<<14)//3tap低通滤波器,0=off
|(2<<12)//INPMOD数据输入模式,0=CCDRaw,1=YCbCr16bit,2=YCbCr8bit,3保留
|(1<<11)//每个象素的包大小,0=16bit/pixel,1=8bit/pixel
|(7<<8)//ccd数据宽度,只有INPMOD=0(12bit-13bit)时有效
//0=16bit,1=15bit,2=14bit,3=13bit,4=12bit
//5=11bit,6=10bit,7=8bit
|(1<<7)//传感器场模式,0=逐行扫描,1=隔行
|(0<<6)//CCD数据极性
|(0<<5)//外部WEN信号选择,如果VDHDEN=1(16bit),设置此位将使CCD数据加载到DDR
//0=不使用
|(0<<4)//场指示器极性,0=正极,1=负极
|(0<<3)//HD同步极性,0=正极,1=负极
|(1<<2)//VD同步极性,0=正极,1=负极
|(0<<1)//场ID方向,0=输入,1=输出
|(0);//VD、HD同步方向,0=输入,1=输出
VPFE_CCDC_HD_VD_WID=0;//HD,VD信号脉冲宽度寄存器
VPFE_CCDC_PIX_LINES=0x02CF020D;//每行的水平象素,及一帧的行数
//0|(0x2cf<<16)//每行的水平象素719+1=720
//|(0x20d)//每帧或每场的半行数525+1=526
/*
*sph=1,nph=1440,accordingtopage32-33oftheCCDCspec
*forBT.656mode,thissettingcapturesonlythe720x480ofthe
*activeNTSVvideowindow
*/
VPFE_CCDC_HORZ_INFO=width<<1;//Horizontallines
//水平象素信息,(31-16)=开始象素,(14-0)=输入到DDR的每行象素个数
VPFE_CCDC_HSIZE_OFF=width<<1;//Horizontallineoffset
//水平大小,(15-0)=每行的地址偏移,即跳行到DDR2读取数据?
//5lsb忽略,最好是256字节的倍数
VPFE_CCDC_VERT_START=0;//Verticalstartline
//垂直线开始象素(16-31)=SLV0(Field0),(0-14)=SLV1(Field0)
//设定数据输入到DDR的开始行
VPFE_CCDC_VERT_LINES=height>>1;//Verticallines(14bit-0)
//垂直线的线数
VPFE_CCDC_CULLING=0xFFFF00FF;//Disablecullng,水平及垂直方向的选择方式
//(31-24)=偶场的水平选择,(23-16)=奇场的水平选择
//(15-8)=保留,(7-0)=垂直选择模式
/*
*Interleavethetwofields
*/
VPFE_CCDC_SDOFST=0//0x00000249;//DDR线偏移
|(0<<14)//场标志信号翻转,0=正常
|(0<<12)//场线偏移,0=+1线,1=+2线,2=+3线,3=+4线,
|(1<<9)//偶线和偶场的线偏移,0=+1,1=+2,2=+3,3=+4,4=-1,
//5=-2,6=-3,7=-4,
|(1<<6)//奇线和偶场的线偏移,0=+1,1=+2,2=+3,3=+4,4=-1,
//5=-2,6=-3,7=-4,
|(1<<3)//偶线和奇场的线偏移,0=+1,1=+2,2=+3,3=+4,4=-1,
//5=-2,6=-3,7=-4,
|(1<<0);//奇线和奇场的线偏移,0=+1,1=+2,2=+3,3=+4,4=-1,
//5=-2,6=-3,7=-4,
VPFE_CCDC_SDR_ADDR=buffer;//bufferDDR地址,最低5位忽略
可选的黑色箝位设置//=0//;VPFE_CCDC_CLAMP
|(0<<31)//CLAMPEN,CLAMP使能,0=禁止
|(0<<28)//采样象素长度,0=1pixel,为2^N(次幂),5-7保留
|(0<<25)//采样线长度,0=1line,为2^N(次幂),5-7保留
|(0<<10)//采样的开始象素
|(0<<0);//bit4-bit0,平均增益
VPFE_CCDC_DCSUB=0;//CCD数据要减去的值,当CLAMPEN=0时有效
VPFE_CCDC_COLPTN=0xEE44EE44;//调色板设置
//0|(0<<30)//第三线调色板,3个象素,0=R,1=Gr,2=Gb,3=B
//|(0<<28)//CP3LPC2,象素个数=2
//|(0<<26)//CP3LPC1,象素个数=1
//|(0<<24)//CP3LPC0,象素个数=0
//|(0<<22)//第二线调色板
//|(0<<20)
//|(0<<18)
//|(0<<16)
//|(0<<14)//第一线调色板
//|(0<<12)
//|(0<<10)
//|(0<<8)
//|(0<<6)//第0线调色板
//|(0<<4)
//|(0<<2)
//|(0<<0);
VPFE_CCDC_BLKCMP=0;//黑色补偿
//0|(0<<24)//R红色
//|(0<<16)//Gr
//|(0<<8)//Gb
//|(0<<0);//B蓝色
VPFE_CCDC_FPC_ADDR=0x86800000;//不知道干吗用的
VPFE_CCDC_FPC=0;
VPFE_CCDC_VDINT=0;//VD中断时序,(30-16)=VDINT0,(14-0)=VDINT1
VPFE_CCDC_ALAW=0;//a率设置
VPFE_CCDC_REC656IF=0//0x00000003;//rec656接口
|(1<<1)//FVH错误纠正使能
|(1<<0);//Rec656接口使能
/*
*InputformatisCb:
Y:
Cr:
Y,w/Yinodd-pixelposition
*/
VPFE_CCDC_CCDCFG=0//0x00000800;//CCD配置寄存器
|(0<<15)//使能VSYNC内部的锁存功能,0=使用VSYNC锁存
|(0<<13)//MSBINVI,色度输入信号最高位是否在SDRAM中翻转,0=正常
象素个数必须为偶如果字节包已经使能,的字节是否交换,//DDR|(0<<12)
数
//0=正常
|(1<<11)//YCbCr8bit输入时Y的位置,0=偶像素,1=奇象素
|(0<<8)//指定CCD有效范围,0=当WEN为逻辑“与”时内部信号有效,反之为“”
|(0<<6)//FID检测,0=VSYNC时序锁存FID信号,1=不锁存,2=VD边缘锁存,3=VD、HD的相位决定
|(0<<5)//CCIR656输入数据宽度,0=8bit,1=10bit
|(0<<4)//YCINSWP,YI输入和CI引脚输入交换,0=不交换
|0;
VPFE_CCDC_FMTCFG=0;//数据重新格式化、图象口配置
//0|(0<<16)//图象口数据准备好频率,跟内核频率有关,0=CoreClock*1/2=75MHz
//|(0<<15)//videoport使能
//|(0<<12)//videoport输入选择,0=bit15~6
//|0;
VPFE_CCDC_FMT_HORZ=0//0x000002D0;//数据重新格式化、图象输入接口水平信息
|(0<<16)//bit31~29保留,从HD开始的水平开始象素
|(0x2D0<<0)//bit15~13保留,水平方向的象素个数=0x2d0=720
|0;
VPFE_CCDC_FMT_VERT=0//0x0000020E;//数据重新格式化、图象输入接口垂直信息
|(0<<16)//bit31~29保留,从vd开始的水平开始象素
|(0x20e<<0)//bit15~13保留,水平方向的象素个数=0x20e=526
|0;
VPFE_CCDC_FMT_ADDR0=0;
VPFE_CCDC_FMT_ADDR1=0;
VPFE_CCDC_FMT_ADDR2=0;
VPFE_CCDC_FMT_ADDR3=0;
VPFE_CCDC_FMT_ADDR4=0;
VPFE_CCDC_FMT_ADDR5=0;
VPFE_CCDC_FMT_ADDR6=0;
VPFE_CCDC_FMT_ADDR7=0;
VPFE_CCDC_PRGEVEN_0=0;
VPFE_CCDC_PRGEVEN_1=0;
VPFE_CCDC_PRGODD_0=0;
VPFE_CCDC_PRGODD_1=0;
VPFE_CCDC_VP_OUT=0//0x041A2D00;//videoport输出设置
|(0x20d<<17)//被时钟输出到videoport的垂直线数=0x20d=525
|(0x2d0<<4)//被时钟输出到videoport的水平线数=0x2d0=720
|(0<<0);//每个输出行的水平开始象素=0
VPFE_CCDC_PCR=0x00000001;//EnableCCDC,bit1=是否busy,bit0=enable
//如果禁止的话,CCDC会向DSP发送中断,不需要中断需要配置INTC
}
/*------------------------------------------------------------------------*
**
*vpbe_init()*
**
*NTSC:
*
*Width:
720*
*Height:
480*
**
**
*------------------------------------------------------------------------*/
voidvpbe_init(Uint32buffer,Uint32width,Uint32height,Uint32colorbar_loopback_mode,Uint32
ntsc_pal_mode,Uint32output_mode)
{
Int16basep_x;
Int16basep_y;
RGBCOLORrc;
if(ntsc_pal_mode==NTSC)
{
basep_x=0x7A;//122
basep_y=0x12;//18
}
else
{
basep_x=0x84;//132
basep_y=0x16;//22
}
/*
*SetupVPBE
*/
VPSS_CLK_CTRL=0x00000018;//EnableDACandVENCclock,bothat27MHz
VPBE_PCR=0;//Noclockdiv,clockenable
/*
*SetupOSD
*/
VPBE_OSD_MODE=0//0x000000fc;//osd模式寄存器
//最后8位指定背景色地址(ROM0)
|(0<<15)//cb/cr顺序,0=cb/cr,1=cr/cb(修改这个1会把背景变红)
|(0<<14)//osd窗口垂直扩展使能,如果使能,bitmap窗口
//Y值将延伸为6/5。
0=*1,1=*6/5
|(0<<13)//osd窗口水平扩展使能,如果使能,bitmap窗口
切换ntsc和pal。
可用于9/8值将延伸为//X
|(0<<12)//延伸滤波使能,14、13位使能才有用,或者video串口
//smoothing已经设置,小心使用
|(0<<11)//video窗口,类似14位
|(0<<10)//video窗口,类似13位
|(0<<9)//field(场信号)翻转=1
|(0<<8)//背景颜色表选择,0=ROM,1=RAM
|(0xfd<<0)//CLUT(colorlook-uptable)背景颜色查找表地址
;//这是一部分图象不显示时出现的颜色
//--OSD窗口0、1设置,!
!
!
!
暂时不用!
!
!
!
VPBE_OSD_OSDWIN0MD=0|//Disablebothosdwindowsandcursorwindow
(0<<13)|//RGB0ERGB输入还是BITMAP输入
//0=bitmap,1=16bitRGB,如果此位设置,
//**#####**那么WINDOW1的该位不能为1**#####**
(0<<12)|//CLUTS0,OSDWINDOW0的颜色查找表位置,0=rom,1=RAM
(0<<10)|//OHZ0osd窗口0水平放大倍数(1、2、4)
(0<<8)|//OVZ0osd窗口0垂直放大倍数
(0<<6)|//BMW0bitmap位宽0=1,1=2,2=4,3=8
(0<<3)|//BLND0osd窗口0和video窗口0混合率
(0<<2)|//TE0osd窗口0透明,0=不使能,如果使能,根据
//BLND0出效果
(0<<1)|//osd窗口0显示模式,0=Field,1=Frame
0;//osd窗口0激活=1
VPBE_OSD_OSDWIN1MD=0|
0<<15|//OASWwindow0的品质模式?
0<<13|//RGB1ERGB输入还是BITMAP输入
0<<12|//C