3.4 空间滤波基础
• Images are often corrupted by random variations in intensity, illumination, or have poor contrast and can’t be used directly.
• Filtering: transform pixel intensity values to reveal certain image characteristics
– Enhancement: improves contrast – Smoothing: remove noises – Template matching: detects known patterns.
空间滤波器由一个邻域(典型是个小矩形)及其所涵盖的图像像素执行预定义操作组成。 滤波产生的新像素坐标等于邻域中心的坐标。滤波(filtering)一词是借用频域处理中的词汇,是指接受或者拒绝一定的频率分量,。 例如,通过低频的滤波器称为低通滤波器。
What is a mask
A mask is a filter. Concept of masking is also known as spatial filtering. Masking is also known as filtering. In this concept we just deal with the filtering operation that is performed directly on the image.
-masking 是 指在image 领域的 filtering。
What is filtering
The process of filtering is also known as convolving a mask with an image. As this process is same of convolution so filter masks are also known as convolution masks.
-filtering 是 mask 与 image 进行卷积操作,所以mask 又叫 卷积掩膜。
总结:filtering 是信号邻域的词汇,用来消除随机产生的噪声或者加强信号的特点。 当传到digital image processing(DIP)领域以后,也可以叫masking。 而滤波也好,masking 也罢,本质上都是卷积操作,或者是相关操作。
3.4.1 空间滤波机理
- 如果在图像像素上执行线性操作,那该滤波器称为线性滤波器
- 否则称为非线性滤波器
空间滤波的机理示于图3.32。该处理就是在待处理图像中逐点地移动掩模。在每一点(x,y)处,滤波器在该点的响应通过事先定义的关系来计算。对于线性空间滤波(见2.6节线性的定义),其响应由滤波器系数与滤波掩模扫过区域的相应像索值的乘积之和给出。 图3.32所示为3×3的掩模,在图像中的点(x,y)处,用该掩模线性滤波的响应R为:
我们看到的是掩模系数与直接在掩模下的相应像素的乘积之和。注意,具体地说,系数ω(0,0)与图像值f(x,y)相符合是指当乘积求和计算发生时,掩模位于(x,y)的中心。对于一个尺寸为m×n的掩模,我们假设m=2a十1且n=2b+l,这里a,b为非负整数。即,在后续的讨论中,处理的掩模的长与宽都为奇数,其有意义的最小尺寸3×3(在我们的讨论中排除了无足轻重的1×1掩模)。
一般来说,在M×N的图像f上,用m×n大小的滤波器掩模进行线性滤波由下式给出:
3.4.2 空间相关(Correlation)与卷积(Convolution)操作
一维:
为了便于理解,我们先引入一维函数滤波的概念,再引入二维图像的滤波。基本原理:滤波器w与函数f起始位置对齐后,逐位移动,并且每次移动都进行按位相乘结果累加得到某位的结输出。设,一维函数 f 为: 0 0 0 0 1 0 0 0 0 ; 滤波器 w:1 2 3 4 5相关运算的过程:1、对齐:将 w 的开始位置 5 与 f 的开始位置 0对齐。对齐位置作为运算起点。2、填充:为了使得 w 每一次运算中各位都有值相乘,对 f 起始位置和结尾无对应位的位置进行“0填充”。(注意下填充的概念,在图像滤波中,填充的值对图像滤波的影响比较大。)。3、 计算:将上下对应的位相乘后全部相加得到结果的第一位,输出位置总是在。向右移动滤波器w “N”位,并进行相同的运算得到相应第N位的计算结果。4、 输出大小: Matlab中我们使用imfilter函数来进行卷积或者相关运算;(后文中,将具体介绍imfilter函数。)得到的结果的大小分为“full”和“same”两类,full包含填充项,same为原f大小。
二维:
一维和二维的情况很相像,需要注意填充扩展对图像的影响,我们将在后面的实验中讨论。总的来说:从开始位置平移掩膜到第一行运行结束位置,在每个位置上执行掩膜覆盖的亮度值与对应的掩膜系数相乘结果累加得到对应点的像素值。然后跳到第二行的起始位置继续平移和运算,如此反复直到掩膜移动到 整个运算的结束位置。(不过根据设定输出图像大小为same还是full,掩膜移动的范围有所不同。后文将讲具体描述。)关于掩膜的大小:通常使用奇数维的方阵作为掩膜/滤波器,因为奇数维的方正有唯一的一个中心点,比较直观。相关运算:1、对齐:得到same大小的输出结果,只需要保证掩膜中心能够覆盖全图每个像素点即可。此时只需将掩膜中心与图像矩阵第一行第一个元素对齐即可。full 的情况如下图,得到的有值的区域可能会有所拓宽,不过不影响原图大小尺寸的滤波结果的得出。2、填充:同一维中的理由,在二维中我们需要对图像进行填充。Matlab中的填充方式有4种:a/ 通过值P来进行扩展。(P为常量值,如本例中使用的为“0”)
b/ 过复制图像边界进行扩展填充。
c/ 过镜像反射图像边界来扩展填充。d/ 图像看成二维周期函数来扩展。在函数imfilter中会有具体的参数来设置这几种方式。后面函数介绍部分会具体描述。3、运算:将掩膜覆盖的亮度值与对应的掩膜系数相乘后结果累加得到对应点的输出像素值。然后进行平移继续运算,如此反复,直到平移结束位置。4、输出大小:分为full 类型和same类型。其意义与一维中一致。卷积运算的情况与相关类似,不过对掩膜进行了180°的旋转。
公式表示:w表示模板,f表示图像
模板 mask | 图像 |
注:(s,t)指的是该点距离当前中心像素点的相对位置
上面的公式是表示相关,应该用空心的五角星,但是没找到。 w和f是对应位置相乘。
上面的公式表示卷积,是实心的五角星。 w和f的转置的对应位置相乘。
3.4.3 线性滤波器的向量表示
3.4.4 空间滤波器的模板的产生
生成一个大小为m*n的线性空间滤波器要求制定mn个模板系数,这些系数是根据所要求的操作得到的。例如,我们想把图像中的像值替换为以这些点为中心点的,3*3的领域的平局灰度代替。 就出现了平均模板:
在某些应用中,我们有一个具有两个变量的连续函数,其目的是得到一个空间滤波模板。例如:有两个变量的高斯函数的基本形式如下:
delte是标准差,控制二维高斯函数钟形的“紧度”。通常我们设坐标x,y是整数(图像的像素坐标),如果想用这个二元函数生成3*3的模板,那么就关于其中心进行取样。
这样,就有。 如下图所示:
3.5 平滑空间滤波器
平滑线性滤波器,也叫均值滤波器,是低通滤波器( 因为这样的操作降低了灰度的‘尖锐’变化)
- 所有系数都相等的滤波器,可以看出是求模板内像素的平均值
- 加权平均模板,根绝不同位置设定不同权重,如下图,权重随距离增加递减。对角线位置距离比直接接触的距离大,所以权重变为1。按照1/2的等比随着距离增加进行递减。重要:这个模板的目的是 在平滑处理中降低模糊
统计排序(非线性)滤波器
以滤波器包围的图像区域中包含的像素的排序为基础,然后使用统计排序结果决定代替中心的像素值。最知名的叫 中值滤波器,这种滤波器对脉冲噪声非常有效,也称为椒盐噪声。
分析: 因为滤波器用统计中的数列中值代替模板中心位置处的值,这样就比均值更加保证了锐度的特点。使得拥有不同灰度的点看起来更接近于它的相邻点。
注:既然是统计特性决定的输出,可以取50%处的值,也可以取最小值,最大值等等其他的统计特性。
===========补充阅读
1. In image processing, a kernel, convolution matrix, or mask is a small matrix useful for blurring, sharpening, embossing, edge-detection, and more. This is accomplished by means of convolution between a kernel and an image.
2. Image Filtering in the Spatial Domain。
Filtering is a technique for modifying or enhancing an image. For example, you can filter an image to emphasize certain features or remove other features. Image processing operations implemented with filtering include smoothing, sharpening, and edge enhancement.
Filtering is a neighborhood operation, in which the value of any given pixel in the output image is determined by applying some algorithm to the values of the pixels in the neighborhood of the corresponding input pixel. A pixel's neighborhood is some set of pixels, defined by their locations relative to that pixel. (SeeNeighborhood or Block Processing: An Overview for a general discussion of neighborhood operations.) Linear filtering is filtering in which the value of an output pixel is a linear combination of the values of the pixels in the input pixel's neighborhood.
数字图像处理- 3.4 空间滤波 and 3.5 平滑空间滤波器的更多相关文章
-
c语言数字图像处理(八):噪声模型及均值滤波器
图像退化/复原过程模型 高斯噪声 PDF(概率密度函数) 生成高斯随机数序列 算法可参考<http://www.doc.ic.ac.uk/~wl/papers/07/csur07dt.pdf&g ...
-
Win8 Metro(C#)数字图像处理--2.67图像最大值滤波器
原文:Win8 Metro(C#)数字图像处理--2.67图像最大值滤波器 [函数名称] 最大值滤波器WriteableBitmap MaxFilterProcess(WriteableBi ...
-
数字图像处理(MATLAB版)学习笔记(2)——第2章 灰度变换与空间滤波
0.小叙闲言 1.本章整体结构 2.书中例子 例2.1 主要是使用函数imadjust,来熟悉一下灰度处理,体验一把 >> imread('myimage.jpg'); >> ...
-
c语言数字图像处理(五):空间滤波
空间滤波原理 使用大小为m*n的滤波器对大小为M*N的图像进行线性空间滤波,将滤波器模板乘以图像中对应灰度值,相加得模板中心灰度值 a = (m-1)/2, b = (n-1)/2 若f(x+s, y ...
-
FPGA与数字图像处理技术
数字图像处理方法的重要性源于两个主要应用领域: 改善图像信息以便解释. 为存储.传输和表示而对图像数据进行处理,以便于机器自动理解. 图像处理(image processing): 用计算机对图像进行 ...
-
基于小波变换的数字图像处理(MATLAB源代码)
基于小波变换的数字图像处理(MATLAB源代码) clear all; close all; clc;M=256;%原图像长度N=64; %水印长度[filename1,pathname]=uiget ...
-
数字图像处理作业使用OpenCV - 使用笔记
数字图像处理作业的输入图像全部都是灰度图像,所以汇总一下自己遇到的问题答案. OCV的图像容器是Mat<typename>,可以用imread(filename)读取图像,filename ...
-
python数字图像处理(17):边缘与轮廓
在前面的python数字图像处理(10):图像简单滤波 中,我们已经讲解了很多算子用来检测边缘,其中用得最多的canny算子边缘检测. 本篇我们讲解一些其它方法来检测轮廓. 1.查找轮廓(find_c ...
-
python数字图像处理(1):环境安装与配置
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
随机推荐
-
Atitit.cto 与技术总监的区别
Atitit.cto 与技术总监的区别 1. 核心区别1 2. Cto主要职责1 3. 如何提升到cto1 4. CTO五种基本的必备素质:2 5. 2 1. 核心区别 技术总监(Chief Tech ...
-
【JavaScript】ES6 新语法
function* 声明 function* 声明(function关键字后跟一个星号)定义一个generator(生成器)函数,返回一个Generator对象. 生成器是一种可以从中退出并在之后重新 ...
-
Building OpenCASCADE on Debian
Building OpenCASCADE on Debian eryar@163.com Abstract. When you are familiar with OpenCASCADE on Win ...
-
boost.numpy编译报错:undefined reference to `PyInt_FromLong&#39; libboost_numpy.so: undefined reference to `PyCObject_AsVoidPtr&#39;
[ 31%] Built target boost_numpy[ 36%] Building CXX object libs/numpy/example/CMakeFiles/dtype.dir/dt ...
-
C# 我理解的接口、抽象类、以及事件
一.摘要 面试中无数次被问及到什么是接口,什么是抽象类,接口和抽象类有什么区别?什么是委托,什么是事件. 请写出猫叫了,老鼠跑了的例子..... 这些东西对于一些初学者来说可能还真的有点搞不懂,对于一 ...
-
NET基础课--开发工具实用功能
1.浏览代码结构 类视图 2.重构功能 提取长的的方法体中的部分方法到单独函数中 路径:选择代码段,右击重构----提取方法 3.代码结构 a 代码对齐 点[编辑]-[高级]-[设置选定内容的格式] ...
-
javax.mail用smtp服务器发送带附件的邮件
jar包: javax.mail-1.5.5.jar maven配置: <dependency> <groupId>com.sun.mail</groupId> & ...
-
SQL 数据类型、约束、索引及视图
一.数据类型:整数:int,bigint,smallint小数:float,real,decimal(长度,精度),numeric(长度,精度)字符:char(n),varchar(n) 8000英文 ...
-
P177 test 6-3 UVa536
//P177 test 6-3 #include<cstdio> #include<cstring> using namespace std; +],s2[+]; int re ...
-
Android 7.0 调取系统相机崩溃解决android.os.FileUriExposedException
一.写在前面 最近由于廖子尧忙于自己公司的事情和OkGo(一款专注于让网络请求更简单的网络框架) ,故让LZ 接替维护ImagePicker(一款支持单.多选.旋转和裁剪的图片选择器),也是处理了诸多 ...