灰度化:在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。一般常用的是加权平均法来获取每个像素点的灰度值。

二值化:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果

在图像处理中,用RGB三个分量(R:Red,G:Green,B:Blue),即红、绿、蓝三原色来表示真彩色,R分量,G分量,B分量的取值范围均为0~255,比如电脑屏幕上的一个红色的像素点的三个分量的值分别为:255,0,0。

像素点 
像素点是最小的图像单元,一张图片由好多的像素点构成,下图是一张美女的大白腿的图片。 
图像处理的灰度化和二值化

查看这张图片的信息,尺寸是800 * 800 的,宽度是800像素,高度是800像素。也就是说这张图片是由一个800 * 800的像素点矩阵构成的(不理解矩阵是什么意思的话,可以把矩阵理解为C语言中的二维数组),这个矩阵是800行,800列,像素是图像的最小单元,这张图片的宽度是800个像素点的长度,高度是800个像素点的长度,共有800 * 800 = 640000个像素点。 
图像处理的灰度化和二值化

因为一个像素点的颜色是由RGB三个值来表现的,所以一个像素点矩阵对应三个颜色向量矩阵,分别是R矩阵,G矩阵,B矩阵,它们也都是800 *800大小的矩阵。下面展示这张美女图片的一部分颜色矩阵数据:

这个是R矩阵中的一部分 
图像处理的灰度化和二值化

这个是G矩阵中的一部分 
图像处理的灰度化和二值化

这个是B矩阵中的一部分 
图像处理的灰度化和二值化

比如每个矩阵的第一行第一列的值分别为:R:240,G:223,B:204,所以这个像素点的颜色就是(240,223,204),三个矩阵的值不一定一 一对应,这样做只是为了便于读者理解。

图像的灰度化 
在理解了一张图片是由一个像素点矩阵构成之后,我们就知道我们对图像的处理就是对这个像素点矩阵的操作,想要改变某个像素点的颜色,我们只要在这个像素点矩阵中找到这个像素点的位置,比如第x行,第y列,所以这个像素点在这个像素点矩阵中的位置就可以表示成(x,y),因为一个像素点的颜色由红、绿、蓝三个颜色变量表示,所以我们通过给这三个变量赋值,来改变这个像素点的颜色,比如改成红色(255,0,0),可以表示为(x,y,(R=255,G=0,B=0))。 
那么什么叫图片的灰度化呢?其实很简单,就是让像素点矩阵中的每一个像素点都满足下面的关系:R=G=B(就是红色变量的值,绿色变量的值,和蓝色变量的值,这三个值相等,“=”的意思不是程序语言中的赋值,是数学中的相等),此时的这个值叫做灰度值。

灰度处理的方法: 
一般灰度处理经常使用两种方法来进行处理。 
方法1: 
灰度化后的R=(处理前的R + 处理前的G +处理前的B)/ 3 
灰度化后的G=(处理前的R + 处理前的G +处理前的B)/ 3 
灰度化后的B=(处理前的R + 处理前的G +处理前的B)/ 3

图像处理的灰度化和二值化

个人觉得第二种方法处理的效果比较好,第一种方法处理后的图片有点模糊。 
图像的二值化 
什么叫图像的二值化?二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色),也就是让整个图像呈现只有黑和白的效果。在灰度化的图像中灰度值的范围为0~255,在二值化后的图像中的灰度值范围是0或者255。 
黑色: 
二值化后的R = 0 
二值化后的G = 0 
二值化后的B = 0 
白色: 
二值化后的R = 255 
二值化后的G = 255 
二值化后的B = 255 
那么一个像素点在灰度化之后的灰度值怎么转化为0或者255呢?比如灰度值为100,那么在二值化后到底是0还是255?这就涉及到取一个阀值的问题。 
常用的二值化方法: 
方法1: 
取阀值为127(相当于0~255的中数,(0+255)/2=127),让灰度值小于等于127的变 为0(黑色),灰度值大于127的变为255(白色),这样做的好处是计算量小速度快,但是 缺点也是很明显的,因为这个阀值在不同的图片中均为127,但是不同的图片,他们的颜色 分布差别很大,所以用127做阀值,白菜萝卜一刀切,效果肯定是不好的。 
方法2: 
计算像素点矩阵中的所有像素点的灰度值的平均值avg 
(像素点1灰度值+…+像素点n灰度值)/ n = 像素点平均值avg 
然后让每一个像素点与avg一 一比较,小于等于avg的像素点就为0(黑色),大于avg的 像 素点为255(白色),这样做比方法1好一些。 
方法3: 
使用直方图方法(也叫双峰法)来寻找二值化阀值,直方图是图像的重要特质。直方图方法 认为图像由前景和背景组成,在灰度直方图上,前景和背景都形成高峰,在双峰之间的最低 谷处就是阀值所在。取到阀值之后再一 一比较就可以了。 
图像处理的灰度化和二值化

