空间噪声滤波器

  若出现的退化仅仅是噪声,则遵循模型:g(x,y) = f(x,y) + η(x,y),此时所选的降低噪声的方法是空间滤波。

  这里用到的函数为自定义的spfilt函数,适用于不考虑图像特性在不同位置之间的差异的图像。由于代码过长,具体函数贴在本文的末尾以供参考。

代码示例

% 胡椒噪声
f = imread('ckt-board-orig.tif');
[M,N] = size(f);
R = imnoise2('salt & pepper',M,N,0.1,0);
c = find(R==0);
gp = f;
gp(c) = 0;% 盐粒噪声
R = imnoise2('salt & pepper',M,N,0,0.1);
c = find(R==1);
gs = f;
gs(c) = 255;% 过渡胡椒噪声的较好方法是使用Q为正值的反调和滤波器
fp = spfilt(gp,'chmean',3,3,1.5);% 过渡盐粒噪声的较好方法是使用Q为负值的反调和滤波器
fs = spfilt(gs,'chmean',3,3,-1.5);% 使用最大和最小滤波器可以得到类似的结果
fpmax = spfilt(gp,'max',3,3);
fsmin = spfilt(gs,'min',3,3);subplot(3,2,1);imshow(gp);title('仅被胡椒噪声污染');
subplot(3,2,2);imshow(gs);title('仅被盐粒噪声污染');
subplot(3,2,3);imshow(fp);title('Q=1.5反调和滤波器处理胡椒噪声');
subplot(3,2,4);imshow(fs);title('Q=-1.5反调和滤波器处理盐粒噪声');
subplot(3,2,5);imshow(fpmax);title('最大滤波器处理胡椒噪声');
subplot(3,2,6);imshow(fsmin);title('最小滤波器处理盐粒噪声');

运行结果


自适应空间滤波器

  设计一个自适应中值滤波器,从而可以通过根据被滤波区域的图像特性自适应的滤波器来改进结果。详细说明的算法如下所示:

代码示例

f = imread('ckt-board-orig.tif');
g = imnoise(f,'salt & pepper',.25);
f1 = medfilt2(g,[7 7],'symmetric');
f2 = adpmedian(g,7);subplot(1,3,1);imshow(g);title('被椒盐噪声污染的图像');
subplot(1,3,2);imshow(f1);title('使用中值滤波器');
subplot(1,3,3);imshow(f2);title('使用自适应中值滤波器');

运行结果


spfilt函数

function f = spfilt(g, type, m, n, parameter)
%SPFILT Performs linear and nonlinear spatial filtering.
%   F = SPFILT(G, TYPE, M, N, PARAMETER) performs spatial filtering
%   of image G using a TYPE filter of size M-by-N. Valid calls to
%   SPFILT are as follows:
%
%     F = SPFILT(G, 'amean', M, N)       Arithmetic mean filtering.
%     F = SPFILT(G, 'gmean', M, N)       Geometric mean filtering.
%     F = SPFILT(G, 'hmean', M, N)       Harmonic mean filtering.
%     F = SPFILT(G, 'chmean', M, N, Q)   Contraharmonic mean
%                                        filtering of order Q. The
%                                        default is Q = 1.5.
%     F = SPFILT(G, 'median', M, N)      Median filtering.
%     F = SPFILT(G, 'max', M, N)         Max filtering.
%     F = SPFILT(G, 'min', M, N)         Min filtering.
%     F = SPFILT(G, 'midpoint', M, N)    Midpoint filtering.
%     F = SPFILT(G, 'atrimmed', M, N, D) Alpha-trimmed mean filtering.
%                                        Parameter D must be a
%                                        nonnegative even integer;
%                                        its default value is D = 2.
%
%   The default values when only G and TYPE are input are M = N = 3,
%   Q = 1.5, and D = 2. %   Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins
%   Digital Image Processing Using MATLAB, Prentice-Hall, 2004
%   $Revision: 1.6 $  $Date: 2003/10/27 20:07:00 $

