中值滤波算法及例程

这篇具有很好参考价值的文章主要介绍了中值滤波算法及例程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

中值滤波是一种常用的非线性图像滤波算法,它能够有效去除图像中的椒盐噪声(即孤立的亮或暗像素点),同时保持图像边缘和细节的清晰度。中值滤波的主要思想是使用一个滑动窗口,在窗口内对像素值进行排序,并将排序后的中间值作为中心像素的新值。

以下是中值滤波的算法步骤:

  1. 定义滑动窗口的大小,通常为一个正方形或矩形。

  2. 在图像上遍历每个像素。

  3. 对于每个像素,获取其周围邻域内的像素值,并将其放入一个数组或列表中。

  4. 对这个数组或列表进行排序,找到其中值。

  5. 将中值赋给当前像素作为滤波后的值。

  6. 重复步骤2-5,直到遍历完整个图像。

中值滤波算法的关键在于选择合适的窗口大小,较小的窗口大小可以更好地保留图像细节和边缘特征,但可能无法有效去除较大的噪声;而较大的窗口大小可以更好地平滑图像,但可能会模糊细节。

需要注意的是,中值滤波算法对于消除椒盐噪声效果良好,但对于其他类型的噪声(如高斯噪声)可能效果不佳。在实际应用中,可以根据具体的噪声类型和需求选择合适的滤波方法。

以下是一个使用Python实现的中值滤波例程:

import cv2
import numpy as np

def median_filter(image, kernel_size):
    # 获取图像的宽度和高度
    height, width = image.shape[:2]
    
    # 创建一个与原图像相同大小的空白图像
    filtered_image = np.zeros_like(image)
    
    # 计算中值滤波的卷积核大小
    kernel_half = kernel_size // 2
    
    # 对图像进行遍历
    for i in range(height):
        for j in range(width):
            # 获取每个像素的周围邻域像素
            neighborhood = image[max(0, i - kernel_half):min(height, i + kernel_half + 1),
                                 max(0, j - kernel_half):min(width, j + kernel_half + 1)]
            # 计算邻域像素的中值,并赋值给当前像素
            filtered_image[i, j] = np.median(neighborhood)
    
    return filtered_image

# 读取图像
image = cv2.imread('input.jpg', 0)  # 以灰度图像方式读取

# 应用中值滤波器
filtered_image = median_filter(image, kernel_size=3)

# 显示原图像和滤波后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Filtered Image', filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上代码中,我们定义了一个名为median_filter的函数,它接受一个图像和一个滤波器大小作为参数,并返回滤波后的图像。在函数内部,我们通过遍历图像的每个像素,获取周围邻域像素的值,并使用np.median函数计算中值,然后将中值赋值给当前像素。最后,我们使用cv2.imshow函数显示原图像和滤波后的图像,并使用cv2.waitKey和cv2.destroyAllWindows等函数来管理窗口显示和关闭。

请确保在运行示例代码前,将'input.jpg'替换为你自己的图像文件路径。文章来源地址https://www.toymoban.com/news/detail-726131.html

到了这里,关于中值滤波算法及例程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机视觉基础(3)——图像滤波与边缘检测

    本文主要聚焦于 图像滤波与边缘检测 两部分。图像滤波部分分析的是 线性移不变系统,将介绍两类滤波器,平滑滤波器和梯度滤波器 。边缘检测部分将介绍 高斯导数滤波器和Canny边缘检测器 。为了更好的阅读体验,读者需要提前了解或掌握卷积、线性移不变系统、梯度、

    2024年02月02日
    浏览(60)
  • 【计算机视觉】图像分割与特征提取——频域增强(低通滤波&高通滤波)

    个人简介:  📦个人主页:赵四司机 🏆学习方向:JAVA后端开发  ⏰往期文章:SpringBoot项目整合微信支付 🔔博主推荐网站:牛客网 刷题|面试|找工作神器 📣种一棵树最好的时间是十年前,其次是现在! 💖喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。 前言:

    2024年01月15日
    浏览(50)
  • 【计算机图形学】裁剪算法(Cohen-Sutherland算法 & 中值分割算法 & Liang-Barsky算法)

    一 实验目的 编写直线段、多边形裁剪算法 熟悉Cohen-Sutherland算法、中值分割算法和Liang-Barsky算法的裁剪 二 实验算法理论分析 Cohen-Sutherland 算法:     中值分割算法: 与CS算法一样,首先对直线段端点进行编码,并把线段与窗口的关系一样分为3种情况:全在、完全不在、线

    2024年02月03日
    浏览(48)
  • 图像处理与计算机视觉--第四章-图像滤波与增强-第二部分

    目录 1.图像噪声化处理与卷积平滑 2.图像傅里叶快速变换处理 3.图像腐蚀和膨胀处理 4 图像灰度调整处理 5.图像抖动处理算法    

    2024年02月07日
    浏览(40)
  • 图像处理与计算机视觉--第四章-图像滤波与增强-第一部分

    目录 1.灰度图亮度调整 2.图像模板匹配 3.图像裁剪处理 4.图像旋转处理 5.图像邻域与数据块处理

    2024年02月07日
    浏览(61)
  • 图像处理与计算机视觉算法

    图像处理与计算机视觉算法是实现对图像和视频内容分析、理解和操作的一系列技术。这些算法可以分为多个类别,包括但不限于以下几个主要方面: 预处理 : 像素操作:灰度化、二值化、直方图均衡化等,用于改善图像的对比度和亮度分布。 去噪:高斯滤波、中值滤波、

    2024年02月22日
    浏览(50)
  • 计算机视觉--距离变换算法的实战应用

    前言: Hello大家好,我是Dream。 计算机视觉CV是人工智能一个非常重要的领域 。 在本次的距离变换任务中,我们将使用 D4距离度量方法 来对图像进行处理。通过这次实验,我们可以更好地理解距离度量在计算机视觉中的应用。希望大家对计算机视觉和图像处理有了更深入的

    2024年02月15日
    浏览(50)
  • 计算机视觉&多模态算法实习面试记录

    一面(12.20) 自我介绍:第一次面有点瓢嘴 介绍科研项目 如何使用的CLIP Open-vocab和zero-shot 介绍比赛项目——多模态行车数据视频 介绍任务是什么 自定义数据集? Yolo v8 介绍CLIP: 对比学习训练:一个batch的N张图片和文本进行对比;首先分别进行编码-再投影到相同特征维度

    2024年03月25日
    浏览(50)
  • 深入探究计算机视觉库OpenCV:开源视觉算法与应用详解

    计算机视觉作为人工智能领域的重要分支,为我们提供了丰富的工具和技术,帮助我们处理图像和视频数据。而OpenCV(Open Source Computer Vision Library)作为最受欢迎的开源计算机视觉库之一,为开发人员提供了丰富的功能和工具,用于处理图像和视频数据。本文将深入探讨Open

    2024年03月13日
    浏览(52)
  • 计算机竞赛 - 基于机器视觉的图像拼接算法

    图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要。 再举一个身边的例子吧,你用你的手机对某一场景拍照,但是你没有办法一次将所有你

    2024年02月13日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包