MATLAN图像处理之统计滤波

我们先看下面两图的结果  在进行方法代码描述

MATLAN图像处理之统计滤波

MATLAN图像处理之统计滤波

 

%非线性空间滤波  统计排序滤波器
%MATLAB 中使用ordfilt2生成飞线型滤波器
%g=ordfilt2(f,order,domain)
%该函数的作用,domain会生成 0 1 的元素的m n矩阵,其中非零元素作为领域 
%对领域内的元素排序, 选取第order个元素  作为该领域的像素值
%如果想对每一个部分进行统计排序滤波   可以不使用domain  使用onse(m,n)来生成全1 的矩阵

%如果要实现统计的最小滤波器   order=1   最大滤波器   order=m*n   中值滤波器order=median(1:mn)

%非线性空间滤波需要对图像进行填充后操作
%对图像填充用padarray函数
%fp=padarray(f,[r c],method,direction)
%f为输入图像  fp为填充后的图像  [r c] 用于给出填充f的行数 列数
%方法
%'symmetric'  (对称)图像大小通过围绕边界的镜像反射来填充
%'replicate'  图像大小通过复制边界中的值来扩展
%'circular'   图像大小铜鼓瓯江图像看成是一个周期函数的一个周期来扩展
% 方向
% 'pre'         在每一维的第一个元素的填充
% 'post'        在每一维的最后一个元素后填充
% 'both'        在每一维的第一个元素前和最后一个元素后填充
%若  f=[1 2;3 4]    fp=padarray(f,[3 2],'replicate','post') 生成结果如下
%fp=1 2 2 2 
%   3 4 4 4 
%   3 4 4 4 
%   3 4 4 4 
%   3 4 4 4 

clc
clear
f=imread('D:\亮度调节与空间滤波\9.jpg');
f1=f(:,:,1);
f2=ordfilt2(f1,1,ones(5,5));
f3=padarray(f1,[2 2],'replicate', 'pre');
f4=ordfilt2(f3,1,ones(5,5));
subplot(2,2,1)
imshow(f1)
title('原图')
subplot(2,2,2)
imshow(f2)
title('没有扩展进行滤波')
subplot(2,2,3)
imshow(f4)
title('扩展后进行滤波')
figure
f5=ordfilt2(f1,1,ones(5,5));
subplot(2,2,1)
imshow(f5)
title('最小滤波')
f6=ordfilt2(f1,9,ones(5,5));
subplot(2,2,2)
imshow(f6)
title('最大滤波')
f7=ordfilt2(f1,5,ones(5,5));
subplot(2,2,3)
imshow(f7)
title('中值滤波')
subplot(2,2,4)
imshow(f1)
title('原图')