ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:18.80KB ,
资源ID:9354117      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9354117.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字图像处理实验实验三.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

数字图像处理实验实验三.docx

1、数字图像处理实验实验三 报告内容:(目的和要求、原理、步骤、数据、计算、小结等)实验三 静态图像的DCT变换一、 实验目的1、 了解DCT和IDCT的概念。2、 了解DSP的EDMA技术3、 了解DSP的中断技术。4、 了解SDRM在静态数据采集中的作用。5、 了解DSK板上用户自定义开关的使用。6、 了解DSP和FPGA在视频数据采集中的同步原理。二、 实验设备 计算机、6711DSK、视频板、CCS软件、Webpack软件三、 实验原理本实验有视频采集卡上的FPGA和DSK共同完成对摄入图像进行DCT变换。DCT、IDCT广泛应用于各种视频压缩标准中,它充分利用了图像数据的空间相关性来实现

2、数据压缩。DCT、IDCT变换本身是无损的,只是由于有限精度的原因才回有精度上的损失。采集下来的图像首先放到SDRAM中DSP处理流程为:首先进行图像采集,并由FPGA控制存入到SDRAM中。当用户按下按钮SW2的USER_SW1位按钮后,开始进行图像的模糊处理。变换完成后用EDMA将处理的结果送给视频板的SDRAM,并由FPGA控制视频信号数据从SDRAM同步送给AL250,完成显示功能。四、 实验步骤1、 有关DCT变换的基础知识2、 连接好摄相头、视频卡、FPGA下载电缆、6711DSK并口仿真电缆,上电。3、 下载FPGA程序。选择下载文件“expexp5”目录下的“scapture.

3、bit”4、 下载完成后,连接DSK的并口电缆和计算机的并口,双击“C6711 DSK CCS”图标。进入CCS软件开发环境。打开“expexp5”的“Video.out”文件,并运行。5、 程序运行后按下视频板的复位按钮S2完成图像的静态采集。6、 图像采集好后,按下DSK板上的SW2的USER_SW1位按钮,DSP开始进行边缘提取,完成后,自动显示处理的结果。此时显示器的图像将会出现进行过DCT和反IDCT后的图像,尽管在显示屏上没有明显的变换,但是DCT反IDCT后的图像依然具有一定的图像丢失。7、 如果要继续采集和处理新的图像,拨回DSK板上的SW2的USER_SW1位按钮重复步骤5和

4、6。8、 完成这个实验的实验报告。五、源程序清单 #define EMIF_CE1 0x01800004#define Get_Switches (*(int *)0x9008000024) & 0x07)#define LED1_on *(int *)0x90080000 = 0x0E000000#define LED2_on *(int *)0x90080000 = 0x0D000000#define LED3_on *(int *)0x90080000 = 0x0B000000#define LEDs_off *(int *)0x90080000 = 0x07000000extern c

5、register volatile unsigned int CSR;extern cregister volatile unsigned int IER;int Dct( unsigned char *block, short *coeff);int Idct(short *coeff,unsigned char *block);int *OPT_6, *SRC_6, *count_6, *DST_6, *index_6, *link_6, *OPT_reload_6, *SRC_reload_6, *count_reload_6, *DST_reload_6, *index_reload_

6、6, *link_reload_6, *EER, *ESR, *ECR; int *CIER=(int *)0x01A0FFE8;int *CIPR=(int *)0x01A0FFE4; short capture_flag=0;short line=0;short data_ready=0;short process_finish=0;#include void main() int a; unsigned char data64; short data_dct64; short data_dct_164; short flag; int *p,*r; short *q; short k,h