% Process inputs.
if nargin == 2m = 3; n = 3; Q = 1.5; d = 2;
elseif nargin == 5Q = parameter; d = parameter;
elseif nargin == 4Q = 1.5; d = 2;
else error('Wrong number of inputs.');
end% Do the filtering.
switch type
case 'amean'w = fspecial('average', [m n]);f = imfilter(g, w, 'replicate');
case 'gmean'f = gmean(g, m, n);
case 'hmean'f = harmean(g, m, n);
case 'chmean'f = charmean(g, m, n, Q);
case 'median'f = medfilt2(g, [m n], 'symmetric');
case 'max'f = ordfilt2(g, m*n, ones(m, n), 'symmetric');
case 'min'f = ordfilt2(g, 1, ones(m, n), 'symmetric');
case 'midpoint'f1 = ordfilt2(g, 1, ones(m, n), 'symmetric');f2 = ordfilt2(g, m*n, ones(m, n), 'symmetric');f = imlincomb(0.5, f1, 0.5, f2);
case 'atrimmed'if (d <= 0) | (d/2 ~= round(d/2))error('d must be a positive, even integer.')endf = alphatrim(g, m, n, d);
otherwiseerror('Unknown filter type.')
end%-------------------------------------------------------------------%
function f = gmean(g, m, n)
%  Implements a geometric mean filter.
inclass = class(g);
g = im2double(g);
% Disable log(0) warning.
warning off;
f = exp(imfilter(log(g), ones(m, n), 'replicate')).^(1 / m / n);
warning on;
f = changeclass(inclass, f);%-------------------------------------------------------------------%
function f = harmean(g, m, n)
%  Implements a harmonic mean filter.
inclass = class(g);
g = im2double(g);
f = m * n ./ imfilter(1./(g + eps),ones(m, n), 'replicate');
f = changeclass(inclass, f);%-------------------------------------------------------------------%
function f = charmean(g, m, n, q)
%  Implements a contraharmonic mean filter.
inclass = class(g);
g = im2double(g);
f = imfilter(g.^(q+1), ones(m, n), 'replicate');
f = f ./ (imfilter(g.^q, ones(m, n), 'replicate') + eps);
f = changeclass(inclass, f);%-------------------------------------------------------------------%
function f = alphatrim(g, m, n, d)
%  Implements an alpha-trimmed mean filter.
inclass = class(g);
g = im2double(g);
f = imfilter(g, ones(m, n), 'symmetric');
for k = 1:d/2f = imsubtract(f, ordfilt2(g, k, ones(m, n), 'symmetric'));
end
for k = (m*n - (d/2) + 1):m*nf = imsubtract(f, ordfilt2(g, k, ones(m, n), 'symmetric'));
end
f = f / (m*n - d);
f = changeclass(inclass, f);
%-------------------------------------------------------------------%
function image = changeclass(class, varargin)
switch class
case 'uint8'image = im2uint8(varargin{:});
case 'uint16'image = im2uint16(varargin{:});
case 'double'image = im2double(varargin{:});
otherwiseerror('Unsupported IPT data class.');
end

