图像处理平滑处理源程序.docx

上传人:b****6 文档编号:16695532 上传时间:2023-07-16 格式:DOCX 页数:19 大小:19.27KB
下载 相关 举报
图像处理平滑处理源程序.docx_第1页
第1页 / 共19页
图像处理平滑处理源程序.docx_第2页
第2页 / 共19页
图像处理平滑处理源程序.docx_第3页
第3页 / 共19页
图像处理平滑处理源程序.docx_第4页
第4页 / 共19页
图像处理平滑处理源程序.docx_第5页
第5页 / 共19页
图像处理平滑处理源程序.docx_第6页
第6页 / 共19页
图像处理平滑处理源程序.docx_第7页
第7页 / 共19页
图像处理平滑处理源程序.docx_第8页
第8页 / 共19页
图像处理平滑处理源程序.docx_第9页
第9页 / 共19页
图像处理平滑处理源程序.docx_第10页
第10页 / 共19页
图像处理平滑处理源程序.docx_第11页
第11页 / 共19页
图像处理平滑处理源程序.docx_第12页
第12页 / 共19页
图像处理平滑处理源程序.docx_第13页
第13页 / 共19页
图像处理平滑处理源程序.docx_第14页
第14页 / 共19页
图像处理平滑处理源程序.docx_第15页
第15页 / 共19页
图像处理平滑处理源程序.docx_第16页
第16页 / 共19页
图像处理平滑处理源程序.docx_第17页
第17页 / 共19页
图像处理平滑处理源程序.docx_第18页
第18页 / 共19页
图像处理平滑处理源程序.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

图像处理平滑处理源程序.docx

《图像处理平滑处理源程序.docx》由会员分享,可在线阅读,更多相关《图像处理平滑处理源程序.docx(19页珍藏版)》请在冰点文库上搜索。

图像处理平滑处理源程序.docx

图像处理平滑处理源程序

/********************************************************************/

/*Copyright2004bySEEDIncorporated.*/

/*Allrightsreserved.PropertyofSEEDIncorporated.*/

/*Restrictedrightstouse,duplicateordisclosethiscodeare*/

/*grantedthroughcontract.*/

/**/

/********************************************************************/

/********************************************************************/

/*图像的平滑(平均模板)*/

/********************************************************************/

 

#include

#include

#include

#include

#include

#include

#include

#include"iic.h"

#include"vportcap.h"

#include"vportdis.h"

#include"sa7121h.h"

#include"TVP51xx.h"

#include"seeddm642.h"

 

/*SEEDDM642的emifa的设置结构*/

EMIFA_ConfigSeeddm642ConfigA={

0x00052078,/*gblctlEMIFA(B)globalcontrolregistervalue*/

/*将CLK6、4、1使能;将MRMODE置1;使能EK2EN,EK2RATE*/

0xffffffd3,/*cectl0CE0spacecontrolregistervalue*/

/*将CE0空间设为SDRAM*/

0x73a28e01,/*cectl1CE1spacecontrolregistervalue*/

/*Readhold:

1clock;

MTYPE:

0000,选择8位的异步接口

Readstrobe:

001110;14个clock宽度

TA:

2clock;Readsetup2clock;

Writehold:

2clock;Writestrobe:

14clock

Writesetup:

7clock

-----------------

\14c/1c

\----------------/*/

0x22a28a22,/*cectl2CE2spacecontrolregistervalue*/

0x22a28a42,/*cectl3CE3spacecontrolregistervalue*/

0x57115000,/*sdctlSDRAMcontrolregistervalue*/

0x0000081b,/*sdtimSDRAMtimingregistervalue*/

0x001faf4d,/*sdextSDRAMextensionregistervalue*/

0x00000002,/*cesec0CE0spacesecondarycontrolregistervalue*/

0x00000002,/*cesec1CE1spacesecondarycontrolregistervalue*/

0x00000002,/*cesec2CE2spacesecondarycontrolregistervalue*/

0x00000073/*cesec3CE3spacesecondarycontrolregistervalue*/

};

/*SEEDDM642的IIC的设置结构*/

I2C_ConfigSEEDDM642IIC_Config={

0,/*mastermode,i2coar;采用主模式*/

0,/*nointerrupt,i2cimr;只写,不读,采用无中断方式*/

(20-5),/*scllowtime,i2cclkl;*/

(20-5),/*sclhightime,i2cclkh;*/

1,/*configurelater,i2ccnt;*/

0,/*configurelater,i2csar;*/

0x4ea0,/*mastertxmode,*/

/*i2crunsfree,*/

/*8-bitdata+NACK*/

/*norepeatmode*/

(75-1),/*4MHzclock,i2cpsc*/

};

CHIP_ConfigSEEDDM642percfg={

CHIP_VP2+\

CHIP_VP1+\

CHIP_VP0+\

CHIP_I2C

};

I2C_HandlehSeeddm642i2c;

intportNumber;

externSA7121H_ConfParamssa7121hPAL[45];

externSA7121H_ConfParamssa7121hNTSC[45];

Uint8vFromat=0;

Uint8misc_ctrl=0x6D;