7、1,h2; int i1,j1; int dct_flag=0; int *sw; int *SDRAM_control, *ER, *OPT_7, *SRC_7, *count_7, *DST_7, *index_7, *link_7, *OPT_reload_7, *SRC_reload_7, *count_reload_7, *DST_reload_7, *index_reload_7, *link_reload_7; p=(int *)0xa0000018; r=(int *)0xb0000014; q=(short *)0x80000000; data0=0x8080; *(int

8、*)EMIF_CE1 = 0xFFFFFF23;/CE1 设置成32位模式 CSR=CSR|1; /在CPU CORE寄存器中把外部中断使能 IER=0x00000122; *ECR|=0x000000C0; *CIER=0x00000040; ECR=(int *)0x01A0FFF8; ER=(int *)0x01A0FFF0; EER=(int *)0x01A0FFF4; ESR=(int *)0x01A0FFFC; OPT_6=(int *)0x01A00090; SRC_6=(int *)0x01A00094; count_6=(int *)0x01A00098; DST_6=(in

9、t *)0x01A0009c; index_6=(int *)0x01A000A0; link_6=(int *)0x01A000A4; OPT_reload_6=(int *)0x01A00210; SRC_reload_6=(int *)0x01A00214; count_reload_6=(int *)0x01A00218; DST_reload_6=(int *)0x01A0021C; index_reload_6=(int *)0x01A00220; link_reload_6=(int *)0x01A00224; OPT_7=(int *)0x01A000A8; SRC_7=(in

10、t *)0x01A000AC; count_7=(int *)0x01A000B0; DST_7=(int *)0x01A000B4; index_7=(int *)0x01A000B8; link_7=(int *)0x01A000BC; OPT_reload_7=(int *)0x01A00630; SRC_reload_7=(int *)0x01A00634; count_reload_7=(int *)0x01A00638; DST_reload_7=(int *)0x01A0063c; index_reload_7=(int *)0x01A00640; link_reload_7=(

11、int *)0x01A00644; *EER=0x0000000C0; /EDMA通道6和通道7的使能打开 /具体配置EDMA通道6的寄存器参数,要注意这里采用了link的技术:即EDMA完成一帧/的数据搬移后,利用link机制,把参数,表重新载入,自动进行后续的搬移,这对于图像的显示 /来说是非常必要的 *OPT_6=0x49160003; *SRC_6=0x80000000; *count_6=0x027002D0;/origin *DST_6=0xb0000014; *index_6=0x06C00002; *link_6=0x00000210; *OPT_reload_6=0x4916

12、0003; /具体配置EDMA通道6的重新载入的参数 *SRC_reload_6=0x80000000; *count_reload_6=0x027002D0;/origin *DST_reload_6=0xb0000014; *index_reload_6=0x06C00002; *link_reload_6=0x00000210; *OPT_7=0x48200003; /具体配置EDMA通道7的寄存器参数 *SRC_7=0xa0000018; *count_7=0x027002D0;/origin *DST_7=0x80000000;/origin *index_7=0x03600001;

13、 *link_7=0x00000630; *OPT_reload_7=0x48200003; /具体配置EDMA通道6的重新载入的参数 *SRC_reload_7=0xa0000018; *count_reload_7=0x027002D0;/origin *DST_reload_7=0x80000000;/origin *index_reload_7=0x00000000; *link_reload_7=0x00000630; *(int *)0x01800010=0x00000010; *(int *)0x01800014=0x00000010; a=*(int *)0x90080000;

14、/第二个十六进制数控制开关,0表示按下去 sw=(int *)0x90080000; for(;) if(data_ready) if(Get_Switches=0x00000006)/*aa&0x0f000000=0x0e000000) for (j1=0;j178;j1+) for (i1=0;i190;i1+) /对亮度进行处理 for (h1=0;h18;h1+) for (h2=0;h28;h2+) datah2+h1*8=*(unsigned char *)(0x80000000+j1*720*8*2+i1*8*2+h2*2+h1*720*2); Dct(data,data_dct

15、_1); Idct(data_dct_1,data); for (h1=0;h18;h1+) for (h2=0;h28;h2+) *(unsigned char *)(0x80000000+j1*720*8*2+i1*8*2+h2*2+h1*720*2) =datah2+h1*8; *OPT_6=0x49160003; *SRC_6=0x80000000; *count_6=0x027002D0;/origin *DST_6=0xb0000014; *index_6=0x06C00002; *link_6=0x00000210; *OPT_reload_6=0x49160003; /具体配置

16、EDMA通道6的重新载入的参数 *SRC_reload_6=0x80000000; *count_reload_6=0x027002D0;/origin *DST_reload_6=0xb0000014; *index_reload_6=0x06C00002; *link_reload_6=0x00000210; *(int *)0x90080000=0x08000000; data_ready=0; /*interrupt void VS_isr() /*(int *)0x90080000=0x07000000; */interrupt void EDMA_finish_isr() *(un

17、signed volatile int *)CIPR |= 0x00000040; data_ready=1; *(int *)0x90080000=0x07000000; int Dct( unsigned char *block, short *coeff) int j1, i, j, k; float b8; float b18; float d88; float f0=(float).7071068; float f1=(float).4903926; float f2=(float).4619398; float f3=(float).4157348; float f4=(float

18、).3535534; float f5=(float).2777851; float f6=(float).1913417; float f7=(float).0975452; for (i = 0, k = 0; i 8; i+, k += 8) for (j = 0; j 8; j+) bj = (float)blockk+j; /* Horizontal transform */ for (j = 0; j 4; j+) j1 = 7 - j; b1j = bj + bj1; b1j1 = bj - bj1; b0 = b10 + b13; b1 = b11 + b12; b2 = b1

