数字图像处理学习笔记之二 灰度变换与空间滤波

综述

对于图像的处理有两种思路,一种是对图像本身的直接处理,即空间域处理;另一种是在频率域进行处理。关于空域和频域,可以参考《傅里叶变换——另一种世界观》。在空间域的处理相对简单,因此首先介绍的是空域处理法。空域中有两种重要处理方法:灰度变换(或亮度变换)和空间滤波(或邻域处理、空间卷积)。

空间域处理:灰度变换和空间滤波

g(x,y)=T[ f(x,y) ]

空域处理的思路可以由上式表达。f 即是原图,T 是在点(x,y)指定邻域上的图像处理算子,g 是输出图像。当邻域为1*1大小时,T 为灰度变换算子;邻域大于1*1时,T 为空间滤波算子。

灰度变换可以考虑每一个像素的灰度(点处理),也可以考虑整体灰度后再处理一个个像素(直方图处理)。空间滤波是每次考虑一块像素,进行卷积操作。

进行灰度变换可以使用MATLAB工具箱函数,也可以自己编写函数。首先介绍的是直接进行点处理的函数,这些函数来自MATLAB图像处理工具箱。之后会介绍直方图处理、空间滤波。

灰度变换函数(来自MATLAB工具箱)

  • 灰度映射: g = imadjust( f, [low_in high_in], [low_out high_out], gamma )
  • 动态范围操作:对数变换和对比度拉伸变换。
  • 任意灰度的灰度变换:给定灰度变换的列向量,使用interp1查找并替换。

直方图处理

直方图反映了图像像素灰度的分布情况。

  • 绘制直方图:imhist(f, b)(f为图像,b是灰度刻度), bar, stem, plot。
  • 直方图均衡化:将输入图像的灰度级均匀分布于较宽范围内,采用均衡化,使用histeq(f)函数实现。原理可以参考《直方图均衡化》。
  • 直方图匹配(规定化):很多时候均衡化并不能实现预期效果,因为均衡化不会对每一个输入图像区别对待,只是例行算法,将灰度级均匀分布而已。为了实现预期效果,采用直方图规定化方法,将灰度级做指定。使用histeq(f, h)实现,h为规定的灰度级比例。
  • 对比度受限的自适应直方图均衡(Contrast-Limited Adaptive Histogram Equalization):通过adapthisteq()函数实现。

空间滤波

空间滤波是在空域进行的滤波操作,有线性空间滤波和非线性空间滤波。线性空间滤波是对目标像素点的领域进行整体考虑,对窗口内的每一个元素乘以系数后求和,并作为目标像素点的响应。非线性空间滤波的思路与线性不同,其操作是非线性的,比如中值滤波、排序滤波等。

线性空间滤波常用imfilter和fspecial函数实现,非线性空间滤波常用nlfilter和colfilt函数实现。

平滑与锐化

空间滤波有很多应用场景,平滑和锐化是两个典型的应用场景。平滑可以使用平滑模板对图像进行线性空间滤波,也可以使用中值滤波对图像进行非线性空间滤波。锐化可以使用锐化模板对图像进行线性空间滤波。

平滑模板示例:
[ 0.1  0.1  0.1
0.1  0.2  0.1
0.1  0.1  0.1 ]

锐化模板示例:
[ 0    1    0
1  -4    1
0    1    0 ]

时间: 2024-10-08 05:31:50

数字图像处理学习笔记之二 灰度变换与空间滤波的相关文章

数字图像处理学习笔记之一 DIP绪论与MATLAB基础

写在前面的话 数字图像处理系列的学习笔记是作者结合上海大学计算机学院<数字图像处理>课程的学习所做的笔记,使用参考书籍为<冈萨雷斯数字图像处理(第二版)(MATLAB版)>,同时学习过程中会参考网络学习资源.对于数字图像处理的学习不可能仅仅依靠作者所写的这一系列笔记,而是需要花时间和精力学习,本文只可作参考和交流之用.由于涉及此学科不久,在学习过程中难免存在错误,请读者不吝赐教. 数字图像处理绪论 数字图像处理(DIP)的研究目标和处理对象: DIP的研究目标是获取信息,处理对象是

数字图像处理学习笔记:灰度变换

