在上一篇文章中,我们讨论了一些常见的颜色模型,特别是RGB,HSV和YUV。颜色模型是一种抽象的数学模型,描述了颜色如何表示为一组数字。在这篇文章中,我们将看看如何将它们转换为灰度。灰度是从白色到黑色的一系列灰色阴影,用于单色显示或打印输出。灰度图像最常用于图像处理,因为较小的数据使开发人员能够在更短的时间内完成更复杂的操作。

1. 颜色到灰度转换
1.1 RGB到灰度
有许多常用的方法可以将RGB图像转换为灰度图像,例如平均法和加权法。

平均法
平均法将R,G和B的平均值作为灰度值。
灰度=(R + G + B)/ 3
从理论上讲,公式是100%正确的。但是在编写代码时,您可能会遇到uint8溢出错误 – R,G和B的总和大于255.为避免异常,应分别计算R,G和B。
灰度= R / 3 + G / 3 + B / 3
平均法很简单,但效果不如预期。原因是人眼对RGB的反应不同。眼睛对绿光最敏感,对红光不敏感,对蓝光最不敏感。因此,三种颜色在分布上应具有不同的权重。这使我们得到加权方法。
加权法
加权法,也称为光度法,根据其波长称重红色,绿色和蓝色。改进后的公式如下:
灰度 = 0.299R + 0.587G + 0.114B

1.2 YUV到灰度
YUV是一种用于模拟电视的彩色编码系统。YUV颜色模型比计算机图形硬件中使用的标准RGB模型更接近地表示人类对颜色的感知,并且尺寸效率更高。
RGB到YUV转换
Y = 0.299R + 0.587G + 0.114B
U’=(BY)* 0.565
V’=(RY)* 0.713
灰度值
将RGB转换为Y的公式与将RGB转换为灰度的公式相同。因此:
灰度 = Y
1.3 HSV到灰度
HSV(色调,饱和度,值)和HSL(色调,饱和度,亮度或光亮度)是笛卡尔RGB色彩空间的变换。

要将HSV转换为灰度,我们首先需要将HSV转换为RGB,然后将RGB三元组转换为灰度值。
HSV到RGB转换
当 0 ≤ H < 360, 0 ≤ S ≤ 1 和 0 ≤ V ≤ 1:
C = V × S
X = C ×(1 – |(H / 60°)mod 2 – 1 |)
m = V – C
(R,G,B)=((R ‘+ m)×255,(G ‘+ m)×255,(B ‘+ m)×255)
灰度值
灰度 = 0.299R + 0.587G + 0.114B
2. 二值化:灰度到黑/白转换
二值化将灰度图像转换为黑/白图像。该转换在检测斑点方面很有用,并进一步降低了计算复杂度。关键任务是找到合适的阈值。主要有两种方法:
- 局部阈值 – 逐个像素地计算阈值
- 全局阈值处理 – 为所有像素计算一次阈值
下图显示了二值化之前和之后的示例。

2.1 局部阈值法
利用局部阈值方法,在每个像素处计算阈值,其取决于一些局部统计,例如平均值,范围和像素邻域的方差。将图像分成几个子块,并分析每个块中灰度值的分布。

2.2 全局阈值方法
全局阈值处理方法利用图像直方图。图像直方图是一种统计图,在x轴上具有灰度值,在y轴上具有每个灰度的像素数。

图像直方图可用于自动确定用于将灰度图像转换为二值图像的阈值。基本思想是在前景像素值的峰值和背景像素值的峰值之间找到一个点。如果像素的强度等级小于阈值,则将像素设置为黑色(灰度= 0),否则将其设置为白色(灰度= 255)。阈值用作分界线。
要了解有关成像基础知识的更多信息,请阅读图像处理101教程系列中的第一篇:
图像处理101教程:什么是图像/span>
和第二篇文章:
图像处理101教程:颜色模型
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!