当前位置:C++技术网 > 资讯 > 程序员须知的三种类型的数字图像:二值图像、灰度图像和彩色图像

程序员须知的三种类型的数字图像:二值图像、灰度图像和彩色图像

更新时间:2015-11-11 14:15:47浏览次数:1+次

    数字图像,就是存储在计算机中的用来处理和显示的图像。数字图像根据色彩来区分,可以分为三种类型,分别是二值图像、灰度图像和彩色图像。
    我们生活在五彩缤纷的世界里,对于彩色图像是一般人最为直接的印象。我们所看到的所有画面,呈现到眼睛中,都是一副图像。然而这些图像是无法放入计算机中处理的。在早些年代,我们使用了电路来对现实的画面进行模拟,使用的都是连续的信号,这种连续的信号放在二进制计算机中是无法处理的。
    所以,要让计算机来处理,就需要将这些连续的信号间隔采样,得到一串的散开的数值,这个叫做离散值,如1,2,3...,在1和2之间就没有其他数值了。我们可以将整数当做是离散数值类型。小数则是连续的,因为小数可以无限小。
    离散数值对于二进制计算机来讲就是可以处理的,这样的图像就是数字图像。数字化就是要采样得到离散的数据表示。
    对于图像的表示,以像素来排列组合出需要的画面。而对于每一个像素来讲,根据所能表示的颜色种类,分成了三种数字图像。如下图所示:
  程序员须知的三种类型的数字图像:二值图像、灰度图像和彩色图像
    第一种就是二值图像。在opencv使用中,经常会提到二值图像,所以有必要解释一下。二值图像就是只有两种颜色的图像,即黑白两种颜色,没有其他任何颜色,非黑即白,非白即黑,而且黑白都是至纯的黑白。
    第二种就是灰度图像。灰度图像就是我们黑白电视机看到的画面。虽然叫做黑白电视机,但是呈现的画面不只是黑和白两种颜色哦。介于黑白之间的颜色就是不同程度的灰色,黑色、深灰色、灰色、浅灰色、白色。不同的程度就是灰度等级了。二值图像中,灰度等级就只有2级了,而一般的灰度,即我们常见的灰度图像,都是256级。0级为黑色,255级为白色。在灰度图片中,一个像素只有一个值,不同的值就代表不同的灰度等级,也就呈现不同程度的灰色。
    第三种就是彩色图像。彩色图像是用三基色的比例调制出来的。三个基色的比例不同,那么看到的颜色就不同。可以参考《色彩基础知识全面了解1:颜色形成原理分析》这一系列文章。
    而前面两种图像,像素的值只需要一个数字即可,而这个数字代表的颜色,则是在颜色表里定义的。像素中存储的值就是颜色表的一个索引。颜色表也叫作颜色查找表,也是我们听说的调色板。
    而表示颜色始终都是用彩色的标准来表示的,所以颜色表有三个列,分别是红绿蓝。一般叫这三个颜色为图像的三个通道。毕竟正常的图片都是彩色的,二值和灰度图像则是特定的需要采用的。所以是用彩色的图像表示来兼容二值图像和灰度图像。颜色表就是为二值图像、灰度图像和伪彩色图像。伪彩色图像就是只用了少量色彩的图像,虽然是彩色,但是有些颜色在颜色表中没有,就用相近的颜色表示了,所以看起来并不逼真。而真彩色则不用颜色表了,直接在像素中用三个字节来表示三个基色,进而来组合出需要的颜色,所以能够表示所有颜色,才叫做真彩色。
    对于图像色彩方面的,平时接触的少,确实有很多疑问和误区,或者对于一些概念始终搞不太明白,希望这些色彩图像方面的文章,可以为你带去很本身的解答。对我自己而言,现在才真正明白什么是调色板了,其实就是一张颜色表。也知道什么是抖动色,其实就是颜色表里没有表示的颜色,如果先图像中出现了,就只能使用颜色表中与目标颜色接近的颜色表示。颜色表颜色越多,显示效果就会更好点。颜色表的使用也是为了压缩图片的大小,毕竟只用一个值表示像素就可以知道颜色,与每一个像素都用三个值来表示颜色,相比起来就非常的节省文件大小了。但是对于真彩色,使用颜色表就没有什么意义了。因为不可能在颜色表中罗列出所有的颜色,罗列所有的颜色,颜色表那也是巨大的,最终的文件大小也是很大,所以就直接在像素中单个表示了。