四川大学电气信息学院微机原理与接口技术实验报告实验名称:中值滤波与均值滤波实验地点:二基楼A514年级:2014级姓名:宋雅婕学号:2014141443030实验时间:2016年5月27日一、实验内容1.在数据段设变量数组TADA1和TADA2,并存入假设的两组采样值作为某一采样周期的采样值。⒉设计中值滤波程序求出测量值。⒊设计均值滤波程序求出测量值。⒋每个程序应能将结果显示在屏幕上。⒌在计算机上调试程序,并获得正确结果。二、程序框图1.均值滤波:开始结束2.中值滤波:开始结束用冒泡法将数据从小到大排列删除最大值和最小值剩余数值求和取平均值结果输出在屏幕上用冒泡法将数据从小到大排列取出位于中间位置的值结果输出在屏幕上三、程序清单1、中值滤波:DATASSEGMENTTADA1DB65,72,33,84,43NEQU$-TADA1DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AX;给DS段赋值MOVCX,N-1;设置N-1轮比较次数MOVDX,1;设置比较的轮次AG:CALLMP;调用子程序INCDXLOOPAGMOVSI,0XORAX,AX;将AX清零MOVAL,TADA1[SI+(N-1)/2];取出中值MOVBL,10DIVBLPUSHAXADDAL,30HMOVDL,ALMOVAH,2INT21H;输出十进制数的高位POPAXADDAH,30HMOVDL,AHMOVAH,2INT21H;输出十进制数的低位MOVAH,4CHINT21HMPPROC;冒泡法(从小到大排列)PUSHCXMOVCX,NSUBCX,DXMOVSI,0RECMP:MOVAL,TADA1[SI]CMPAL,TADA1[SI+1];比较相邻两数据的大小JLEL1;若前者小于等于后者,跳转到L1XCHGAL,TADA1[SI+1];若前者大于后者,则两者交换XCHGAL,TADA1[SI]L1:INCSILOOPRECMPPOPCXRETMPENDPCODESENDSENDSTART2、均值滤波:(1)置入数据:DATASSEGMENTTADA2DB65,72,33,84,43NEQU$-TADA2DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AX;给DS段赋值MOVCX,N-1;设置N-1轮比较次数MOVDX,1;设置比较的轮次AG:CALLMP;调用子程序INCDXLOOPAGMOVSI,0ANDTADA2[SI],0;将最小值清零ANDTADA2[SI+N-1],0;将最大值清零MOVCX,NMOVAL,TADA2[SI]MOVAH,0MOVBL,N-2SUM:ADDAL,TADA2[SI+1];剩余数据求和INCSILOOPSUMDIVBL;求平均值MOVBL,10DIVBLPUSHAXADDAL,30HMOVDL,ALMOVAH,2INT21H;输出十进制数的高位POPAXADDAH,30HMOVDL,AHMOVAH,2INT21H;输出十进制数的低位MOVAH,4CHINT21HMPPROC;冒泡法(从小到大排列)PUSHCXMOVCX,NSUBCX,DXMOVSI,0RECMP:MOVAL,TADA2[SI]CMPAL,TADA2[SI+1];比较相邻两数据的大小JLEL1;若前者小于等于后者,跳转到L1XCHGAL,TADA2[SI+1];若前者大于后者,则两者交换XCHGAL,TADA2[SI]L1:INCSILOOPRECMPPOPCXRETMPENDPCODESENDSENDSTART(2)键入数据:DATASSEGMENTD1DB'pleaseinputnumbers',0DH,0AH,'$'D2DB30DUP(0)DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXLEADX,D1MOVAH,9INT21HLEASI,D2MOVBX,0J1:MOVAH,1INT21HCMPAL,0DHJZJ2SUBAL,30HMOV[SI],ALINCSIINCBXLOOPJ1J2:MOVCX,BXDECCXMOVDX,0001AG:CALLMPINCDXLOOPAGMOVSI,0ANDD2[SI],0;将最小值清零DECBXANDD2[SI+BX],0;将最大值清零DECBXXORAX,AXMOVAL,BYTEPTRD2[SI]MOVCX,BXSUM:ADDAL,D2[SI+1];剩余数据求和INCSILOOPSUMDIVBLADDAL,30HMOVDL,ALMOVAH,2INT21HADDAH,30HMOVDL,ALMOVAH,2INT21MOVAH,4CHINT21HMPPROCPUSHCXMOVCX,BXSUBCX,DXMOVSI,0RECMP:MOVAL,D2[SI]CMPAL,D2[SI+1];比较相邻两数据的大小JLEL1;若前者小于等于后者,跳转到L1XCHGAL,D2[SI+1];若前者大于后者,则两者交换XCHGAL,D2[SI]L1:INCSILOOPRECMPPOPCXRETMPENDPCODESENDSENDSTART四、运行结果:1、中值滤波:2、均值滤波:五、两种滤波方式的优缺点及改进方式1、优缺点:均值滤波适用于比较稳定的数据处理,可以平滑图像,速度较快,算法简单,但是没有办法去掉噪声,只能稍微减弱它。中值滤波在平滑脉冲噪声方面非常有效,可以保护图像尖锐的边缘,能用合适的点来代替污染点的值,所以效果比较好。2、改进方式:可以将均值滤波改为加权均值滤波。六、实验体会本次试验让我知道了中值滤波和均值滤波的工作原理和计算方法。在编程过程中,加深了对冒泡排序法的认识和理解,能够掌握冒泡排序的编程方法。调试程序过程中,利用debug单步执行的方法一步一步检查程序出问题的地方时,我感觉自己读程序的能力还有待提高。