[图像]中值滤波(Matlab实现)

原创 2015年07月10日 09:09:34

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:http://blog.csdn.net/humanking7/article/details/46826009


原理简述

中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术。它也是一种邻域运算,类似于卷积,但是计算的不是加权求和,而是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围像素灰度值的差比较大的像素改取与周围的像素值接近的值,从而可以消除孤立的噪声点。它能减弱或消除傅立叶空间的高频分量,但影响低频分量。因为高频分量对应图像中的区域边缘的灰度值具有较大较快变化的部分,该滤波可将这些分量滤除,使图像平滑。值滤波技术在衰减噪声的同时能较好的保护图像的边缘。

代码实现

主函数代码

clear all;
clc;
%----------------------------------------------
%图像进行中值滤波,并显示图像
%调用  median_filter( )  进行处理
%----------------------------------------------

%读进图像
[filename, pathname] = uigetfile({'*.jpg'; '*.bmp'; '*.gif'}, '选择图片');

%没有图像
if filename == 0
    return;
end

Image = imread([pathname, filename]);
[m, n, z] = size(Image);

%转换为灰度图
if z>1
    Image = rgb2gray(Image);
end

result = median_filter(Image, 3);

 figure(1)
 subplot(1,2,1);
    imshow(Image);
    title('原图像');
 subplot(1,2,2);
    imshow(result);
    title('中值滤波后');

中值滤波函数代码

代码保存为 median_filter.m

function [ img ] = median_filter( image, m )
%----------------------------------------------
%中值滤波
%输入:
%image:原图
%m:模板的大小3*3的模板,m=3

%输出:
%img:中值滤波处理后的图像
%----------------------------------------------
    n = m;
    [ height, width ] = size(image);
    x1 = double(image);
    x2 = x1;
    for i = 1: height-n+1
        for j = 1:width-n+1
            mb = x1( i:(i+n-1),  j:(j+n-1) );
            mb = mb(:);
            mm = median(mb);
            x2( i+(n-1)/2,  j+(n-1)/2 ) = mm;

        end
    end

    img = uint8(x2);


end

效果展示

1

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【Matlab学习笔记】【图像滤波去噪】中值滤波

中值滤波程序: clc; clear all; J=imread('F:\图像去噪\4.jpg'); I=rgb2gray(J); subplot(1,2,1); imshow(I); title('...

七种滤波方法的matlab实现和测试

创建两个混合信号,便于更好测试滤波器效果。同时用七中滤波方法测试。 混合信号Mix_Signal_1 = 信号Signal_Original_1+白噪声。 混合信号Mix_Signal_2 ...

中值滤波matlab

摘  要 中值滤波技术是一种在去除噪声的同时能较好保护图像边缘细节的非线性技术,在图像增强和恢复等领域中得到了广泛的应用。文章阐述了中值滤波的原理和特点,并使用软件工具MATLAB实现了图像的中...

MATLAB 自编3*3中值滤波(含边缘)

先上M文件:function d=midfilt(x) %x是需要滤波的图像 p=length(x); %输入图像是p×p的,且p>3 x1=double(x); x2=x1; for i=1...

均值滤波、中值滤波的matlab实现

目前比较经典的图像去噪算法主要有以下三种:   均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度 的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊, 可以对...

Matlab---图像滤波之各种滤波器汇总实现

1 打开图片  所有的滤波原始图片均使用下面的操作方式打开(只处理灰度图像): % 读取图像 可以处理彩色多通道图片(转化为灰度图像) [FileName,PathName...

matlab自带函数实现高斯滤波

自己编写的高斯滤波已理解,可是matlab自带的高斯滤波函数却没有用过,这里记录一下。 %matlab自带函数实现灰度图高斯滤波 clear close all img=imread('lena....

matlab实现图像滤波——高斯滤波

要求 生成一个(2N+1)×(2N+1)大小的高斯模板H(标准为sigma),然后用此模板对图像进行滤波。不允许使用 fspecial 来产生高斯模板,不允许使用 imfilter、conv2 等函数...
  • ytang_
  • ytang_
  • 2016-10-07 14:49
  • 9908

MATLAB中实现图像的空间域滤波和频率域滤波

一)空间域滤波与频率域滤波  1)空间域滤波       空间域滤波是指在图像空间中借助模板对图像领域进行操作,处理图像每一个像素值。主要分为线性滤波和非线性滤波两类,根据功能可分为平滑滤波器和锐...

使用Matlab自带计算机视觉库的混合高斯前景检测模型

一、前言 Matlab自带的computer vision toolbox主要是toolbox里的vision模块,下面使用vision工具箱自带的混合高斯模型检测前景。 二、代码 %GMM前景...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)