Uint8output_format=0x47;

//地址为0forcvbsport1,选择复合信号做为输入

Uint8input_sel=0x00;

/*地址为0xf,将Pin27设置成为CAPEN功能*/

Uint8pin_cfg=0x02;

/*地址为1B*/

Uint8chro_ctrl_2=0x14;

/*图像句柄的声明*/

VP_HandlevpHchannel0;

VP_HandlevpHchannel1;

VP_HandlevpHchannel2;

/*确定图像的参数*/

intnumPixels=720;//每行720个像素

intnumLines=576;//每帧576行(PAL)

/*确定处理的范围*/

/*A*/

/**/

/*D*/

intintAPixels=190;

intintALines=59;

intintDPixels=530;

intintDLines=229;

/*******************/

/*****画矩形边框函数的声明*****/

voiddrawRectangle();

/*平滑处理(平均模板)*/

voidAverageSmooth();

/*采集与显示缓冲区的首址*/

Uint32capYbuffer=0x80000000;

Uint32capCbbuffer=0x800675c0;

Uint32capCrbuffer=0x8009b0a0;

Uint32disYbuffer=0x80100000;

Uint32disCbbuffer=0x801675c0;

Uint32disCrbuffer=0x8019b0a0;

Uint32tempSrcYbuffer=0x80200000;//临时

Uint32tempDisYbuffer=0x80300000;//临时

 

/*图像格式标志*/

Uint8NTSCorPAL=0;

externfarvoidvectors();

externvolatileUint32capNewFrame;

externvolatileUint32disNewFrame;

/*此程序可将四个采集口的数据经过VideoPort0送出*/

voidmain()