imadjust函数是MATLAB的一个工具箱函数,一般的语法调用格式为: g=imadjust(f,[low_in  high_in],[low_out  high_out],gamma) 把图像f 灰度变换到新图像g的过程中,f 中灰度值低于low_in的像素点在g中灰度值被赋值为low_out,同理,f中灰度值高于high_in的像素点变换到g时其灰度值也被赋值为high_out;而对于参数gamma,当gamma<1时,灰度图像靠近low_in的灰度值较低像素点灰度值变高,其灰度变化范围

MATLAB数字图像处理学习笔记

我们都知道一幅图片就相当于一个二维数组,可以用一个矩阵来表示,而MATLAB可以说就是为矩阵运算而生的,所以学习图像处理,学习MATLAB势在必行! 一. MATLAB基础知识 1. 读取图像 1 %imread ('filename') 2 f = imread ('lena,jpeg')%图片必须和工程在同一个目录下 3 f = imread ('E:\MATLAB\lena,jpeg')%加上路径进行读取图像操作 4 f = imread ('.\MATLAB\lena,jpeg')%读取

Nani_xiao的图像处理学习笔记:透视变换(二):X,Y方向校正原理

接着上一篇进行,上一篇为: Nani_xiao的图像处理学习笔记:透视变换(一) 这里采用一点透视投影 X 方向校正 图2 是透视投影的灭点原理图.在不考虑其他畸变的情况下,边ab 和边cd 平行于X 轴, 而边ac 和边bd 则和X 轴成一定的夹角.根据a .b .c .d 点的图像坐标,可以求出透视投影的灭点e 的坐标(mx , my)(在图像坐标系下). 然后根据透视缩小效应, 对其进行反运算, 进行X 方向的校正.在X 方向的校正中, 可以选择图像高度(0- H - 1)任意一条水平线的

C#数字图像处理算法学习笔记(二)--点运算与直方图

C#数字图像处理算法学习笔记(二)--点运算与直方图 在数字图像处理中,点运算是一种简单而重要的技术.点运算只是根据对象的像素的输入灰度值来决定像素的输出灰度值的图像处理运算.它有时也被称为对比度增强.对比度拉伸或灰度变换.点运算没有改变图像的空间运算,它是按照一定的方式改变了图像的灰度直方图. 灰度直方图是一种最简单且最有用的工具,它概括了一幅图像的灰度级内容. 灰度直方图的定义: 灰度直方图是灰度的函数,描述的是图像中的具有该灰度级的像素个数.如果用直角坐标系来表示,则它的横坐标是灰度级,纵

Git学习笔记(二)

本次学习的是 版本回退 基本命令: 查看提交历史      git log 版本回退            git reset 查看每一次的命令 git reflog 具体步骤: 添加一句话到readme.txt中,并提交到Git库中. . readme.txt在Git中目前有三个版本: 按提交时间先后顺序排列如下: 第一个:wrote a readme.txt 第二个:add distrubuted 第三个:add difficulties 如果版本过多的话,根本记不住,只能查看使用命令git

Knockout学习笔记(二)

这篇文章主要用于记录学习Working with observable arrays的测试和体会. Observable主要用于单一个体的修改订阅,当我们在处理一堆个体时,当UI需要重复显示一些样式相同的元素时,这些数据的绑定就需要依靠observable arrays. 特别需要注意的一点是,observable arrays关注的是数组中元素整体的变化(包括增加元素,删减元素,元素顺序的改变等等),而不是元素个体的变化(元素内部某些部分的改变). 我们可以在js文件中创建一个observab

Nani_xiao的图像处理学习笔记:透视变换(三):校正步骤

接着上两篇进行: Nani_xiao的图像处理学习笔记:透视变换(一) Nani_xiao的图像处理学习笔记:透视变换(二):X,Y方向校正原理 图像透视变换校正步骤为: 1.      选取控制点的坐标: 2.      如果控制点存在倾斜现象, 则进行Y方向和X 方向错切: 3.      计算灭点的坐标(mx ,my ): 4.      进行X 方向的校正, 并输出校正后的图像: 5.      进行Y方向的校正, 并输出校正后的图像. 这里先把步骤列出,以后再根据实际效果补图

Android-Universal-Image-Loader学习笔记(二)--LruDiscCache

在正式最近最久未使用缓存(LruDiscCache)之前,先介绍一个概念和重要的三个类: key:是DiscCacheAware接口中save方法里面的imageUri参数通过调用FileNameGenerator的generate(imageUri)所生成的字符串,key必须满足[a-z0-9_-]{1,64}:对应着Entry,Snapshot以及Editor的key字段.通过以如下方法来检测key的合法性 privatevoid validateKey(String key) { Matc