介绍图像,当然要介绍如何访问图像的像素了~~
1、像素在内存中的存储方式
我们知道,图像是由像素组成。对于一幅图片,我们看到的是场景、颜色等,但是计算机看到的是一个大矩阵,矩阵包含的数据成千上万。那么,图像中的像素在计算机内存中是如何存储的呢?
对于一幅灰度图像,即黑白图片(每个像素都有一个采样颜色,为单通道图像),每个像素值 Mat(i,j) 就是一个灰度值。如下图所示。灰度值一般范围为 0~255,白色为 255 ,黑色为0。
但是彩色图像每个像素是有分量的。什么意思呢?以 RGB 图像为例,图像具有三通道,即每个像素都是由色彩分量 R、G、B组成,也就是说,每个像素都是由三个值组成的,但是最后反映到像素上,却是一个值。需要注意的是,第一个通道是 B 蓝色分量,第三个通道是 R 分量
通常情况下,uchar 类型的三通道图像,RGB各有256级亮度,用数字表示为从0、1、2...直到255。按照计算,256级的RGB色彩总共能组合出约1678万种色彩,即256×256×256=16777216。通常也被简称为1600万色或千万色。也称为24位色(2的24次方)。
2、颜色空间缩减
我们知道,如果是 uchar 类型的三通道图像,存储像素颜色就有255 * 255 *255 = 1600万 多个,这大大增加了计算的复杂度,对算法性能的影响非常大。因此我们可以采用颜色空间缩减。具体做法就是:将颜色空间值除以某个值,来获得较少的颜色数。举个例子,0~10,我取0,10 ~19我取10,,依次类推吧。如果这样的话,就将颜色的取