基于DM6437的图像采集和处理系统-小波变换 下载本文

|(1<<1) //类似9位 |(1<<0); //类似8位

// 禁止 vwindow 1 and 使能 vwindow 0 if ( ntsc_pal_mode == NTSC )

VPBE_VENC_VMOD = 0x00000003; // Standard NTSC interlaced output else

VPBE_VENC_VMOD = 0//0x00000043; // Standard PAL interlaced output |(0<<12) //VDMD数字图象输出模式0=YUV_p16bit,1=YUV_s8bit,2=RGB666_p18bit

|(0<<11) //ITLCL非隔行扫描行号选择,0=262line(NTSC) 或 312 line(PAL)

// 1=263 line(NTSC) 或 313 line(PAL)

|(0<<10) //ITLC 隔行扫描使能=0,当VMD=0和HDMD=0时有效 |(0<<9 ) //NSIT非标准隔行扫描模式,当VMD=1时有效 // 0=逐行扫描,1=隔行扫描 |(0<<8) //HDMD 高清模式=1,0=标准模式 |(1<<6) //TVTYP,TV格式选择,当VMD=0时有效 // (1)HDMD=0,标准模式时,0=NTSC,1=PAL(代码默认) // (2)HDMD=1,高清模式时,0=525P,1=625P |(0<<5) //SLAVE ,主从模式,0=master

|(0<<4) //VMD,图象时序,0=NTSC/PAL 时序,1=非NTSC/PAL 时序 |(0<<3) //BLNK,空白使能,同步信号和 色同步 仍然输出 // 0=normal,1=强迫blank

|(1<<1) //VIE,复合模拟输出使能。0=固定Low-level输出 // 1=正常复合视频输出 |(1<<0); //VENC,图象编码器使能

VPBE_VENC_VDPRO = 0 //colorbar_loopback_mode << 8; //图象数据处理寄存器0 |(0<<14) //PFLTC 预滤波器C |(0<<12) //PFLTY 预滤波器Y

|(0<<11) //PFLTR 预滤波器采样频率 0为enc/2 |(0<<9) //CBTYP colorbar模式0=75%,1=100% |(0<<8) //colorbar使能 0=正常,1=COLORBARS

|(0<<6) //ATRGB 输入图象RGB模式的薄化控制,取决REC601,0=禁止 |(0<<5) //ATYCC 输入图象YCbCr模式的薄化控制,取决REC601,0=禁止 |(0<<4) //ATCOM 输入图象复合模式的薄化控制,取决REC601,0=禁止 |(0<<3) //DAFRQ DAC频率,0=27M,1=54M

33

|(0<<2) //DAC x2过采样使能 0=off |(0<<1) //C信号过采样使能 0=off |0; //Y信号过采样使能 0=off

VPBE_VENC_DACTST = 0; //DAC测试寄存器,0为正常模式,1=省电(bit15 - bit12) //

VPBE_VENC_DACSEL = 0x00004210; // Choose Output mode

if ( output_mode == COMPONENT_OUT ) VPBE_VENC_DACSEL = 0x00000000; else if ( output_mode == SVIDEO_OUT ) VPBE_VENC_DACSEL = 0x00004210;

}

5.3 图像缩放算法程序

#define ZOOMRATIO 2

//缩放率=1.0/ZOOMRATIO

void PictureWaveletTransform(Uint32 memaddr) { Int32 i=0,j;

Uint16 *srcaddr,*distaddr,*distaddr2,*ps,*tmp;

srcaddr=(Uint16*)memaddr;//取一个象素(Cb/Y),所以Y为&0xFF00;

distaddr=(Uint16*)0x80000000;//缩放后的图象存储区, 一幅720*480的图象为720*480*2=675KB distaddr2=(Uint16*)0x80200000;//缩放的图象存储区2(2MB) //行缩放 ps=srcaddr; tmp=distaddr; for(i=0;i<480;i++) { for(j=0;j< (720/ZOOMRATIO) ;j++)//得到360*480的图象 { *tmp=*ps;//放到0x80000000 tmp++; ps+=ZOOMRATIO;

}

ps=srcaddr+i*720;//原图象的下1行*ZOOMRATIO tmp=distaddr+i*(720/ZOOMRATIO);//目标区的下一行

} //列缩放 ps=distaddr;

34

tmp=distaddr2; for(i=0;i<480;i++) { for(j=0;j< (720/ZOOMRATIO) ;j++)//得到360*480的图象 { *tmp++=*ps++;//放到0x80000000

}

ps=distaddr+i*(720);//原缩放行图象区域的下x行 i*(720/ZOOMRATIO)*ZOOMRATIO=i*720 tmp=distaddr2+i*(720/ZOOMRATIO);//目标区的下一行

}

//拷回去: tmp=srcaddr; ps=distaddr2;

for(i=0;i<(480/ZOOMRATIO);i++) { for(j=0;j<(720/ZOOMRATIO);j++)

{

*tmp++=*ps++; }

//换行 tmp=srcaddr+i*720;//源区域下一行开始

ps=distaddr2+i*(720/ZOOMRATIO);//变换后区域下一行

} }

35

第六章 使用USB传送图象

6.1 发送图片到DSP并显示

1、连接好电脑和仿真器、EL_DM6437和仿真器;

2、用视频线一头连接板卡的P3或者P5,另一头连接显示器的AV输入,并调到AV模式;

3、给EL_DM6437 上电,打开CCS并连接;

4、用CCS打开GetImageFormUSB文件夹的工程GetImageFormUSB.pjt,此工程功能为:通过USB接口从电脑接收一幅图片,并将该图片输出到显示器; 5、双击打开应用程序“DM6437ImageExchanger.exe”,点击“打开图片”调入一幅图片,如下所示:

6、在“图象处理”栏里选择你要的效果

7、在CCS处下载程序out文件,如果没有就先编译一下Project-》Build();8、点击CCS的运行,这时DSP已经开始显示内存中的数据,因为电脑还没有发送过去,所以显示器显示的是乱码;此DSP程序允许你接收2幅图片! 9、转到应用程序“DM6437ImageExchanger.exe”,点击“发送图片”,稍等即可看到图片已经发送下去,并在显示器上显示出来;

36