图像的色彩类别,灰度化,二值化相关推荐

  1. 图像灰度、二值化、膨胀和腐蚀(纯Java篇)

    在c.c++或者python环境中可以使用opencv非常容易实现图像灰度.二值化.膨胀和腐蚀等功能:但在java环境中,使用opencv来处理相对比较麻烦,简单的操作用opencv处理也相对过重,这 ...

  2. Java图像处理:灰度、二值化、浮雕、去色、反向、怀旧、放大镜等

    图像是由一个个像素点组合而成,图像处理本身实际上是遍历图像的像素点,对像素点的RGB值进行更改,以达到图像处理的目的. 接下来,我们主要介绍一下图片转化为二维像素点数组的方法以及部分图像处理如灰度.二 ...

  3. 示例程序009--阙值化(二值化,cvThreshold)

    涉及的函数: cvSplit 分割多通道数组成几个单通道数组或者从数组中提取一个通道 void cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1, ...

  4. java入门之 美图相机(原图、灰度、二值化、马赛克、融合、轮廓获取)

    编写美图相机时,我们首先需要了解图片再计算机中的存储形式,详情可见http://t.csdn.cn/MgOfO 目录 <1>创建显示图片的主界面 1.添加窗体,用数列添加按钮,设置窗体可视 ...

  5. Android--Bitmap灰度、二值化、反转颜色

    一.灰度图 /*** 将彩色图转换为灰度图** @param img 位图* @return 返回转换好的位图*/public static Bitmap convertGreyImg(Bitmap ...

  6. python_opencv(cv2)模块+灰度图二值化及降噪处理

    1.安装: 网上说的那些,pip install cv2, opnecv. 全!都!是!坑!爹!的! 正确的操作方式如下: pip install opencv-python 2.具体用法: 长期更新 ...

  7. 灰度图片二值化matlab

    rge图片灰度化之后,往往存在灰度值比较近的情况.根据自己的需求将灰度值调到两个极端值,也叫做阈值处理. 本文的阈值是自定义的,建立在已经读取到灰度图片灰度值的基础之上. 存在获取灰度图片最佳阈值的算 ...

  8. python批量修改图像像素,修改命名,二值化,划分数据集

    目录 修改命名 批量修改文件夹下面所有图片的像素 批量二值化 修改命名 是直接在源文件夹下面修改的 所以记得提前复制下文件再 处理. #-----------------------------批量重 ...

  9. matlab 二值化图像反色,图像处理——灰度化、二值化、反色、饱和度、对比度...

    RGB RGB色彩模式使用RGB模型为图像中每个像素的RGB分量分配一个0~255范围内的强度值.RGB图像仅仅使用三种颜色,R(red).G(green).B(blue),就能够使它们依照不同的比例 ...

  10. 【医学图像处理】 2 灰度直方图、图像二值化(阈值分割)

    文章目录 1 灰度直方图 1.1 直方图理解 1.2 直方图计算 1.3 直方图均衡化 1.3.1 全局均衡化 1.3.2 自适应(局部)均值化 2 图像二值化(阈值分割) 2.1 二值化理解 2.2 ...

最新文章

  1. 网关 0.0.0.0_久违的升级——全新米家智能多模网关
  2. js调试console.log使用总结图解
  3. 【烙铁使用规范】—— 烙铁使用、温度测量规范
  4. 轻松构建基于 Serverless 架构的弹性高可用音视频处理系统
  5. 提高项目执行力的六板斧
  6. 无法执行添加/移除操作,因为代码元素**是只读的
  7. PHP下用正则表达式分割preg_split、替换reg_replace、匹配preg_match_all等出现乱码的解决方法...
  8. python数据分析与可视化-Python数据分析与数据可视化
  9. mysql导入的sql文件导入到哪里了_mysql导入导出sql文件
  10. UITableView优化之按需加载
  11. 苹果iPhone 6Plus 拆机过程,拆机图完全拆机流程及注意事项
  12. win的反义词_小学英语常见的120对反义词大全,聪明的小升初家长快来收藏学习...
  13. 12,verilog移位操作
  14. 教你识别120多个车牌
  15. 我的Android进阶之旅------/storage/sdcard0, /sdcard, /mnt/sdcard ,/storage/emulated/legacy 的区别
  16. python珠穆朗玛峰问题_给珠穆朗玛峰“量身高”为什么这么难?
  17. P4V文件被独占checkout后的解锁操作
  18. Windows——重装系统时Windows 启动管理器进入系统和高级选项都数字签名错误解决方案
  19. W ndows用户权限设置,防御Mimikatz攻击的方法介绍
  20. 【软考】信息系统开发基础 - 信息系统规划(ISP)

热门文章

  1. mysql保存特殊表情_让 MySQL 支持 emoji 表情等特殊字符存储
  2. java 注解 静态变量_Spring中静态方法中使用@Resource注解的变量
  3. LT8920无线通讯程序
  4. c mysql连接池_在LINUX下用C/C++写了一个连接池(访问MYSQL)的类
  5. python unpack infinity_fit_转换出错:输入包含NaN、infinity或对dtype(“float64”)太大的值...
  6. python基本统计量_Python中简单统计量的计算
  7. jq中查找上级_必备实用技能:在EXCEL中制作下拉菜单
  8. get请求可以传数组吗_王源 袁冰妍 孟美岐 手套在大片中的时尚,普通人可以get吗...
  9. 别小看不起眼的电阻,里面大有学问!
  10. 来来来,送开发板了。