精华内容
下载资源
问答
  • 一维中值滤波函数,调用函数,输入滤波窗口值和初始一维滤波向量,输出滤波后的向量
  • matlab 5*5十字型窗口中值滤波源代码
  • 题目均值滤波和中值滤波 在自己的证件照中... 均值滤波用fspecial函数创建各模板大小的均值滤波器并用imfilter函数进 行 滤波 中值滤波直接用matlab提供的medfilt2中值滤波器进行滤波即可 处理结果 程序清单 1均值滤
  • 文章目录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

    万次阅读 多人点赞 2019-02-16 16:42:00
    中值滤波 中值滤波:是一种非线性数字滤波器技术, 用于降噪。 理解:去一个模板,可为3 * 3, 5 * 5,n * n…每次从图像中取出模板大小的矩阵,将所有元素排序,取中间值放入木板的中心位置,再还原到原图中,...

    中值滤波

    中值滤波:是一种非线性数字滤波器技术, 用于降噪。
    理解:去一个模板,可为3 * 3, 5 * 5,n * n…每次从图像中取出模板大小的矩阵,将所有元素排序,取中间值放入木板的中心位置,再还原到原图中,以此类推扫描整个图像。

    可先对图像进行填充,填充函数:

    B = padarray(A,padsize,padval,direction)
    

    注释:
    功能:填充图像或填充数组。
    A:输入图像;
    B:填充后的图像;
    padsize:填充的行数和列数,通常用[r ,c]来表示。
    padval:表示填充方法。它的具体值和描述如下:
    包括:

    • 'symmetric’表示图像大小通过围绕边界进行镜像反射来扩展;
    • 'replicate’表示图像大小通过复制外边界中的值来扩展;
    • 'circular’图像大小通过将图像看成是一个二维周期函数的一个周期来进行扩展。
      direction:表示填充的方向。
      包括:
    • 'pre’表示在每一维的第一个元素前填充;
    • 'post’表示在每一维的最后一个元素后填充;
    • ‘both’表示在每一维的第一个元素前和最后一个元素后填充,此项为默认值。
      若参量中不包括direction,则默认值为’both’。
      若参量中不包含padval,则默认用零来填充。
      若参量中不包括任何参数,则默认填充为零且方向为’both’。
      在计算结束时,图像会被修剪成原始大小。

    matlab中自带的中值滤波函数:

    b=medfilt2(x0,[n,n]);
    

    x0:需要过滤的图像;
    [n,n]:模板大小
    注意:此函数用于二维中值滤波,通常先灰度处理。

    另一种方法程序代码

    x=imread('G:\matlab\1.jpg');%需要过滤的图像
    n=3;    %模板大小
    [height, width]=size(x);   %获取图像的尺寸(n小于图片的宽高)
    figure;
    imshow(x);%显示原图
    % x = padarray(x,[3,3]); %对图像边缘进行填充
    x = imnoise(x,'salt & pepper'); %加入椒盐噪声
    figure;
    imshow(x); %显示加入噪声后的图片
    x1=double(x);  %数据类型转换
    x2=x1;  %转换后的数据赋给x2
    for i=1:height-n+1  
        for j=1:width-n+1  
            c=x1(i:i+(n-1),j:j+(n-1)); %在x1中从头取模板大小的块赋给c  
            e=c(1,:);      %e中存放是c矩阵的第一行  
            for u=2:n  %将c中的其他行元素取出来接在e后使e为一个行矩阵 
                e=[e,c(u,:)];          
            end  
            med=median(e);      %取一行的中值  
            x2(i+(n-1)/2,j+(n-1)/2)=med;   %将模板各元素的中值赋给模板中心位置的元素  
        end  
    end    
    d=uint8(x2);  %未被赋值的元素取原值 
    figure;
    imshow(d);  %显示过滤图片
    x0=rgb2gray(x);  %灰度处理,灰度处理后的图像是二维矩阵
    b=medfilt2(x0,[n,n]);  %matlab中自带值滤波函数
    figure;
    imshow(b); %显示过滤后的灰度图片
    
    
    

    结果截图:
    原图:
    原图
    加入椒盐噪声后的图:
    在这里插入图片描述
    手写程序滤波后:
    在这里插入图片描述
    自带函数滤波:
    在这里插入图片描述

    展开全文
  • MATLAB 自适应中值滤波函数adpmedian

    千次阅读 2019-04-01 17:44:09
    MATLAB 自适应中值滤波函数adpmedian 参考 冈萨雷斯 《数字图像处理》MATLAB版 function f = adpmedian(g,Smax) if (Smax<=1)||(Smax/2==round(Smax/2))||(Smax~=round(Smax)) error('Smax must be an odd...

    MATLAB  自适应中值滤波函数adpmedian

    参考 冈萨雷斯 《数字图像处理》MATLAB版

     

    function f = adpmedian(g,Smax)
    
    if (Smax<=1)||(Smax/2==round(Smax/2))||(Smax~=round(Smax))
        error('Smax must be an odd integer >1.')
    end
    f=g;
    f(:)=0;
    alreadyProcessed=false(size(g));
    
    for k=3:2:Smax
        zmin=ordfilt2(g,1,ones(k,k),'symmetric');
        zmax=ordfilt2(g,k*k,ones(k,k),'symmetric');
        zmed=medfilt2(g,[k k],'symmetric');
        
        processUsingLevelB=(zmed>zmin)&(zmax>zmed)&...
            ~alreadyProcessed;
        zB=(g>zmin)&(zmax>g);
        outputZxy=processUsingLevelB & zB;
        outputZmed=processUsingLevelB&~zB;
        f(outputZxy)=g(outputZxy);
        f(outputZmed)=zmed(outputZmed);
        
        alreadyProcessed=alreadyProcessed | processUsingLevelB;
        if all(alreadyProcessed(:))
            break;
        end
    end
    f(~alreadyProcessed)=zmed(~alreadyProcessed);
    
    end
    
    

     

    展开全文
  • 自适应中值滤波MATLAB

    2018-09-07 09:42:00
    自适应中值滤波函数
  • Matlab 最大值滤波 中值滤波 最小值滤波 函数 ordfilt2 ...在MATLAB图像处理工具箱中提供了二维统计顺序滤波函数ordfilt2函数。二维统计顺序滤波是中值滤波的推广,对于给定的n个数值{al ,a2,...,

    Matlab 最大值滤波 中值滤波 最小值滤波 函数 ordfilt2

    【转载】原文出处:http://blog.csdn.net/fengbingchun/article/details/5951629

    ordfilt2函数
    MATLAB图像处理工具箱中提供了二维统计顺序滤波函数ordfilt2函数。二维统计顺序滤波是中值滤波的推广,对于给定的n个数值{al ,a2,...,an},将它们按大小顺序排列,将处于第k个位置的元素作为图像滤波输出,即序号为k的二维统计滤波。ordfilt2函数语法格式为:
    Y=ordfilt2(X,order,domain)

    Y=ordfilt2(X,order,domain,S)

    其功能是:对图像X作顺序统计滤波,order滤波器输出的顺序值,domain为滤波窗口。S是与domain大小相同的矩阵,它是对应domain中非零值位置的输出偏置,这在图形形态学中是很有用的。例如:
    Y=ordfilt2(X,5,ones(3,3)),相当于3×3的中值滤波
    Y=ordfilt2(X,1,ones(3,3)),相当于3×3的最小值滤波
    Y=ordfilt2(X,9,ones(3,3)),相当于3×3的最大值滤波
    Y=ordfilt2(X,1,[0 1 0;1 0 1;0 1 0]),输出的是每个像素的东、西、南、北四个方向相邻像素灰度的最小值。

    个人备注:

    这里,因为模板是3*3,那么邻域内的数据就按1-9由小到大排序,所以函数的第二个参数:5、1、9就分别对应的是中值、最小值、最大值,所以这种参数的设置也就是中值滤波、最小值滤波、最大值滤波。第二个参数的作用取决于模板的大小。

    展开全文
  • 题目灰度图像的中值滤波 题目描述一幅15*15的图像f(i,j)其灰度值由函数给出用3*3中值滤波器作用于该图像上求输出图像注意保持边界像素灰度不变 处理过程 首先创建15*15灰度图像矩阵并转换为uint8格式 然后创建中值...
  • 原程序地址:https://blog.csdn.net/timidsmile/article/details/6904381中值滤波代码如下:%自编的中值滤波函数。x是需要滤波的图像,n是模板大小(即n×n) function d=mid_filter(x,n) [height, width]=size(x); %...
  • MATLAB常用的滤波函数比较:均值滤波和中值滤波 均值滤波中值滤波运行结果程序代码 均值滤波 均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,...
  • Matlab常见的一维数据滤波函数 movmean:平均值滤波 movmedian:中值滤波 此外,同类函数还有获取规定窗口下的标准差与方差函数 movstd:求标准差 ; movvar:求方差 ; 其函数的记忆方法为mov+相应函数的名称 ...
  • 改进的中值滤波MATLAB程序

    热门讨论 2011-09-19 14:58:37
    改进的中值滤波程序,测试后能有效滤除各种噪音,如高斯,椒盐等,比单一的中值滤波效果显著,此为中值滤波函数的M文件,用时需要自己编写主程序调用此函数即可。
  • % (线性)均值滤波函数 % 输入为需要进行空间滤波的灰度图像,线性方形滤波器 % 输出为经过滤波之后的图像 % 图像边缘的填充为最近的像素值,目的是消除填充0时会出现的黑框 % 滤波器的大小为 n * n, n = 2 * k + 1...
  • 一、核心函数工具箱提供了两个函数来执行常见的非线性滤波:nlfilter和colfilt,前者直接执行二维操作,而colfilt按列的形式组织数据。尽管colfilt需要占用更多的内存,但执行起来要比nlfilter快得多。在大多数图像...
  • 前言在进行图像空域处理时,对于椒盐噪声的图像,中值滤波是一个很不错的选择,一般来说mask有矩形 椭形 和十字形,十字形被认为在处理含有少数尖锥基元的图像更能保证尖锥的形状,由于没找到Matlab自带的函数库实现...
  • 前言在进行图像空域处理时,对于椒盐噪声的图像,中值滤波是一个很不错的选择,一般来说mask有矩形 椭形 和十字形,十字形被认为在处理含有少数尖锥基元的图像更能保证尖锥的形状,由于没找到Matlab自带的函数库实现...
  • median _matlab 中值滤波函数

    千次阅读 2012-03-23 14:33:12
    >> median(A,1) //列的中值 ans =         2        7        5 >> median(A,2)//行的中值 ans =         4         3         7
  • Matlab 最大值滤波 中值滤波 最小值滤波 函数 ordfilt2 ...在MATLAB图像处理工具箱中提供了二维统计顺序滤波函数ordfilt2函数。二维统计顺序滤波是中值滤波的推广,对于给定的n个数值{al ,a2,...,
  • 函数集合了时域,频域图、频谱图、以及中值滤波,均值滤波等,只需要我们给这个函数传递一个WAV信号,就能自动帮助我们画出上面的所有图,并保存为bmp格式的图片。 matlab代码如下: function Handle( signal)...
  • matlab 图像中值滤波,自己编写

    热门讨论 2012-06-29 11:31:39
    matlab邻域中值滤波,里面有邻域中值滤波的两种情况处理方式,不超过边界和超过边界用0填充处理,未用matlab中可以直接调用的滤波函数,自己编写的中值滤波函数
  • matlab 中值滤波

    2016-12-06 22:27:35
    从运算算子中,选择中间值作为当前输出...中值滤波函数 function [ img ] = ImageMidFilter(imin,operator) [m,n,g] = size(imin); [k,h] = size(operator); imin = im2double(imin); a = fix(k/2); b = f
  • 调用matlab自带函数,对心电信号ECG实现中值滤波,达到去除基线漂移的目的。建议ECG数据长度不要太大,中值滤波运算速度较慢。
  • 文件中包含test.m文件和两个函数以及一张测试图片。利用学习机会自己编写了均值滤波和中值滤波函数,并在test.m文件中运行,有详细代码注释,希望一起学习。
  • 可直接调用中值滤波函数medfilt2,中值滤波对去椒盐噪声效果更好 a=imread('E:\matlab\other.program\PP.bmp'); % a=imnoise(a,'gaussian',0.02); %加高斯噪声 a=imnoise(a,'salt & pepper',0.02); %加椒盐噪声...
  • Matlab中值滤波去噪

    千次阅读 2018-05-10 22:42:44
    以灰度图像eight.tif为例,向原始图像中加入椒盐噪声,再对噪声图像调用中值滤波函数midfilt进行去噪。 I=imread('eight.tif'); J=imnoise(I,'salt &amp; pepper'); after=midfilt(J,3); subplot(1,3,1); ...
  • 自编中值滤波

    2021-01-08 21:42:29
    自编一个中值滤波函数mymedfilt2(A, [m,n]),实现Matlab中的medfilt2函数的功能(边缘采用复制的方式);对自选的灰度图像加上椒盐噪声,用自编的函数对其进行中值滤波。 主程序: // An highlighted block var foo ...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 130
精华内容 52
关键字:

中值滤波函数matlab

matlab 订阅