{

Uint8addrI2C;

inti;

/*-------------------------------------------------------*/

/*performallinitializations*/

/*-------------------------------------------------------*/

/*InitialiseCSL,初始化CSL库*/

CSL_init();

CHIP_config(&SEEDDM642percfg);

/*----------------------------------------------------------*/

/*EMIFA的初始化,将CE0设为SDRAM空间,CE1设为异步空间

注,DM642支持的是EMIFA,而非EMIF*/

EMIFA_config(&Seeddm642ConfigA);

/*----------------------------------------------------------*/

/*中断向量表的初始化*/

//PointtotheIRQvectortable

IRQ_setVecs(vectors);

IRQ_nmiEnable();

IRQ_globalEnable();

IRQ_map(IRQ_EVT_VINT1,11);

IRQ_map(IRQ_EVT_VINT0,12);

IRQ_reset(IRQ_EVT_VINT1);

IRQ_reset(IRQ_EVT_VINT1);

/*打开一个数据拷贝的数据通路*/

DAT_open(DAT_CHAANY,DAT_PRI_LOW,DAT_OPEN_2D);

/*----------------------------------------------------------*/

/*进行IIC的初始化*/

hSeeddm642i2c=I2C_open(I2C_PORT0,I2C_OPEN_RESET);

I2C_config(hSeeddm642i2c,&SEEDDM642IIC_Config);

/*----------------------------------------------------------*/

/*进行TVP5150pbs的初始化*/

/*选择TVP5150,设置第三通路*/

GPIO_RSET(GPGC,0x0);/*将GPIO0不做为GPINT使用*/

GPIO_RSET(GPDIR,0x1);/*将GPIO0做为输出*/

GPIO_RSET(GPVAL,0x0);/*GPIO0输出为高,选择IIC1总线,配置

第二路,即为U21*/

addrI2C=0xBA>>1;

_IIC_write(hSeeddm642i2c,addrI2C,0x00,input_sel);

_IIC_write(hSeeddm642i2c,addrI2C,0x03,misc_ctrl);

_IIC_write(hSeeddm642i2c,addrI2C,0x0D,output_format);

_IIC_write(hSeeddm642i2c,addrI2C,0x0F,pin_cfg);

_IIC_write(hSeeddm642i2c,addrI2C,0x1B,chro_ctrl_2);

/*回读当前摄像设备的格式*/

_IIC_read(hSeeddm642i2c,addrI2C,0x8c,&vFromat);

vFromat=vFromat&0xff;

switch(vFromat)

{

caseTVP51XX_NTSCM:

caseTVP51XX_NTSC443:

NTSCorPAL=1;/*系统为NTSC的模式*/

break;

caseTVP51XX_PALBGHIN:

caseTVP51XX_PALM:

NTSCorPAL=0;/*系统为PAL的模式*/

break;

default:

NTSCorPAL=2;/*系统为不支持的模式*/

break;

}

if(NTSCorPAL==2)

{

/*系统不支持的模式,重新配置*/

for(;;)

{}

}

/*----------------------------------------------------------*/

/*进行SAA7121H的初始化*/

GPIO_RSET(GPVAL,0x0);/*GPIO0输出为低,选择IIC1总线,配置图像输出*/

addrI2C=0xB8>>1;/*选择第0路的I2C的地址*/

/*将第0路的视频输入口的数据口设为高阻状态,

使能SCLK,将第27脚设为输入*/

_IIC_write(hSeeddm642i2c,addrI2C,0x03,0x1);

/*配置SAA7121H*/

GPIO_RSET(GPVAL,0x1);/*GPIO0输出为低,选择IIC1总线,配置图像输出*/

/*初始化VideoPort0*/

/*将VedioPort1设为encoder输出*/

portNumber=0;

vpHchannel0=bt656_8bit_ncfd(portNumber);

for(i=0;i<100000;i++);

SEEDDM642_rset(SEEDDM642_WDOGEN,2);

addrI2C=0x88>>1;

for(i=0;i<43;i++)

{

if(NTSCorPAL==1)

{

_IIC_write(hSeeddm642i2c,

addrI2C,

(sa7121hNTSC[i].regsubaddr),

(sa7121hNTSC[i].regvule));

}

else

{

_IIC_write(hSeeddm642i2c,

addrI2C,

(sa7121hPAL[i].regsubaddr),

(sa7121hPAL[i].regvule));

}

}

/*----------------------------------------------------------*/

/*初始化VideoPort1*/

/*将VedioPort1设为采集输入*/

portNumber=1;

vpHchannel1=bt656_8bit_ncfc(portNumber);

bt656_capture_start(vpHchannel1);

/*等待第一帧数据采集完成*/

while(capNewFrame==0){}

/*将数据存入显示缓冲区,并清采集完成的标志*/

capNewFrame=0;

for(i=0;i

{

/*传送临时Y缓冲区*/

DAT_copy((void*)(capYbuffer+i*numPixels),

(void*)(tempSrcYbuffer+i*numPixels),

numPixels);

/*传送临时Y缓冲区*/

DAT_copy((void*)(capYbuffer+i*numPixels),

(void*)(tempDisYbuffer+i*numPixels),

numPixels);

}

/*平滑处理(平均模板)*/

AverageSmooth();

/*画边框*/

drawRectangle();

for(i=0;i

{

/*传送Y缓冲区*/

DAT_copy((void*)(tempDisYbuffer+i*numPixels),

(void*)(disYbuffer+i*numPixels),

numPixels);

}

//清除彩色信号

for(i=0;i<0x33ae0;i++)

{

*((Uint8*)(disCrbuffer+i))=0x80;

*((Uint8*)(disCbbuffer+i))=0x80;

}

/*启动显示模块*/

bt656_display_start(vpHchannel0);

/*建立显示的实时循环*/

for(;;)

{

/*当采集区的数据已经采集好,而显示缓冲区的数据已空*/

if((capNewFrame==1)&&(disNewFrame==1))

{

/*将数据装入显示缓冲区,并清采集完成的标志*/

capNewFrame=0;

disNewFrame=0;

for(i=0;i

{

/*传送临时Y缓冲区*/

DAT_copy((void*)(capYbuffer+i*numPixels),

(void*)(tempSrcYbuffer+i*numPixels),

numPixels);

/*传送临时Y缓冲区*/

DAT_copy((void*)(capYbuffer+i*numPixels),

(void*)(tempDisYbuffer+i*numPixels),

numPixels);

}

/*平滑处理(平均模板)*/

AverageSmooth();

/*画边框*/

drawRectangle();

for(i=0;i

{

/*传送Y缓冲区*/

DAT_copy((void*)(tempDisYbuffer+i*numPixels),

(void*)(disYbuffer+i*numPixels),

numPixels);

}

}

}

for(;;)

{}

/*----------------------------------------------------------*/

/*采集与回放*/

}

 

/*画矩形边框函数的定义*/

voiddrawRectangle()

{

inti,j;

/*画上边*/

//奇数行

for(i=intALines-4;i

{

for(j=intAPixels-6;j

{

*(Uint8*)(tempDisYbuffer+i*numPixels+j)=0x00;

}

}

//偶数行

for(i=numLines/2+intALines-4;i

{

for(j=intAPixels-6;j

{

*(Uint8*)(tempDisYbuffer+i*numPixels+j)=0x00;

}

}

 

/*画下边*/

//奇数行

for(i=intDLines;i

{

for(j=intAPixels-6;j

{

*(Uint8*)(tempDisYbuffer+i*numPixels+j)=0x00;

}

}

//偶数行

for(i=numLines/2+intDLines;i

{

for(j=intAPixels-6;j

{

*(Uint8*)(tempDisYbuffer+i*numPixels+j)=0x00;

}

}

/*画左边*/

//奇数行

for(i=intALines;i

{

for(j=intAPixels-6;j

{

*(Uint8*)(tempDisYbuffer+i*numPixels+j)=0x00;

}

}

//偶数行

for(i=numLines/2+intALines;i

{

for(j=intAPixels-6;j

{

*(Uint8*)(tempDisYbuffer+i*numPixels+j)=0x00;

}

}

/*画右边*/

//奇数行

for(i=intALines;i

{

for(j=intDPixels;j

{

*(Uint8*)(tempDisYbuffer+i*numPixels+j)=0x00;

}

}

//偶数行

for(i=numLines/2+intALines;i

{

for(j=intDPixels;j

{

*(Uint8*)(tempDisYbuffer+i*numPixels+j)=0x00;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2