图像处理(2)空间滤波

本文介绍了图像处理中的空间滤波,包括滤波原理、线性滤波和统计排序滤波。空间滤波通过临近像素操作降低噪声,如线性平滑滤波。线性滤波器如均值滤波能平滑图像,但可能造成图像模糊。统计排序滤波如中值滤波对椒盐噪声有良好滤波效果,但在处理加性随机噪声时效果一般。
摘要由CSDN通过智能技术生成
  1. 滤波原理
    滤波是为了消除噪声影响,提高图像质量,滤波方法的选择取决于噪声的特性。滤波包括空间滤波和频率域滤波,在数学上二者可以相互转化。空间滤波本质上是通过临近像素的微操作来实现噪声降低,比如线性平滑滤波,就是通过临近像素的加权或者不加权平均来消减噪声强度,这对于方差较小较稳定的噪声效果较好。用公式来表示空间滤波就是:
    这里写图片描述
    实际上就是通过一个w模板在图像上移动,然后进行相关性运算。也可以进行卷积运算,但是两者在处理方法上没有区别,卷积运算是将模板在图像水平和竖直方向进行翻转后再进行相关操作。
  2. 线性滤波
    线性滤波有均值滤波,也有加权滤波。模板如下:
    这里写图片描述
    MATLAB代码:
function filtered_image=linear_filtering(f,w,filtering_mode,boundary_options,size_options)

[row_f,col_f]=size(f);
[row_w,col_w]=size(w);

%expand the f iamge
f_exp=zeros(row_f+row_w-1,col_f+col_w-1);


f_sum=0;

%replicate the outer image data
if strcmp(boundary_options,'repllicate')
    for i=1:row_f+row_w-1
        for j=1:col_f+col_w-1
            if (i<row_w/2) && (j<col_f+col_w/2 && j>col_w/2) 
                f_exp(i,j)=f(1,j-floor(col_w/2));

            elseif (i>row_f+row_w/2) && (j<col_f+col_w/2 && j>col_w/2)
                f_exp(i,j)=f(row_f,j-floor(col_w/2));

            elseif (j<col_w/2) && (i<row_f+row_w/2 && i>row_w/2)
                f_exp(i,j)=f(i-floor(row_w/2),j);

            elseif (j>col_f+col_w/2) && (i<row_f+row_w/2 && i>row_w/2)
                f_exp(i,j)=f(i-floor(row_w/2),col_f);

            elseif i<row_f+row_w/2 && i>row_w/2 && j<col_f+col_w/2 && j>col_w/2
                f_exp(i,j)=f(i-floor(row_w/2),j-floor(col_w/2));

            end


        end
    end

%mirror of the image data in the outer space    
elseif strcmp(boundary_options,'symmetric')
    for i=1:row_f+row_w-1
        for j=1:col_f+col_w-1
            if (i<row_w/2) && (j<col_f+col_w/2 && j>col_w/2) 
                f_exp(i,j)=f(row_w-1-i,j-floor(col_w/2));

            elseif (i>row_f+row_w/2) && (j<col_f+col_w/2 && j>col_w/2)
                f_exp(i,j)=f(2*row_f+floor(row_w/2)-i,j-floor(col_w/2));

            elseif (j<col_w/2) && (i<row_f+row_w/2 && i>row_w/2)
                f_exp(i,j)=f(i-floor(row_w/2),col_w-1-j);

            elseif (j>col_f+col_w/2) && (i<row_f+row_w/2 && i>row_w/2)
                f_exp(i,j)=f(i-floor(row_w/2),2*col_f+floor(col_w/2)-j);

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值