19、1 - b12; b3 = b10 - b13; b4 = b14; b5 = (b16 - b15) * f0; b6 = (b16 + b15) * f0; b7 = b17; di0 = (b0 + b1) * f4; di4 = (b0 - b1) * f4; di2 = b2 * f6 + b3 * f2; di6 = b3 * f6 - b2 * f2; b14 = b4 + b5; b17 = b7 + b6; b15 = b4 - b5; b16 = b7 - b6; di1 = b14 * f7 + b17 * f1; di5 = b15 * f3 + b16 * f5; d

20、i7 = b17 * f7 - b14 * f1; di3 = b16 * f3 - b15 * f5; for (i = 0; i 8; i+) for (j = 0; j 4; j+) j1 = 7 - j; b1j = dji + dj1i; b1j1 = dji - dj1i; b0 = b10 + b13; b1 = b11 + b12; b2 = b11 - b12; b3 = b10 - b13; b4 = b14; b5 = (b16 - b15) * f0; b6 = (b16 + b15) * f0; b7 = b17; d0i = (b0 + b1) * f4; d4i

21、= (b0 - b1) * f4; d2i = b2 * f6 + b3 * f2; d6i = b3 * f6 - b2 * f2; b14 = b4 + b5; b17 = b7 + b6; b15 = b4 - b5; b16 = b7 - b6; d1i = b14 * f7 + b17 * f1; d5i = b15 * f3 + b16 * f5; d7i = b17 * f7 - b14 * f1; d3i = b16 * f3 - b15 * f5; for (i = 0; i 8; i+) for (j = 0; j 8; j+) *(coeff+j*8+i) =(short

22、) dij; return 0;int Idct(short *coeff,unsigned char *block) int j1, i, j; float b8, b18, d88; float f0=.7071068; float f1=.4903926; float f2=.4619398; float f3=.4157348; float f4=.3535534; float f5=.2777851; float f6=.1913417; float f7=.0975452; float e, f, g, h; /* Horizontal */ /* Descan coefficie

23、nts first */ for (i = 0; i 8; i+) for (j = 0; j 8; j+) bj = *( coeff + j*8+i); e = b1 * f7 - b7 * f1; h = b7 * f7 + b1 * f1; f = b5 * f3 - b3 * f5; g = b3 * f3 + b5 * f5; b10 = (b0 + b4) * f4; b11 = (b0 - b4) * f4; b12 = b2 * f6 - b6 * f2; b13 = b6 * f6 + b2 * f2; b4 = e + f; b15 = e - f; b16 = h -

24、g; b7 = h + g; b5 = (b16 - b15) * f0; b6 = (b16 + b15) * f0; b0 = b10 + b13; b1 = b11 + b12; b2 = b11 - b12; b3 = b10 - b13; for (j = 0; j 4; j+) j1 = 7 - j; dij = bj + bj1; dij1 = bj - bj1; for (i = 0; i 8; i+) for (j = 0; j 8; j+) bj = dji; e = b1 * f7 - b7 * f1; h = b7 * f7 + b1 * f1; f = b5 * f3

25、 - b3 * f5; g = b3 * f3 + b5 * f5; b10 = (b0 + b4) * f4; b11 = (b0 - b4) * f4; b12 = b2 * f6 - b6 * f2; b13 = b6 * f6 + b2 * f2; b4 = e + f; b15 = e - f; b16 = h - g; b7 = h + g; b5 = (b16 - b15) * f0; b6 = (b16 + b15) * f0; b0 = b10 + b13; b1 = b11 + b12; b2 = b11 - b12; b3 = b10 - b13; for (j = 0;

26、 j 4; j+) j1 = 7 - j; dji = bj + bj1; dj1i = bj - bj1; for (i = 0; i 8; i+) for (j = 0; j 8; j+) *(block + i * 8 + j) = (unsigned char)(dij); return 0; 六、实验出现的问题、实验结果分析 在运行程序前,要先下载FPGA程序,但是在下载时经常下载失败,解决方法是重新开始下载,多试几次,不然可以通过重启主机,检查各个接口是否接好。有时也可能是下载线有问题。电脑主机重启后将COMS中的I/O CONFIGRATION 设置为EPP,则CCS软件会打不开。似乎每次实验都有这样的问题,所以才更需要注意。只有在对整个过程熟练后,才能保证每一步都准确无误。DCT、IDCT变换充分利用了图像数据的空间相关性来实现数据压缩用A口和B口。七、实验小结和思考 通过本次实验,我们了解DSP的EDMA技术,了解DSP的中断技术;对SDRM在静态数据采集中的作用有了一定的熟悉。 DCT变换实验说明DCT、IDCT变换本身是无损的,只是由于有限精度的原因才回有精度上的损失。

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

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