【笔记】灰度变换

1、灰度化
  这里讨论的是:RGB空间图像

  定义于RGB空间的彩色图,其每个像素点的色彩由R、G、B三个分量共同决定。每个分量在内存所占的位数共同决定了图像深度,即每个像素点所占的字节数。以常见的24深度彩色RGB图来说,其三个分量各占1个字节,这样每个分量可以取值为0~255,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。对这样一幅彩色图来说,其对应的灰度图则是只有8位的图像深度(可认为它是RGB三个分量相等),这也说明了灰度图图像处理所需的计算量确实要少。不过需要注意的是,虽然丢失了一些颜色等级,但是从整幅图像的整体和局部的色彩以及亮度等级分布特征来看,灰度图描述与彩色图的描述是一致的。
对于RGB图像进行灰度化,通俗点说就是对图像的RGB三个分量进行加权平均得到最终的灰度值。最常见的加权方法如下:

1)Gray=B;Gray=G;Gray=R

2)Gray=max(B+G+R)

3)Gray=(B+G+R)/3

4)Gray= 0.072169B+ 0.715160G+ 0.212671R

5)Gray= 0.11B+ 0.59G+ 0.3R
这三种方法中,第一种为分量法,即用RGB三个分量的某一个分量作为该点的灰度值;第二种方法为最大值法,将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。第三种方法将彩色图像中的三分量亮度求平均得到一个灰度图;后两种都是属于加权平均法,其中第四种是OpenCV开放库所采用的灰度权值,第五种为从人体生理学角度所提出的一种权值(人眼对绿色的敏感最高,对蓝色敏感最低)

  

2、 灰度直方图

   灰度直方图是对图像的灰度信息进行统计的工具,纵轴代表灰度,纵轴代表概率。通常,直方图操作可以用于图像的增强、图像压缩、图像分割当中。

  Opencv实现:http://blog.csdn.net/morewindows/article/details/8364656

  此外,灰度变换有三种分类:

  线性变换:针对原图灰度级区间较小的情况,通过线性变化进行拉伸扩展;

  对数变换:指数变换的作用是扩展图像的高灰度级、压缩低灰度级。虽然幂次变换也有这个功能,但是图像经过指数变换后对比度更高,高灰度级也被扩展到了更宽的范围。

  与对数变换相同,幂次变换将部分灰度区域映射到更宽的区域中。当r=1时,幂次变换转变为线性变换。

(1)  当r<0时,变换函数曲线在正比函数上方。此时扩展低灰度级,压缩高灰度级,使图像变亮。这一点与对数变换十分相似。

(2)  当r>0时,变换函数曲线在正比函数下方。此时扩展高灰度级,压缩低灰度级,使图像变暗。

  

3、直方图均衡化

  直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。对于对比度不强的图像,通过均衡化操作,可以让图像灰度值的直方图均衡分布,增强图像的对比度。

  Opencv实现:http://blog.csdn.net/morewindows/article/details/8364690

4、空间滤波

  一种采用滤波处理的影像增强方法。其理论基础是空间卷积。目的是改善影像质量,包括去除高频噪声与干扰,及影像边缘增强、线性增强以及去模糊等。分为低通滤波(平滑化)、高通滤波锐化)和带通滤波。处理方法有计算机处理(数字滤波)和光学信息处理两种。

  通常选定一个领域(滤波模板),将领域各像素点与滤波系数相乘之和为滤波结果。

  空域滤波技术根据功能主要分为平滑滤波与锐化滤波。
  平滑滤波能减弱或消除图像中的高频率分量而不影响低频分量,高频分量对应图像中的区域边缘等灰度值具有较大变化的部分,平滑滤波可将这些分量滤去减少局部灰度起伏,使图像变得比较平滑。也可用于消除噪声,或在提取较大目标前去除小的细节或将目标的小间断连接起来。
  在平滑滤波中,均值(线性)滤波可能带来轮廓模糊的副作用,而中值滤波(非线性)滤波去噪效果优秀,相较均值滤波其模糊程度更低,尤其是针对脉冲噪声的去噪,但有可能带来图像性质的改变
锐化滤波正好相反,锐化滤波常用于增强被模糊的细节或目标的边缘,强化图像的细节。

 
时间: 2024-12-17 01:07:37

【笔记】灰度变换的相关文章

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

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的灰度值较低像素点灰度值变高,其灰度变化范围

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

综述 对于图像的处理有两种思路,一种是对图像本身的直接处理,即空间域处理:另一种是在频率域进行处理.关于空域和频域,可以参考<傅里叶变换--另一种世界观>.在空间域的处理相对简单,因此首先介绍的是空域处理法.空域中有两种重要处理方法:灰度变换(或亮度变换)和空间滤波(或邻域处理.空间卷积). 空间域处理:灰度变换和空间滤波 g(x,y)=T[ f(x,y) ] 空域处理的思路可以由上式表达.f 即是原图,T 是在点(x,y)指定邻域上的图像处理算子,g 是输出图像.当邻域为1*1大小时,T 为

数字图像处理(MATLAB版)学习笔记(2)——第2章 灰度变换与空间滤波

0.小叙闲言 1.本章整体结构 2.书中例子 例2.1 主要是使用函数imadjust,来熟悉一下灰度处理,体验一把 >> imread('myimage.jpg'); >> f=imread('myimage.jpg'); >> g1 = imadjust(f, [0 1], [1 0]); >> imshow(g1); >> imshow(f); >> g2 = imadjust(f, [0.5 0.75], [0 1]); &g

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

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

Opencv学习笔记(六)SURF学习笔记

原创文章,转载请注明出处:http://blog.csdn.net/crzy_sparrow/article/details/7392345 本人挺菜的,肯定有非常多错误纰漏之处 ,希望大家不吝指正. 看了harris角点检測之后,開始研究SURF角点检測,发现挺复杂的,一时也仅仅了解了大概,把了解的东西总结下,以便下次深入学习. SURF角点检測算法是对SIFT的一种改进,主要体如今速度上,效率更高.它和SIFT的主要差别是图像多尺度空间的构建方法不同. 在计算视觉领域,尺度空间被象征性的表述

【安全牛学习笔记】

弱点扫描 ╋━━━━━━━━━━━━━━━━━━━━╋ ┃发现弱点                                ┃ ┃发现漏洞                                ┃ ┃  基于端口五福扫描结果版本信息(速度慢)┃ ┃  搜索已公开的漏洞数据库(数量大)      ┃ ┃  使用弱点扫描器实现漏洞管理            ┃ ╋━━━━━━━━━━━━━━━━━━━━╋ [email protected]:~# searchsploit Usage:

51CTO持续更新《通哥的运维笔记》

<通哥的运维笔记>将持续在51CTO网站更新,希望大家多多关注.互相学习,后期,我将会退出<通哥的运维笔记>系列视频教程,希望带给大家最大的收获,帮助大家更好的学习.进步.<通哥的运维笔记>主要从linux系统管理.虚拟化.cloudstack云平台以及网络管理之CCNA.CCNP.CCIE,等等方面深入讲解.

WPF笔记整理 - Bitmap和BitmapImage

项目中有图片处理的逻辑,因此要用到Bitmap.而WPF加载的一般都是BitmapImage.这里就需要将BitmapImage转成Bitmap 1. 图片的路径要用这样的,假设图片在project下的Images目录,文件名XXImage.png. pack://application:,,,/xxx;component/Images/XXImage.png 2. 代码: Bitmap bmp = null; var image = new BitmapImage(new Uri(this.X

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中