数字图像处理的Matlab实现(3)—灰度变换与空间滤波
第3章 灰度变换与空间滤波(1)
3.1 简介
空间域指的是图像平面本身,这类方法是以对图像像素直接处理为基础的。本章主要讨论两种空间域处理方法:亮度(灰度)变换与空间滤波。后一种方法有时涉及到邻域处理或空间卷积。
本章讨论的空间域处理由下列表达式表示:
\]
其中,\(f(x,y)\)为输入图像,\(g(x,y)\)为输出图像, \(T\)是对图像\(f\)的算子,作用于点\((x,y)\)定义的邻域。此外,\(T\)还可以对一组图像进行处理,例如为了降低噪声而叠加\(K\)幅图像。
为了定义点\((x,y)\)的空间邻域,主要方法是利用一块中心位于\((x,y)\)的正方形或矩形区域。此区域的中心由起始点开始逐个像素移动,比如从左上角,在移动的同时包含不同的邻域。算子\(T\)作用于每个位置\((x,y)\),从而得到相应位置的输出图像\(g\)。只有中心点在\((x,y)\)处的邻域内的像素被用来计算\((x,y)\)处\(g\)的值。
3.2 灰度变换函数
变换函数\(T\)的最简单形式是邻域大小为1*1(单个像素)的情况。在此情况下,在\((x,y)\)处,\(g\)的值仅由\(f\)在这一点处的灰度决定,\(T\)也就成为亮度或灰度变换函数。当处理单色(也就是灰度)图像时,这两个术语是可以相互换用的。当处理彩色图像时,亮度用来表示在特定色彩空间里的彩色图像成分。
由于输出值仅取决于点的灰度值,而不是取决于点的邻域,因此灰度变换函数通常写成:$$s=T(r)$$其中,\(r\)表示图像\(f\)的灰度,\(s\)表示\(g\)的灰度。两者在图像中处于相同的坐标\((x,y)\)处。
3.2.1 imadjust和stretchlim函数
imadjust函数是针对灰度图像进行灰度变换的基本图像处理工具箱函数,一般的语法格式为:
g=imadjust(f,[low_in high_in],[low_out high_out],gamma)

如上图所示,此函数将\(f\)的灰度值映射到\(g\)中的新值,将low_in与high_in之间的值映射到low_out和high_out之间。low_in以下与high_in以上的值被截去。其实就是将 low_in以下的值映射为low_out;将high_in以上的值映射为high_out。输入图像应属于uint8、uint16或double类。输出图像应和输入图像属于同一类。对于函数imadjust来说,所有输入中除了图像\(f\)和gamma,不论\(f\)属于什么类,都将输入值限定在0和1之间。例如,如果\(f\)属于uint8类,imadjust函数将乘以255来决定应用中的实际值。利用空矩阵([])得到[low_in high_in]或[low_out high_out],将导致结果默认为[0 1]。如果high_out小于low_out,输出灰度将反转。
参数gamma指明了由\(f\)映射生成图像\(g\)时曲线的形状。如果gamma的值小于1,映射被加权至较高的输出值,如图3.2a。如果gamma的值大于1,映射加权至较低的输出值,如图3.2c。如果省略函数参量,gamma默认为1(线性映射)
案例3.1 使用imadjust函数
f=imread('Fig0203(a).tif');
g1=imadjust(f,[0 1],[1 0]);
g2=imadjust(f,[0.5 0.75],[0 1]);
g3=imadjust(f,[],[],2);
g4=imadjust(f,stretchlim(f),[]);
g5=imadjust(f,stretchlim(f),[1 0]);
subplot(231);imshow(f);xlabel('(a)');
subplot(232);imshow(g1);xlabel('(b)');
subplot(233);imshow(g2);xlabel('(c)');
subplot(234);imshow(g3);xlabel('(d)');
subplot(235);imshow(g4);xlabel('(e)');
subplot(236);imshow(g5);xlabel('(f)');

