python实现自适应中值滤波器

article/2025/8/27 16:03:32

目录

原理(冈萨雷斯第四版p235):

 代码:

结果:


原理(冈萨雷斯第四版p235):

 代码:

import cv2
import numpy as np
from matplotlib import pyplot as plt# for gray image
def auto_median_filter(img, S_max):output = img.copy()def class_B(z_xy, z_med, z_max, z_min):if (z_min < z_xy) & (z_xy < z_max):return z_xyelse:return z_medS_ori = 3copy = cv2.copyMakeBorder(img, *[S_ori // 2] * 4, borderType=cv2.BORDER_DEFAULT)  # 补零for i in range(img.shape[0]):for j in range(img.shape[1]):def class_A(copy, S_ori=3):board = S_ori // 2z_med = np.median(copy[i:i + board, j:j + board])z_max = np.max(copy[i:i + board, j:j + board])z_min = np.min(copy[i:i + board, j:j + board])if (z_min < z_med) & (z_med < z_max):output[i, j] = class_B(copy[i, j], z_med, z_max, z_min)else:# next_size = S_ori + 2next_size = cv2.copyMakeBorder(copy, *[1] * 4, borderType=cv2.BORDER_DEFAULT)  # 增尺寸S_ori = S_ori + 2if S_ori <= S_max:return class_A(next_size, S_ori)else:output[i, j] = z_medclass_A(copy, 3)return output.astype(np.uint8)def label_def(): # 定义坐标数字字体及大小plt.xticks(fontproperties='Times New Roman', size=8)plt.yticks(fontproperties='Times New Roman', size=8)if __name__ == '__main__':img = cv2.imread('D://pictures//Fig0335(a)(ckt_board_saltpep_prob_pt05).tif', 0)img_median = cv2.medianBlur(img, 7)out = auto_median_filter(img, 7)plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falseplt.subplot(131), plt.imshow(img, "gray"), plt.title('椒盐噪声', fontsize='small'), label_def()plt.subplot(132), plt.imshow(img_median, "gray"), plt.title('中值滤波', fontsize='small'), label_def()plt.subplot(133), plt.imshow(out, "gray"), plt.title('自适应中值滤波', fontsize='small'), label_def()plt.show()

结果:

 原文描述:

自适应中值滤波器的另一个优点是它会在试图保留图像细节的同时平滑非冲激噪声,而传统中值滤波器是做不到这一点的。

可见实验结果证实了这一点!


http://chatgpt.dhexx.cn/article/6ZyFHdof.shtml

相关文章

自编自适应中值滤波器

自适应中值滤波器 算法思想&#xff1a;自适应中值滤波器是根据输入的图片像素矩阵和滤波器窗口的最大和最小值&#xff0c;首先&#xff0c;根据滤波器窗口的最大值申请两个可以处理了边界情况的滤波器&#xff0c;大小为原图加上最大滤波器的尺寸减一&#xff0c;按照边缘处…

图像中值滤波器python实现

中值滤波器原理 图像处理中最著名的统计排序滤波器是中值滤波器&#xff0c;即用一个预定义的像素领域中的灰度中值来代替像素的值&#xff1a; 其中是以&#xff08;x,y&#xff09;为中心的领域&#xff0c;包含中心点自己&#xff0c;在领域中找到中值&#xff0c;并用中值…

中值滤波器 median filter

中值滤波 中值滤波器(median filter)是将每个像素替换为围绕这个像素的矩形领域内的中值&#xff0c;或”中值像素"。 通过平均的简单模糊对噪声图像&#xff0c;由其是有较大孤立的异常值非常敏感。少量具有较大偏差的点也会严重影响到均值滤波。中值滤波可以采用取中间…

中值滤波器

我们前面提到&#xff0c;使用平均操作或加权平均操作可以降低图像的噪声&#xff0c;并由此引出了空间滤波器的概念。 这种平均操作或加权平均操作的空间滤波器&#xff0c;根据平均操作的特点&#xff0c;可以叫做均值滤波器。均值&#xff0c;就是平均值得意思。我们在《统…

C Primer Plus 第1章 初识C语言 笔记

C语言的起源 1972年&#xff0c;贝尔实验室的丹尼斯里奇&#xff08;Dennis Ritch&#xff09;和肯汤普逊&#xff08;Ken Thompson&#xff09;在开发UNIX操作系统时设计了C语言。 选择C语言的理由 用C语言编写的程序更易懂、更可靠。C语言充分利用了当前计算机的优势&…

C语言 基于结构体的程序设计(PTA)

一、实验目的 1&#xff0e;掌握C语言中结构体类型的定义和结构体变量的定义和引用。 2&#xff0e;掌握用结构指针传递结构数据的方法。 二、实验内容 1、 计算职工工资 给定N个职员的信息&#xff0c;包括姓名、基本工资、浮动工资和支出&#xff0c;要求编写程序顺序输…

C语言学习笔记(kk-zkx)

前言 流行的编程语言编程语言的大致发展历程编程语言应用数据在内存中的储存程序载入内存ASCII编码GB2312和GBKUnicode字符集&#xff08;统一码&#xff0c;万国码&#xff09;就业坑&#xff0c;当心 编程语言&#xff1a;用来控制计算机&#xff0c;让计算机为我们做事情的语…

C语言简介--学前必备知识

关键字 32个关键字&#xff1a; C和C的关系 C 主要在C语言的基础上增加了面向对象和泛型的机制&#xff0c;提高了开发效率&#xff0c;以适用于大中型软件的编写。C支持面向过程编程、面向对象编程和泛型编程&#xff0c;而C语言仅支持面向过程编程。就面向过程编程而言&a…

C语言入门篇——文件操作篇

目录 1、为什么使用文件 2、什么是文件 2.1程序文件 2.2数据文件 2.3文件名 3、文件的打开和关闭 3.1文件指针 3.2文件的打开和关闭 4、文件的顺序读写 5、文件的随机读写 5.1fseek 5.2ftell 5.3rewind 6、文本文件和二进制文件 7、文件读取结束的判定 8、文件…

C语言基础之13:文件输入/输出

Tips1&#xff1a; 函数&#xff1a;fopen()、getc()、putc()、exit()、fclose() fprintf()、fscanf()、fgets()、fputs() rewind()、fseek()、ftell()、fflush() fgetpos()、fsetpos()、feof()、ferror() ungetc()、setvbuf()、fread()、fwrite() 如何使用C标准I/O系列的函数…

01是c语言,01-C语言-简介

一、C语言的起源 1972年&#xff0c;由贝尔实验室的丹尼斯.里奇和肯.汤普逊在开发UNIX系时设计C语言。C语言是在B语言基础上进行设计的。C 语言设计的初衷是将其作为程序员使用的 一种编程工具&#xff0c;因此&#xff0c;其主要目标是成为有用的语言。 二、C语言的特性 设计特…

用C语言实现CLI界面的魔塔游戏

简介 本着开源的精神&#xff0c;我分享下我做的数据结构大作业&#xff0c;我当时选择的是游戏设计题目&#xff0c;由于魔塔基础的机制不太复杂&#xff0c;所以就借着大作业设计了个简易的魔塔游戏。 这是游戏界面&#xff1a; 以下是我当时大作业内容&#xff1a; 我把…

C语言入门(什么是C语言,C语言的编程机制以及一些基础计算机概念)

目录 一.什么是C语言 1.面向对象&#xff1a; 2.面向过程&#xff1a; 二.C语言特点 三.C语言开发时间 四.环境搭建 1.代码编辑器 2.C编译器 五.C语言标准 六.计算机补充知识 1.计算机构成 2.CPU工作 3.编译器 七.编写程序步骤 八.源文件&#xff0c;目标文件&a…

C语言 09.文件

读写文件与printf、scanf关联 printf – 屏幕 – 标准输出 scanf – 键盘 – 标准输入 perror – 屏幕 – 标准错误 系统文件&#xff1a;&#xff08;打开和关闭由系统自动执行&#xff09; 标准输入 – stdin – 0 一旦关闭了&#xff0c;scanf就不可以使用 标准输出 – s…

C语言完整知识体系总结

C语言的知识体系总结 这里写目录标题 C语言的知识体系总结序言&#xff1a;C语言的概述历史、特点、标准&#xff09;1、嵌入式开发为什么选择C语言&#xff1f;&#xff08;面试题&#xff01;&#xff09;2、为什么内核开发选择C语言&#xff1f;3、C语言的缺点&#xff1a;a…

【C语言篇】初识C语言

友情链接&#xff1a;C/C系列系统学习目录 知识总结顺序参考C Primer Plus&#xff08;第六版&#xff09;和谭浩强老师的C程序设计&#xff08;第五版&#xff09;等&#xff0c;内容以书中为标准&#xff0c;同时参考其它各类书籍以及优质文章&#xff0c;以至减少知识点上的…

C语言学习笔记 1

中央处理器&#xff08;CPU&#xff09;: 包括运算器、控制器、寄存器 Enum&#xff1a; Enum: 枚举类型 System函数&#xff1a; 执行系统命令。如pause、cmd、calc、mspaint、notepad..... System(“pause”);//暂停 System(“calc”);//打开计算机 System(“cls”);//…

C语言:文件操作

标题 文件什么是文件&#xff1a; 文件指针文件缓冲区操作文件1.文件的打开与关闭函数2.文本行输入输出函数3.格式化输入输出函数&#xff08;有格式的数据输入到文件中&#xff09;4.二进制输入输出调整文件指针位置6.ftell与rewind7.文件结束的判定 程序退出&#xff0c;内存…

c语言字节写入文件,C语言文件操作

所谓文件(file)一般指存储在外部介质上数据的集合,比如我们经常使用的mp3、mp4、txt、bmp、jpg、exe、rmvb等等。这些文件各有各的用途,我们通常将它们存放在磁盘或者可移动盘等介质中。那么,为什么这里面又有这么多种格式的文件呢?原因很简单,它们各有各的用途,区分就在…

C语言之编程基础

学自C语言中文网 编程基础 一.编程语言二. C语言的地位三.C语言是菜鸟和大神的分水岭三.C语言和C的关系四.数据在内存中的存储五.载入内存&#xff0c;让程序运行起来六.虚拟内存七. ASCII编码 一.编程语言 通过使用某种“语言”的固定格式和固定词汇来控制计算机的行为, 而这…