精华内容
下载资源
问答
  • Python实现中值滤波去噪方式发布时间:2020-08-28 04:17:42来源:脚本之家阅读:105中值滤波器去噪:中值滤波的主要原理是将数字图像中的某点用该...经过中值滤波后一些相对孤立的噪声点就容易被清除掉,这样就能提...

    Python实现中值滤波去噪方式

    发布时间:2020-08-28 04:17:42

    来源:脚本之家

    阅读:105

    中值滤波器去噪:

    中值滤波的主要原理是将数字图像中的某点用该点的邻域中各个像素值的中值所来代替,这样就能让目标像素周围能够更好的接近真实值,比如一张白纸上有一个黑点时,黑点的像素值比较大,经过中值滤波过后,黑点附近的像素值可能就会变小。经过中值滤波后一些相对孤立的噪声点就容易被清除掉,这样就能提高图像的质量。

    所以中值滤波器去噪的一个优点就是对椒盐噪声的去除具有很好的效果,具体操作是选取一个中心邻域,然后给邻域类各个像素的灰度值按大小进行排序,选取排序序列中的中值作为该邻域中心点的像素值的灰度值。

    它的缺点是当邻域挑选过大时,可能会造成图像特征丢失。

    实现代码如下:

    import numpy as np

    import cv2

    from PIL import Image

    import scipy.signal as signal

    import matplotlib.pyplot as plt

    #创建一个500*500的矩阵

    input_images = np.zeros((500, 500))

    filename = "E:/pycharm/GraduationDesign/Test/testtwo.png"

    #convert将当前图像转换为灰度模式,并且返回新的图像。

    #将图片在重新定义的矩阵中再显示,不然可能会只显示部分。

    img = Image.open(filename).resize((500, 500)).convert('L')

    plt.subplot(221)

    plt.title('原图', fontproperties=font_set)

    plt.imshow(img)

    #图像的尺寸,按照像素数计算。它的返回值为宽度和高度的二元组(width, height)。

    width = img.size[0]

    height = img.size[1]

    threshold=130

    #可以改写代码使其成为二值化,此代码可理解为反向二值化

    for h in range(height):

    for w in range(width):

    #getpixel直接获得(h,w)处的像素直接返回这个点三个通道的像素值

    #返回给定位置的像素值。如果图像为多通道,则返回一个元组(r,g,b,阈值)。

    #如果改成(w,h)出现的图像会倒转

    if img.getpixel((w, h)) < threshold:

    input_images[h, w] = 1

    else:

    input_images[h, w] = 0

    plt.subplot(222)

    plt.title('二值化', fontproperties=font_set)

    plt.imshow(input_images)

    data = signal.medfilt2d(np.array(img), kernel_size=3) # 二维中值滤波

    for h in range(0, height):

    for w in range(0, width):

    if data[h][w] < 128:

    input_images[h, w] = 0

    else:

    input_images[h, w] = 1

    plt.subplot(223)

    plt.title('中值滤波去噪(3*3)', fontproperties=font_set)

    plt.imshow(input_images)

    data = signal.medfilt2d(np.array(img), kernel_size=7) # 二维中值滤波

    for h in range(0, height):

    for w in range(0, width):

    if data[h][w] < 128:

    input_images[h, w] = 0

    else:

    input_images[h, w] = 1

    plt.subplot(224)

    plt.title('中值滤波去噪(7*7)', fontproperties=font_set)

    plt.imshow(input_images)

    plt.show()

    效果图:

    17064.jpg

    图中的小黑点是我简单模拟实现图片中含有椒盐噪声中所加入的。当中值滤波领域选取过大时会使图片失真。

    以上这篇Python实现中值滤波去噪方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持亿速云。

    展开全文
  • 文章目录1 中值滤波1.1 原理1.2 中值滤波对图像的影响1.3 函数编写1.4 主文件1.5 效果展示2 高效的中值滤波算法2.1 原理2.2 函数编写3 带权重的中值滤波3.1 原理3.2 函数编写3.3 主文件3.4 效果展示 1 中值滤波 1.1 ...

    1 中值滤波

    1.1 原理

    顾名思义,取中值的滤波方法。
    在这里插入图片描述
    如上图示,对于一个3*3大小的滤波器,每次取3*3大小范围内的中值赋值给当前像素。

    1.2 中值滤波对图像的影响

    如下图示,根据中值滤波器的定义:

    (a)单独的一个像素会被消除;(b)单独的一条线会被消除;

    (c)阶跃边界保持不变;(d)拐角会被磨圆。
    在这里插入图片描述
    因此中值滤波可以很好地去除椒盐噪声,稍后讲到。

    1.3 函数编写

    function imgMedian = medianfilter(img,filterSize)
    % img: image
    % filterSize: if=5, it means 5*5
    
    % Generate new blank image
    [h, w, c] = size(img);
    padSize = (filterSize-1)/2;
    imgMedianT = zeros([h+2*padSize, w+2*padSize, c]);
    imgMedianT(1+padSize:padSize+h, 1+padSize:padSize+w, :) = img;
    imgMedian = zeros([h, w, c]);
    
    for k = 1:c
        for i = 1:h
            for j = 1:w
                block = imgMedianT(i:i-1+filterSize, j:j-1+filterSize, k);
                imgMedian(i, j, k) = median(block, 'all');
            end
        end
    end
    
    imgMedian = uint8(imgMedian);
    
    end
    
    
    

    1.4 主文件

    % imgOrg = rgb2gray(imread("peppers.png"));
    imgOrg = imread("peppers.png");
    imgOrg = imnoise(imgOrg, 'salt & pepper'); % Adding salt-pepper noise
    subplot(1,3,1);
    imshow(imgOrg);
    title("Originall img");
    
    % median filter
    imgMedian = medianfilter(imgOrg, 3); % Generally, the size of a filter is an odd num
    subplot(1,3,2);
    imshow(imgMedian);
    title("Median filter img");
    
    % Using Matlab API
    subplot(1,3,3);
    [~, ~, c] = size(imgOrg);
    newImg = zeros(size(imgOrg));
    for i = 1:c
        newImg(:,:,i) = medfilt2(imgOrg(:,:,i));
    end
    newImg = uint8(newImg);
    imshow(newImg);
    title("Medfilt img by API");
    

    1.5 效果展示

    在这里插入图片描述
    可以看到,椒盐噪声被很好地去除了~

    2 高效的中值滤波算法

    2.1 原理

    在每个像素位置上都要对滤波器范围内的所有像素进行排序,这样非常耗时费力。优化[Huang et al., 1979; Pitas and Venetsanopoulos, 1990]后的方法为:当窗口沿行移动一列时,窗口内容的变化只是用右边的一个新列代替了左边的一列,对于m*n的滤波器,(mn-2m)个像素没有变化。

    算法步骤:
    在这里插入图片描述
    在这里插入图片描述

    2.2 函数编写

    请移步Matlab实现图像滤波(叁):高效的中值滤波查看哦~

    3 带权重的中值滤波

    3.1 原理

    滤波器的每个数字代表了对应位置像素的权重,如下图示,I(i,j)W(i,j)I(i,j)位置重复W(i,j)次再进行排序。
    在这里插入图片描述

    3.2 函数编写

    function imgwMedianf = wMedianf(img,filter)
    % img: image
    % filterSize: if=5, it means 5*5
    
    % Generate new blank image
    [h, w, c] = size(img);
    [hf, wf] = size(filter);
    hpadSize = (hf-1)/2;
    wpadSize = (wf-1)/2;
    imgMedianT = zeros([h+2*hpadSize, w+2*wpadSize, c]);
    imgMedianT(1+hpadSize:hpadSize+h, 1+wpadSize:wpadSize+w, :) = img;
    imgwMedianf = zeros([h, w, c]);
    filter = filter(:);
    
    for k = 1:c
        for i = 1:h
            for j = 1:w
                block = imgMedianT(i:i-1+hf, j:j-1+wf, k);
                block = block(:);
                block = repelem(block, filter);
                imgwMedianf(i, j, k) = median(block, 'all');
            end
        end
    end
    
    imgwMedianf = uint8(imgwMedianf);
    
    end
    
    

    3.3 主文件

    % imgOrg = rgb2gray(imread("peppers.png"));
    imgOrg = imread("peppers.png");
    imgOrg = imnoise(imgOrg, 'salt & pepper'); % Adding salt-pepper noise
    subplot(1,2,1);
    imshow(imgOrg);
    title("Originall img");
    
    % Weighted Median filter
    filter = [1, 2, 1;
              2, 3, 2;
              1, 2, 1];
    imgwMedianf = wMedianf(imgOrg, filter); % Generally, the size of a filter is an odd num
    subplot(1,2,2);
    imshow(imgwMedianf);
    title("Weighted Median filter img");
    
    

    3.4 效果展示

    在这里插入图片描述

    展开全文
  • 相比之下,中值滤波能够较好地去除椒盐噪声。我们直接看Matlab实现的效果和代码:%这个程序为我们显示了在去除椒盐噪声方面 中值滤波优于均值滤波clear all;close all;clc;I=imread('cameraman.tif');I=im2double(I)...

    椒盐噪声

    在去除椒盐噪声方面均值滤波会模糊图像,并且去除效果较差。相比之下,中值滤波能够较好地去除椒盐噪声。我们直接看Matlab实现的效果和代码:

    %这个程序为我们显示了在去除椒盐噪声方面 中值滤波优于均值滤波

    clear all;

    close all;

    clc;

    I=imread('cameraman.tif');

    I=im2double(I);

    J=imnoise(I,'salt & pepper',0.05);

    PSF=fspecial('average',3);

    K=imfilter(J,PSF);

    M=medfilt2(J,[3 3]);

    figure(1);

    subplot(2,2,1);imshow(I);title('原图');

    subplot(2,2,2);imshow(J);title('添加椒盐噪声');

    subplot(2,2,3);imshow(K);title('均值滤波去噪');

    subplot(2,2,4);imshow(M);title('中值滤波去噪');

    20190324160313399.png

    相关阅读

    大家知道马赛克画是什么吗?不是动作片里的马赛克哦~~

    马赛克画是一张由小图拼成的大图,本文的封面就是我们的效果图,放大看细节,每一

    对于PDF文件来最大的麻烦就是PDF文件的打开以及编辑,我们都知道PDF文件比较有安全性,操作性高,但是我们想要给PDF文件进行编辑怎么操

    常见的噪声:高斯、泊松和椒盐噪声以及代码实现

    转载的地址:https://www.jianshu.com/p/67f909f3d0ce

    转载的地址:https://www.cnbl

    Word水印功能可以给文档中添加任意的图片和文字作为背景图片,这也被我们称之为“水印”。不仅如此,我们还可以将文档背景

    Excel已是办公中的常客。而尽管如此,我们处理数据时显得仍旧十分繁琐,并且花费了许多时间不见得表格就做得漂亮了。当百分比想要转

    展开全文
  • matlab实现中值滤波去除脉冲噪声,比较简单的中值滤波程序。
  • 中值滤波是消除图像噪声最常见的手段之一,特别是消除椒盐噪声中值滤波的效果要比均值滤波更好。 二. python实现中值滤波和均值滤波,并用两种滤波器对受到椒盐噪声污染的图像进行去噪 import cv2 import numpy...

    一. 中值滤波:

        中值滤波器是一种可以使图像平滑的滤波器。它使用滤波器范围内的像素的中值去代表该范围内所有的像素。中值滤波是消除图像噪声最常见的手段之一,特别是消除椒盐噪声,中值滤波的效果要比均值滤波更好。


    二. python实现中值滤波和均值滤波,并用两种滤波器对受到椒盐噪声污染的图像进行去噪

    import cv2
    
    import numpy as np
    
    # Median filter
    
    def median_filter(img, K_size=3):
    
        H, W, C = img.shape
    
        ## Zero padding
    
        pad = K_size // 2
    
        out = np.zeros((H + pad*2, W + pad*2, C), dtype=np.float)
    
        out[pad:pad+H, pad:pad+W] = img.copy().astype(np.float)
    
        tmp = out.copy()
    
        # filtering
    
        for y in range(H):
    
            for x in range(W):
    
                for c in range(C):
    
                    out[pad+y, pad+x, c] = np.median(tmp[y:y+K_size, x:x+K_size, c])
    
        out = out[pad:pad+H, pad:pad+W].astype(np.uint8)
    
        return out
    
    # Average filter
    
    def average_filter(img, G=3):
    
        out = img.copy()
    
        H, W, C = img.shape
    
        Nh = int(H / G)
    
        Nw = int(W / G)
    
        for y in range(Nh):
    
            for x in range(Nw):
    
                for c in range(C):
    
                    out[G*y:G*(y+1), G*x:G*(x+1), c] = np.mean(out[G*y:G*(y+1), G*x:G*(x+1), c]).astype(np.int)
    
    
    
        return out
    
    # Read image
    
    img = cv2.imread("../paojie_sp.jpg")
    
    # Median Filter and Average Filter
    
    out1 = median_filter(img, K_size=3)
    
    out2 = average_filter(img,G=3)
    
    # Save result
    
    cv2.imwrite("out1.jpg", out1)
    
    cv2.imwrite("out2.jpg", out2)
    
    cv2.waitKey(0)
    
    cv2.destroyAllWindows()
    
    

    三. 实验结果

              

                        受到椒盐噪声污染的图像 ↑

              

                        中值滤波后的图像 ↑

              

                        均值滤波后的图像 ↑

            可以明显看出,对于受到椒盐噪声污染的图像,中值滤波往往比均值滤波的去噪效果要好!


    四. 参考内容:

            https://www.cnblogs.com/wojianxin/p/12500348.html

            https://www.jianshu.com/p/53b4a8b15c28

    展开全文
  • 写在前面HIT大三上学期视听觉信号处理课程中视觉部分的实验一,经过和学长们实验的对比发现...实现图像的空域滤波:中值滤波和均值滤波算法,并选取适合的方法对1中的图像进行平滑处理,要求显示处理之后的结果。实...
  • 图片预处理中重要一环就是椒盐澡,通常用到中值滤波器进行处理,效果很好。中值滤波器是一种非线性滤波器,其基本原理是把数字图像中某点的值用其领域各点值的中值代替。如求点[i,j]的灰度值计算方法为:(1)按...
  • clear all;close all;I=imread('2.jpg');figure;imshow(I,[]);title('原始图像');I=imnoise(I,'salt & pepper',0.15);figure;...%7×7中值滤波Q=medfilt2(I,[3,3]);figure;imshow(Q,[]);title('...
  • 均值滤波、中值滤波、混合中值滤波C++源码实例,可运行。
  • 中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声...
  • 文章目录中值滤波介绍opencv自带的中值滤波函数简单算法实现中值滤波快速算法实现中值滤波 中值滤波介绍 中值滤波介绍 中值滤波定义:将????(????为奇数)个数据按其值????????进行从大到小或者从小到大排列后得到一...
  • 进行中值滤波不仅可以去除孤点噪声,而且可以保持图像的边缘特性,不会使图像产生显著的模糊,比较适合于实验中的人脸图像。简单阐述下中值滤波算法与均值滤波的区别如下:(1)均值滤波相当于低通滤波,有将图像模糊...
  • 【摘要】文中给出了一种非线性的滤除心电信号基线漂移的滤波方法,把基于排序统计理论的快速中值滤波方法应用于处理心电信号,通过多次对心电信号中选择的窗口数据进行排序,然后取中值的方法来达到滤波的效果。...
  • Python图形界面实现中值滤波、均值滤波红包:Lena椒盐噪声图片:# -*- coding: utf-8 -*-"""Created on Sat Oct 14 22:16:47 2017@author: Don"""from tkinter import *from skimage import ioimport numpy as npim=...
  • 进行中值滤波不仅可以去除孤点噪声,而且可以保持图像的边缘特性,不会使图像产生显著的模糊,比较适合于实验中的人脸图像。简单阐述下中值滤波算法与均值滤波的区别如下:(1)均值滤波相当于低通滤波,有将图像模糊...
  • 中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声...
  • 开始之前 在上一篇我们实现了读取噪声图像, 然后 进行三种形式的均值滤波得到结果, 由于我们自己写的均值滤波未作边缘处理, 所以效果有一定的下降,...首先介绍了中值滤波的原理, 给出其实现思路,并根据思路实现了 C+...
  • 中值滤波一、实验目的:①掌握中值滤波的原理、滤波过程;②熟悉Matlab编程。二、实验内容:利用中值滤波,对图像进行滤波;三、实验原理:中值滤波是一种非线性滤,由于它在实际运算过程中并不需要图像的统计特性,...
  • 中值滤波3*3滤波窗口程序如下:>> i=imread('Winter.jpg'); %读入图像subplot(2,2,1);imshow(i); %显示原始图像title('original'); %设置图像标题j = imnoise(i,'salt & pepper',0.02); %加均值为0,方差...
  • 椒盐噪声中值滤波比较好 原因是:1.椒盐噪声是幅值近似相等但是随机的分布在不同位置,图中既有污染的点,也有干净的点。  2.图中噪声的均值不为零,所以不适合均值滤波。  3.图中有干净的点也有污染的点,所以...
  • 调用matlab自带函数,对心电信号ECG实现中值滤波,达到去除基线漂移的目的。建议ECG数据长度不要太大,中值滤波运算速度较慢。
  • 椒盐噪声的特征非常明显,为图像上有黑色和白色的点。使用中值滤波可以很好的去除椒盐噪声。 设定中值滤波的尺寸为3*3. 即用滤波覆盖的9个格子的中间值代替该点的灰度值。
  • GUI应用程序,使用中值滤波方法校正图像中的噪声 Nama : Arif Samsudin NIM : 311910255 Kelas : TI 19 C1 1.准备创建GUI应用程序 在命令窗口中输入指南,然后按Enter 2.创建新的GUI 选择创建新的GUI,指定存储位置...
  • 开始之前 在上一篇我们实现了读取噪声图像, 然后 进行三种形式的均值滤波得到结果, 由于我们自己写的均值滤波未作边缘处理, 所以效果有一定的下降,...首先介绍了中值滤波的原理, 给出其实现思路,并根据思路实现了 C+...
  • 首先椒盐噪声是很简单的一种噪声,椒噪声(黑点)灰度为0,盐噪声(白点)灰度为255,去除椒盐噪声比较有效的方法是采用中值滤波,但是,在噪声密度较大时,标准中值滤波(SMF)的效果就不太好了,因为SMF采用3*3...
  • 快速中值滤波及c语言实现 学生姓名:刘勇学号: 6100410218 专业班级:数媒101 【摘要】本文讨论了用c语言在微机上实现中值滤波及快速算法,在程序设计的过程中充分考虑到程序运行的时间复杂度和空间复杂度的问题....
  • 平滑处理 VS2017编译通过,可直接运行 包括噪声消除 邻域平均法 33均值滤波器 超限邻域平均法 中值滤波 随机噪声
  • 中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心象素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护边缘少受模糊。中值滤波...
  • 快速中值滤波及c语言实现 学生姓名:刘勇学号: 6100410218 专业班级:数媒101 【摘要】本文讨论了用c语言在微机上实现中值滤波及快速算法,在程序设计的过程中充分考虑到程序运行的时间复杂度和空间复杂度的问题....
  • 自己编写的中值滤波算法和库函数调用的中值滤波算法 psnr值一样,因此不必...4:一种基于排序阈值的开关中值滤波方法(秦鹏等):先将窗口内所有像素分成三类:1) 噪声点 2) 平坦区域 3)边缘细节 5:极大中值滤波

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,231
精华内容 3,692
关键字:

中值滤波去噪声