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

本文介绍了如何在Matlab中进行图像滤波,包括打开图片、添加噪声以及使用空域和频域滤波技术进行处理。通过实例展示了滤波前后的效果。
摘要由CSDN通过智能技术生成

1 打开图片

  所有的滤波原始图片均使用下面的操作方式打开(只处理灰度图像):

    % 读取图像 可以处理彩色多通道图片(转化为灰度图像)       
    [FileName,PathName,FilterIndex] = uigetfile({
   '*.png;*.jpg;*.jpeg';'*.*'},'选择一幅待处理图片');
    filename = fullfile(PathName, FileName) ;    
    SrcImg = imread(filename);     
    % setappdata(0,'SrcData',SrcImg);
    % 获取图像的信息    
    [m n channels] = size(SrcImg); 
    if(channels > 1)
        % 将彩色图象转为灰度图像
        SrcImg = rgb2gray(SrcImg);
        % 将灰度图像数据保存到SrcImg变量中,即后面滤波需要用到的原始数据,此时没有加噪声
        setappdata(0,'SrcImg',SrcImg);
        imshow(SrcImg);        
    else
        % 将灰度图像数据保存到SrcImg变量中,即后面滤波需要用到的原始数据,此时没有加噪声
        setappdata(0,'SrcImg',SrcImg);
        imshow(SrcImg);        
    end       

2 创建我们需要的噪声

  对原始图像进行加噪声处理,即操作SrcImg

    % 获取原始图像数据
    SrcImg = getappdata('SrcImg');
    % 变换
    f = mat2gray(SrcImg,[0 255]);
    % 获取图像大小信息
    [M,N] = size(f);
    %% 高斯噪声
    a = 0;
    b = 0.08;
    n_gaussian = a + b .* randn(m,n);
    g_gaussian = f + n_gaussian;  
    % show image
    figure();    
    imshow(g_gaussian,[0 1]);
    % 保存图片
    imwrite(g_gaussian,'gaussianNoise.jpg','jpg');
    xlabel('Ruselt of Gaussian noise');     
    %% 瑞利噪声
    a = -0.2;  
    b = 0.03;  
    n_rayleigh = a + (-b .* log(1 - rand(M,N))).^0.5;   
    g_rayleigh = f + n_rayleigh; 
    % show image
    figure();    
    imshow(g_rayleigh,[0 1]);
    imwrite(g_rayleigh,'rayleighNoise.jpg','jpg');
    xlabel(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值