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

图像处理的灰度化和二值化from http blog sina com cn s blog 13c639754010 html 在图像处理中 用 RGB 三个分量 R Red G Green B Blue 即红 绿 蓝三原色来表示真彩色 R 分量 G 分量 B 分量的取值范围均为 0 255 比如电脑屏幕上的一个红色的像素点的三个分量的值分别为 255 0 0 nbsp 像素点 nbsp nbsp nbsp 像素点是最小的图像单元 一张

from:http://blog.sina.com.cn/s/blog_13c6397540102wqtt.html

在图像处理中,用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 = 个像素点。

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

因为一个像素点的颜色是由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

 

   美女图片经过方法1进行灰度化后的效果如下:

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

 

        方法2:

           灰度化后的R =  处理前的R * 0.3+ 处理前的G * 0.59 +处理前的B * 0.11

           灰度化后的G =  处理前的R * 0.3+ 处理前的G * 0.59 +处理前的B * 0.11

           灰度化后的B =  处理前的R * 0.3+ 处理前的G * 0.59 +处理前的B * 0.11

美女图片经过方法2进行灰度化后的效果如下:图像处理的灰度化和二值化

个人觉得第二种方法处理的效果比较好,第一种方法处理后的图片有点模糊。

图像的二值化

     什么叫图像的二值化?二值化就是让图像的像素点矩阵中的每个像素点的灰度值为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:

          使用直方图方法(也叫双峰法)来寻找二值化阀值,直方图是图像的重要特质。直方图方法认为图像由前景和背景组成,在灰度直方图上,前景和背景都形成高峰,在双峰之间的最低谷处就是阀值所在。取到阀值之后再一 一比较就可以了。

下面给出一张美女图片二值化后的效果图:(漂亮的大白腿依稀可见。)

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

      

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228119.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午7:46
下一篇 2026年3月16日 下午7:47


相关推荐

  • 如何成为大数据架构师_业务架构师和数据架构师

    如何成为大数据架构师_业务架构师和数据架构师要想成为架构师这几点你必须关注!架构不是一个职业而是一种能力,每一种架构师只不过是在不同的领域里面使用不同的技术,没有什么可对比,就好比如你问一个篮球明星和一个足球明星有什么区别一样!01架构师需要考虑四个问题1.确定系统干什么不干什么,也就是说系统的边界在哪里?2.确定架构内部的模块与模块之间的关系,以及模块与外部之间的关系是什么?3.架构确定以后,有能力去指导…

    2025年5月28日
    9
  • 参考文献使用交叉引用的注意事项(实用篇)

    参考文献使用交叉引用的注意事项(实用篇)1 将论文中所有的参考文献按照自动编号的形式在论文的参考文献章节中排好序 不要手动标号 2 在需要引用的地方点击 word 中的 引用 交叉引用

    2026年3月18日
    2
  • 将两个Bean中相同属性名的值进行注入

    将两个Bean中相同属性名的值进行注入有时候是不能将模型类直接传出去 就有了各种 Vo Dto Bo 这些实体中大部分字段都与 domian 相同 有些甚至一模一样 各种 setget 去转换数据十分的繁琐 就写了一个反射工具类 支持单个转换和批量转换 importorg slf4j Logger importorg slf4j LoggerFactor importorg springframew

    2026年3月16日
    1
  • c语言位运算有什么作用

    c语言位运算有什么作用位运算符位运算符作用于位 并逐位执行操作 amp 和 的真值表如下所示 pqp amp qp qp q00000001

    2026年1月19日
    2
  • linux清理缓存cache_udp缓冲区满了,数据是否会丢失

    linux清理缓存cache_udp缓冲区满了,数据是否会丢失linux 自定义模块来缓存skb的意义

    2022年4月20日
    319
  • Harbor安装

    Harbor安装Harbor 安装 Harbor 是一个开源的镜像仓库 harbor 官网环境 软件 版本 下载地址 备注 系统 Centos 7 4 docker 18 09 0 3 传送门 docker componse 1 24 1 传送门 harbor v1 8 2 rc1 传送门 无 安装环境如果没有安装 docker 就需要先安装 docke

    2026年3月16日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号