首页 > 代码库 > 【数字图像处理之(三)】用图像增强谈灰度变换
【数字图像处理之(三)】用图像增强谈灰度变换
前面已经说了,数字图像处理是指通过计算机对数字图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。
其主要目的有三个方面:
- 提高图像的视感质量,如进行图像的亮度、彩色变换,增强、抑制某些成分,对图像进行几何变换等,以改善图像的质量。
- 图像数据的变换、编码和压缩,以便于图像的存储和传输。
- 提取图像中所包含的某些特征或特殊信息,这些被提取的特征或信息往往为计算机分析图像提供便利。提取特征或信息的过程是模式识别或计算机视觉的预处理。提取的特征可以包括很多方面,如频域特征、灰度或颜色特征、边界特征、区域特征、纹理特征、形状特征、拓扑特征和关系结构等。
图像增强(增强图像中的有用信息)
- 图像增强是指对图像的某些特征,如边缘、轮廓、对比度等进行强调或锐化,以便于显示、观察或进一步分析与处理
- 增强的首要目标是使处理后的图像比原始图像更适合于特定应用。
- 主要方法:
- 空间域:
- 点运算(灰度变换、直方图修正法)
- 区域运算(空间滤波)
- 频域:
- 高通滤波、 低通滤波、中值滤波;
- 空间域:
灰度变换(gray-scale transformation, GST)是一种空间域上的点运算处理方法,根据一定的关系,逐点改变原图像中每一个像素灰度值的方法(且只跟该点原来的灰度值有关),其表示形式如下:
- 对于输入图象f(x,y),输出图像g(x,y),T(in)为灰度变换函数,则g(x,y)=T( f(x,y) )。
其主要目的如下:
- 改善画质,使图像显示效果更加清晰
- 有选择性地突出图像中感兴趣的特征或抑制某些不需要的特征,使图像与视觉响应特征相匹配(图像增强)
其主要应用如下:
- 图像求反
- 对比度拉伸
- 图像灰度分割(二值化)
图像求反:
这种方法适用于增强嵌入图像暗色区域的白色或灰色细节。
src = http://www.mamicode.com/imread('Fig0303(a)(breast).tif');>
对比度拉伸:
(普通线性变换)
src = http://www.mamicode.com/imread('Fig0316(a)(moon).tif');>
(使用对数变换)
src = http://www.mamicode.com/imread('Fig0305(a)(spectrum).tif');>
图像灰度分割(二值化):
在图像处理领域,二值图像运算量小,并且能够体现图像的关键特征,因此被广泛使用。
src = http://www.mamicode.com/imread('Fig0409(a)(bld).tif');>
- MATLAB函数小结:
imadjust()
imadjust在数字图像处理中用于进行图像的灰度变换(调节灰度图像的亮度或彩色图像的颜色矩阵),该函数先将图像映射到[0 1],例如uint8类型的图像会先乘以255来决定实际应用中的值。调用格式:J = imadjust(I)将灰度图像I 中的亮度值映射到 J 中的新值并使 1% 的数据是在低高强度和饱和,这增加了输出图像 J 的对比度值。此用法相当imadjust(I,stretchlim(I)) J = imadjust(I,[low_in; high_in],[low_out; high_out])将图像I中的亮度值映射到J中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。low_in 以下与 high_in 以上的值被剪切掉了,也就是说,low_in 以下的值映射到 low_out,high_in 以上的值映射到high_out。它们都可以使用空的矩阵[],默认值是[0 1]。J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma)将图像 I 中的亮度值映射到 J 中的新值,其中 gamma指定描述值I和值J关系的曲线形状。如果gamma小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数值(灰暗)输出,如果省略此参数,默认为(线性映射)。newmap = imadjust(map,[low_in; high_in],[low_out; high_out],gamma)调整索引色图像的调色板map。如果low_in, high_in, low_out, high_out 和 gamma 都是标量,那么对 r,g,b 分量同时都做此映射。对于每个颜色分量都有唯一的映射,当 low_in 和 high_in 同时为1*3向量或者 low_out 和 high_out 同时为1*3向量或者 gamma 为1*3向量时。调整后的颜色矩阵 newmap和 map 有相同的大小。 RGB2 = imadjust(RGB1,...)对 RGB 图像RGB1 的红、绿、蓝调色板分别进行调整。随着颜色矩阵的调整,每一个调色板都有唯一的映射值。
stretchlim()
LOW_HIGH = stretchlim(src, tol)该函数找到对比度扩展图像的对照,可用于imadjust(),tol = [LOW_FRACT HIGH_FRACT] 指定图像低像素值和高像素值饱和度的百分比如果tol是一个标量,tol = LOW_FRACT、HIGH_FRACT = 1 - LOW_FRACT,饱和度等于低像素值和高像素值的百分比。如果在参数中忽略toll,那么饱和度水平为2%,tol的默认值为[0.01 0.99]。如果选择tol = 0, LOW_HIGH = [min(I(:)); max(I(:))].
mat2gray()
调用格式:I = mat2gray(A, [amin amax])将图像矩阵A中介于amin和amax的数据归一化处理, 其余小于amin的元素都变为0, 大于amax的元素都变为1。I = (A-amin)/(amax-amin)I = mat2gray(A)将图像矩阵A归一化为图像矩阵I, 归一化后矩阵中每个元素的值都在0到1范围内(包括0和1)。I = (A-amin)/(amax-amin)im2uint8()
函数功能: 把图像数据类型转换为无符号八位整型。如果输入图像是无符号八位整型的,返回的图像和源图像相同。如果源图像不是无符号八位整型的,该函数将返回和源图像相同但数据类型为uint8的图像(必要时对图像进行调整)。调用格式:I = im2uint8(src)把灰度图像src的数据类型转换成无符号八位整型的后, 返回。(但src并不发生改变)RGB2 = im2uint8(RGB1)把真彩色图像的数据类型转换成无符号八位整型的, 并返回。注意这里并不是将真彩色图像转换成为黑白图像, 这里仅仅改变了图像数据的类型。I = im2uint8(BW)把二值图像BW的数据格式转换成uint8格式的, 由于二值图像的图像数据仅仅取0和1, 所以这里的转换效果仅仅是把1映射成255。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。