当前位置:文档之家› 中值滤波与均值滤波

中值滤波与均值滤波

中值滤波与均值滤波
中值滤波与均值滤波

四川大学电气信息学院

微机原理与接口技术

实验报告

实验名称: 中值滤波与均值滤波

实验地点: 二基楼A514

年级: 2014级

姓名: 宋雅婕

学号: 20

实验时间:2016年5月27日

一、实验内容

1.在数据段设变量数组TADA1与TADA2,并存入假设的两组采样值作为某一

采样周期的采样值。

⒉ 设计中值滤波程序求出测量值。

⒊ 设计均值滤波程序求出测量值。

⒋ 每个程序应能将结果显示在屏幕上。

⒌ 在计算机上调试程序,并获得正确结果。

二、 程序框图

1.

:

2. 中值滤波:

三、程序清单

1、中值滤波:

DATAS SEGMENT

TADA1 DB 65,72,33,84,43

N EQU $-TADA1

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS START:

MOV AX,DATAS

MOV DS,AX ;给DS段赋值

MOV CX,N-1 ;设置N-1轮比较次数 MOV DX,1 ;设置比较的轮次

AG:

CALL MP ;调用子程序

INC DX

LOOP AG

MOV SI,0

XOR AX,AX ;将AX清零

MOV AL,TADA1[SI+(N-1)/2] ;取出中值

MOV BL,10

DIV BL

PUSH AX

ADD AL,30H

MOV DL,AL

MOV AH,2

INT 21H ;输出十进制数的高位

POP AX

ADD AH,30H

MOV DL,AH

MOV AH,2

INT 21H ;输出十进制数的低位

MOV AH,4CH

INT 21H

MP PROC ;冒泡法(从小到大排列)

PUSH CX

MOV CX,N

SUB CX,DX

MOV SI,0

RECMP:

MOV AL,TADA1[SI]

CMP AL,TADA1[SI+1] ;比较相邻两数据的大小

JLE L1 ;若前者小于等于后者,跳转到L1

XCHG AL,TADA1[SI+1] ;若前者大于后者,则两者交换 XCHG AL,TADA1[SI]

L1:

INC SI

LOOP RECMP

POP CX

RET

MP ENDP

CODES ENDS

END START

2、均值滤波:

(1)置入数据:

DATAS SEGMENT

TADA2 DB 65,72,33,84,43

N EQU $-TADA2

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

START:

MOV AX,DATAS

MOV DS,AX ;给DS段赋值

MOV CX,N-1 ;设置N-1轮比较次数

MOV DX,1 ;设置比较的轮次

AG:

CALL MP ;调用子程序

INC DX

LOOP AG

MOV SI,0

AND TADA2[SI],0 ;将最小值清零 AND TADA2[SI+N-1],0 ;将最大值清零 MOV CX,N

MOV AL,TADA2[SI]

MOV AH,0

MOV BL,N-2

SUM:

ADD AL,TADA2[SI+1] ;剩余数据求与 INC SI

LOOP SUM

DIV BL ;求平均值

MOV BL,10

DIV BL

PUSH AX

ADD AL,30H

MOV DL,AL

MOV AH,2

INT 21H ;输出十进制数的高位POP AX

ADD AH,30H

MOV DL,AH

MOV AH,2

INT 21H ;输出十进制数的低位

MOV AH,4CH

INT 21H

MP PROC ;冒泡法(从小到大排列)

PUSH CX

MOV CX,N

SUB CX,DX

MOV SI,0

RECMP:

MOV AL,TADA2[SI]

CMP AL,TADA2[SI+1] ;比较相邻两数据的大小

JLE L1 ;若前者小于等于后者,跳转到L1 XCHG AL,TADA2[SI+1] ;若前者大于后者,则两者交换

XCHG AL,TADA2[SI]

L1:

INC SI

LOOP RECMP

POP CX

RET

MP ENDP

CODES ENDS

END START

(2)键入数据:

DATAS SEGMENT

D1 DB 'please input numbers',0DH,0AH,'$'

D2 DB 30 DUP (0)

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS START:

MOV AX,DATAS

MOV DS,AX

LEA DX,D1

MOV AH,9

INT 21H

LEA SI,D2

MOV BX,0

J1:

MOV AH,1

INT 21H

CMP AL,0DH

JZ J2

SUB AL,30H

MOV [SI],AL

INC SI

INC BX

LOOP J1

J2:

MOV CX,BX

DEC CX

MOV DX,0001

AG:

CALL MP

INC DX

LOOP AG

MOV SI,0

AND D2[SI],0 ;将最小值清零 DEC BX

AND D2[SI+BX],0 ;将最大值清零 DEC BX

XOR AX,AX

MOV AL,BYTE PTR D2[SI]

MOV CX,BX

SUM:

ADD AL,D2[SI+1] ;剩余数据求与 INC SI

LOOP SUM

DIV BL

ADD AL,30H

MOV DL,AL

MOV AH,2

INT 21H

ADD AH,30H

MOV DL,AL

MOV AH,2

INT 21

MOV AH,4CH

INT 21H

MP PROC

PUSH CX

MOV CX,BX

SUB CX,DX

MOV SI,0

RECMP:

MOV AL,D2[SI]

CMP AL,D2[SI+1] ;比较相邻两数据的大小

JLE L1 ;若前者小于等于后者,跳转到L1 XCHG AL,D2[SI+1] ;若前者大于后者,则两者交换

XCHG AL,D2[SI]

L1:

INC SI

LOOP RECMP

POP CX

RET

MP ENDP

CODES ENDS

END START

四、运行结果:

1、中值滤波:

2、均值滤波:

五、两种滤波方式的优缺点及改进方式

1、优缺点:均值滤波适用于比较稳定的数据处理,可以平滑图像,速度较快,

算法简单,但就是没有办法去掉噪声,只能稍微减弱它。中值滤波在平滑

脉冲噪声方面非常有效,可以保护图像尖锐的边缘,能用合适的点来代

替污染点的值,所以效果比较好。

2、改进方式:可以将均值滤波改为加权均值滤波。

六、实验体会

本次试验让我知道了中值滤波与均值滤波的工作原理与计算方法。在编程过程中,加深了对冒泡排序法的认识与理解,能够掌握冒泡排序的编程方法。调试程序过程中,利用debug单步执行的方法一步一步检查程序出问题的地方时,我感觉自己读程序的能力还有待提高。

相关主题
文本预览
相关文档 最新文档