【图像处理】MATLAB:仅有噪声的复原(空间滤波)相关推荐

  1. 数字图像处理matlab实验对图像复原,数字图像处理实验07图像的复原处理

    数字图像处理实验 一.数字图像处理实验 实验七 图像的复原处理 一.实验目的 熟悉几种在实际应用中比较重要的图像复原技术,学会用MATLAB复原函数对退化图像进行复原处理. 二.实验内容 1.用点扩散 ...

  2. 《数字图像处理 MATLAB版》学习笔记

    学习教材:<数字图像处理 MATLAB版>(第二版) 冈萨雷斯 学习过程中的图片代码和及我收集的一些关于数字图像处理的其他学习资料,需要的可以评论留下邮箱(需要购买专栏),加油 文章目录 ...

  3. 数字图像处理MATLAB学习笔记(五)

    数字图像处理MATLAB学习笔记(五) Color Image Processing 1 Color Image Representation in MATLAB 这里不多说了,彩色图片在计算机中以R ...

  4. 数字图像处理MATLAB学习笔记(一)

    数字图像处理MATLAB学习笔记(一) 灰度转换与空间滤波 本节主要使用Matlab语言进行灰度转换与空间滤波的使用 并对相关数学原理进行总结 1. Intensity Transformer Fun ...

  5. matlab图源代码,[转载]常用的一些图像处理Matlab源代码

    常用的一些图像处理Matlab源代码 #1:数字图像矩阵数据的显示及其傅立叶变换 #2:二维离散余弦变换的图像压缩 #3:采用灰度变换的方法增强图像的对比度 #4:直方图均匀化 #5:模拟图像受高斯白 ...

  6. 图像处理----入门资料,Matlab r2019最新版,r2008a,《数字图像处理》冈萨雷斯 第三版 《数字图像处理 Matlab 版》

    研究生想研究的方向是图像处理,现在离开学还有四个月,希望能稍微入门吧.同时也希望通过博客的形式记录一下学习的进度,学习的心情.目前学习两周,安装了基本的软件,收集书籍,学习了灰度变换,空间滤波,频率滤 ...

  7. 【资源分享】数字图像处理MATLAB版冈萨雷斯+中文高清版+随书源码链接

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 1.数字图像处理MATLAB版冈萨雷斯+中文高清版 2.数字图像处理MATLAB版冈萨雷斯随书源码 1.数字图像处 ...

  8. matlab关于噪声课设,基于matlab的有噪声的语音信号处理的课程设计.doc

    基于matlab的有噪声的语音信号处理的课程设计.doc DSP实验课程设计实验报告DSP实验课程设计实验报告姓名学号班级1课程设计题目基于MATLAB的有噪声的语音信号处理的课程设计.2课程设计的目 ...

  9. 【数字图像处理matlab】(HSI变换融合算法)

    [数字图像处理matlab](HSI变换融合算法) 输入一张高分辨率的全色影像HR,一张低分辨率的多光谱影像MS,采用HSI变换融合算法实现影像融合,其中RGB与HSI影像的相互转换调用自定义函数RG ...

最新文章

  1. 编写可调模板并使用Auto-tuner自动调谐器
  2. python啥意思-星号*在Python中是什么意思?
  3. Angular面试从喜剧到悲剧的十个问题
  4. 取消gVim自动生成备份文件~文件
  5. H5开发中的问题总结
  6. linux 修改ssh banner
  7. spring mvc学习(35):restful的put
  8. Java 装箱和拆箱
  9. C++ 之 转义字符
  10. php mcrypt取消,php – Mcrypt弃用后如何解密?
  11. 鸿蒙硬件HI3861开发环境搭建-串口2测试
  12. 删除Terminating状态的Pod
  13. 浅入MFC之对话框及MFC程序的运行
  14. 收集4:文件打开方式
  15. 火柴人小程序linux,火柴人手绘小程序
  16. pycharm python脚本如何调试_Pycharm调试程序技巧小结
  17. 软件开发模型:瀑布模型,增量模型,原型模型,螺旋模型,喷泉模型,敏捷开发模型
  18. 【古代文学论文】沈德潜诗学思想的调和格调与文化意蕴(节选)
  19. 选择器的权重中对交集选择器,分组(并集)选择器,以及关系选择器的理解
  20. 基于帕累托的多目标遗传算法优化的原理与 Python 实现

热门文章

  1. Clumsy Keke 三维数组模拟
  2. 牛客 2021年度训练联盟热身训练赛第二场 C题Tip to be Palindrome
  3. AcWing 1055. 股票买卖 II
  4. P1059 明明的随机数(C/C++)
  5. leetcode689:Maximum Sum of 3 Non-Overlapping Subarrays
  6. 谈谈java中的集合框架
  7. 【设计模式】设计模式六大原则
  8. 从生产线到生产岛:理解敏捷开发中的设计与测试活动
  9. 题解 P3367 【【模板】并查集】
  10. JSP页面报错:“Uncaught SyntaxError: Unexpected token ”