上图中,(a)是一幅数字乳房X射线图像f,显示出一处病灶;(b)是负片图像,可以通过下列命令得到:
g1=imadjust(f,[0 1],[1 0]);
获得照片负片图像的这一过程对于增强在一大片主要的黑色区域中嵌入白色及灰色细节是非常有用的,图(b)非常容易分析胸部的组织,图像的负片也可以使用工具箱函数imcomplement得到: g=imcomplement(f);图(c)是下列命令得到的结果:
g2=imadjust(f,[0.5 0.75],[0 1]);
此命令是将0.5到0.75之间的灰度扩展到[0,1]整个范围。这种类型的处理对于处理强调图像中感兴趣的灰度区非常有用;最后利用:
g3=imadjust(f,[],[],2);
通过压缩灰度图像的低端和扩展高端,得到类似于图(d)的结果;有时能够用imadjust函数自动地而不必关心上面讨论的低高参数的处理。stretchlim函数在这个方面非常有用,基本语法如下:
Low_high=stretchlim(f)
其中,Low_high是低和高均受限的两元素向量,可用于完成对比度拉伸。默认情况下,Low_high的值指定灰度图像f中所有像素值底部和顶部饱和度的1%。结果以向量[low_in high_in]的形式应用于imadjust函数:
g4=imadjust(f,stretchlim(f),[]);
图(e)显示了上述命令得到的结果,观察对比度的提升。与此类似,使用如下命令得到图(f):
g5=imadjust(f,stretchlim(f),[1 0]);
可以看到,增强了负片图像的对比度。
stretchlim函数的通用语法如下:
Low_high=stretchlim(f,tol)
其中,tol是两元素向量[low_frac high_frac],指定了图像低和高像素值饱和度的百分比。
如果tol是标量,那么low_fac=tol,并且high_frac=1-low_frac;饱和度等于低像素值和高像素值的百分比。如果在参数中忽略tol,那么饱和度水平为2%,tol的默认值为[0.01 0.99]。如果选择tol=0,那么Low_high=[min(f(
数字图像处理的Matlab实现(3)—灰度变换与空间滤波的更多相关文章
- 基于小波变换的数字图像处理(MATLAB源代码)
基于小波变换的数字图像处理(MATLAB源代码) clear all; close all; clc;M=256;%原图像长度N=64; %水印长度[filename1,pathname]=uiget ...
- 《数字图像处理(MATLAB)》冈萨雷斯
<数字图像处理(MATLAB)>冈萨雷斯 未完结! 参考:数字图像处理——https://blog.csdn.net/dujing2019/article/category/8820151 ...
- 数字图像处理的Matlab实现(4)—灰度变换与空间滤波
第3章 灰度变换与空间滤波(2) 3.3 直方图处理与函数绘图 基于从图像亮度直方图中提取的信息的亮度变换函数,在诸如增强.压缩.分割.描述等方面的图像处理中扮演着基础性的角色.本节的重点在于获取.绘 ...
- 数字图像处理的Matlab实现(1)—绪论
第1章 绪论 1.1 什么是数字图像处理 一幅图像可以定义为一个二维函数\(f(x,y)\),这里的\(x\)和\(y\)是空间坐标,而在任意坐标\((x,y)\)处的幅度\(f\)被称为这一坐标位置 ...
- 数字图像处理的Matlab实现(2)—MATLAB基础
第2章 MATLAB编程基础 2.1 M-文件 MATLAB中的M-文件可以是简单执行一系列MATLAB语句的源文件,也可以是接收自变量并产生一个或多个输出的函数. M-文件由文本编辑器创建,并以fi ...
- c语言数字图像处理(四):灰度变换
灰度变换 灰度变换函数 s = T(r) 其中r为输入图像在(x, y)点处的灰度值,s为输出图像在(x, y)点处的灰度值 灰度变换的作用 上图所示的两幅T(s)函数的图像曲线,第一幅图可以增强 ...
- 经典数字图像处理(matlab 实现)
Ivan Selesnick(Software) Sparsity / Total variation / Denoising Software - Michael Elad's Personal P ...
- 读书笔记之 数字图像处理的MATLAB实现(第2版)
- 数字图像处理(MATLAB版)学习笔记(2)——第2章 灰度变换与空间滤波
0.小叙闲言 1.本章整体结构 2.书中例子 例2.1 主要是使用函数imadjust,来熟悉一下灰度处理,体验一把 >> imread('myimage.jpg'); >> ...
随机推荐
- 关于MyBase 7.0 破解的方法
Mybase 是一个功能强劲且可随心所欲自定义格式及层次关系的通用资料管理软件, 可用于管理各种各样的信息,如一:各类文档.文件.资料.名片.事件.日记.项目.笔记.下载的精华.收集的各种资料等等,即 ...
- [报错]Could not get a resource from the pool
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool解决:开启 ...
- maven_常用命令
清理编译好的文件 mvn clean 编译文件(只是编译主目录文件) mvn compile 编译测试文件(也会编译主文件) mvn test 打包 mvn package 将项目发布到本地仓库 mv ...
- Python的命名空间及作用域
命名空间的分类 全局命名空间 是在程序从上到下被执行的过程中依次加载进内存的:放置了我们设置的所有变量名和函数名 局部命令空间 就是函数内部定义的名字:当调用函数的时候 才会产生这个名称空间 随着函数 ...
- C++ 二维数组作为形参传递使用实例
在线代码编辑器: http://codepad.org/ 1.*指针 void display(int *arr, const int row, const int col) { ; i < r ...
- JAVA核心技术I---JAVA基础知识(二进制文件读写和zip文件读写)
一:二进制文件读写 (一)写文件 –先创建文件,写入数据,关闭文件 –FileOutputStream, BufferedOutputStream,DataOutputStream –DataOutp ...
- vue-router路由
Vue Router 是 Vue.js 官方的路由管理器 自动全局安装: vue create 项目名称 手动配置: 1.安装 在app项目文件夹里面 npm i vue-router 2.在min. ...
- Elasticsearch入门之从零开始安装ik分词器
起因 需要在ES中使用聚合进行统计分析,但是聚合字段值为中文,ES的默认分词器对于中文支持非常不友好:会把完整的中文词语拆分为一系列独立的汉字进行聚合,显然这并不是我的初衷.我们来看个实例: POST ...
- Mongodb aggregation 基本操作示例
MongoDB二个主要的操作:一个是查询,另一个是统计.对于查询而言,主要是find()方法,再配合Filters组合多个查询条件. 对于统计而言,则主要是aggregate操作,比如 group.s ...
- Eclipse 项目导航字体设置 左侧树字体
在解压的文件下 E:\eclipse\plugins\org.eclipse.ui.themes_1.2.0.v20170517-0622\css\dark 找到 e4-dark_basestyle ...
基于小波变换的数字图像处理(MATLAB源代码) clear all; close all; clc;M=256;%原图像长度N=64; %水印长度[filename1,pathname]=uiget ...
<数字图像处理(MATLAB)>冈萨雷斯 未完结! 参考:数字图像处理——https://blog.csdn.net/dujing2019/article/category/8820151 ...
第3章 灰度变换与空间滤波(2) 3.3 直方图处理与函数绘图 基于从图像亮度直方图中提取的信息的亮度变换函数,在诸如增强.压缩.分割.描述等方面的图像处理中扮演着基础性的角色.本节的重点在于获取.绘 ...
第1章 绪论 1.1 什么是数字图像处理 一幅图像可以定义为一个二维函数\(f(x,y)\),这里的\(x\)和\(y\)是空间坐标,而在任意坐标\((x,y)\)处的幅度\(f\)被称为这一坐标位置 ...
第2章 MATLAB编程基础 2.1 M-文件 MATLAB中的M-文件可以是简单执行一系列MATLAB语句的源文件,也可以是接收自变量并产生一个或多个输出的函数. M-文件由文本编辑器创建,并以fi ...
灰度变换 灰度变换函数 s = T(r) 其中r为输入图像在(x, y)点处的灰度值,s为输出图像在(x, y)点处的灰度值 灰度变换的作用 上图所示的两幅T(s)函数的图像曲线,第一幅图可以增强 ...
Ivan Selesnick(Software) Sparsity / Total variation / Denoising Software - Michael Elad's Personal P ...
0.小叙闲言 1.本章整体结构 2.书中例子 例2.1 主要是使用函数imadjust,来熟悉一下灰度处理,体验一把 >> imread('myimage.jpg'); >> ...
Mybase 是一个功能强劲且可随心所欲自定义格式及层次关系的通用资料管理软件, 可用于管理各种各样的信息,如一:各类文档.文件.资料.名片.事件.日记.项目.笔记.下载的精华.收集的各种资料等等,即 ...
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool解决:开启 ...
清理编译好的文件 mvn clean 编译文件(只是编译主目录文件) mvn compile 编译测试文件(也会编译主文件) mvn test 打包 mvn package 将项目发布到本地仓库 mv ...
命名空间的分类 全局命名空间 是在程序从上到下被执行的过程中依次加载进内存的:放置了我们设置的所有变量名和函数名 局部命令空间 就是函数内部定义的名字:当调用函数的时候 才会产生这个名称空间 随着函数 ...
在线代码编辑器: http://codepad.org/ 1.*指针 void display(int *arr, const int row, const int col) { ; i < r ...
一:二进制文件读写 (一)写文件 –先创建文件,写入数据,关闭文件 –FileOutputStream, BufferedOutputStream,DataOutputStream –DataOutp ...
Vue Router 是 Vue.js 官方的路由管理器 自动全局安装: vue create 项目名称 手动配置: 1.安装 在app项目文件夹里面 npm i vue-router 2.在min. ...
起因 需要在ES中使用聚合进行统计分析,但是聚合字段值为中文,ES的默认分词器对于中文支持非常不友好:会把完整的中文词语拆分为一系列独立的汉字进行聚合,显然这并不是我的初衷.我们来看个实例: POST ...
MongoDB二个主要的操作:一个是查询,另一个是统计.对于查询而言,主要是find()方法,再配合Filters组合多个查询条件. 对于统计而言,则主要是aggregate操作,比如 group.s ...
在解压的文件下 E:\eclipse\plugins\org.eclipse.ui.themes_1.2.0.v20170517-0622\css\dark 找到 e4-dark_basestyle ...