计算机图像编码入门篇(上)

前言

本文旨在为初学者提供有关计算机图像编码的基础知识,以帮助他们初步理解计算机中图像编码的概念。鉴于我个人知识的限制,如有不准确之处,欢迎指正并提供建议。

一、认识图片

我们先来看一张图片:


原图

如果我们把它用ps打开,再放大后你可以看到如下信息:


ps打开图

从上面的图中,我们可以看到图片好像是由很多个小方块组成的,每个方块都有一个自己的颜色,这个颜色是单一的。图片的宽是60个小方块,图片的高是50个小方块,整个图片有60*50=3000个小方块组成。

1、像素

图片的像素是指图像的最小单位,通常以像素(pixel)来表示。每个像素都是图像中的一个小方块,它们排列在一个二维网格中,以创建完整的图像。

  • 像素密度(通常以每英寸像素数表示,像素/英寸或PPI)也是一个重要概念,它表示在一英寸内有多少像素。
  • 像素大小:像素的大小通常以微米(microns)为单位,表示一个像素的实际物理尺寸。

2、分辨率

图片分辨率是指图像中包含的像素数量,通常以水平像素数和垂直像素数表示。分辨率决定了图像的清晰度和细节水平。

以下是有关图片分辨率的详细介绍:

  • 水平像素数和垂直像素数:分辨率通常由两个数字表示,分别代表图像的水平像素数和垂直像素数。例如,一张图像的分辨率可以是1920x1080,其中1920代表水平像素数,1080代表垂直像素数。

  • 总像素数:要计算图像的总像素数,只需将水平像素数与垂直像素数相乘。例如,一张1920x1080的图像包含了共2073600个像素。

  • 单位:通常,分辨率的单位是像素,但在某些情况下,也可以用其他单位,例如磅(常用于打印品质图像的分辨率),或PPI(每英寸像素数,用于描述图像在打印或显示设备上的输出质量)。

  • 影响图像质量:图像的分辨率直接影响其质量。较高分辨率的图像通常更清晰,包含更多细节,因此适用于大型打印或高分辨率显示屏。较低分辨率的图像可能会在这些情况下显得模糊或失真。

  • 文件大小:图像的分辨率也会影响其文件大小。通常情况下,较高分辨率的图像会占用更多的存储空间,因为它们包含更多的像素数据。这需要考虑,特别是在网络上传和下载图像或在设备上存储图像时。

3、像素的颜色

现在我们是不是只要把图片中的每个像素,用0和1的组合来表示,就可以在计算机中存储了呢,那我们要怎么来表示呢?

  • 我们用1bit来表示一个像素,那可以表示2种颜色,这种图像叫,黑白图像(也称为二值图像),如下图:

[图片上传失败...(image-e75147-1697684701714)]

  • 用2bit来表示一个像素,那可以表示4种颜色
  • 用3bit来表示一个像素,那可以表示8种颜色
  • 用4bit来表示一个像素,那可以表示16种颜色
  • 用5bit来表示一个像素,那可以表示32种颜色
  • 用6bit来表示一个像素,那可以表示64种颜色
  • 用8bit来表示一个像素,那可以表示256种颜色
  • 用24bit来表示一个像素,那可以表示1677万种颜色

[图片上传失败...(image-b3b041-1697684701714)]

现在我们已经知道了,可以怎么样来表示图片像素的颜色,那现实生活中这么多种颜色,又怎么和这些数字对应上呢?解决这个问题之前,我们先来了解一下什么叫“图片的位深度”。

4、图片的位深度

图片的位深度,也称为色深或像素深度,它是指每个像素在图像中用多少位来表示其颜色或灰度级别。位深度决定了图像能够表示多少不同的颜色或灰度级别,以及图像的颜色精度。

常见的位深度包括:

  • 1位位深度:每个像素只有两个可能的值,通常表示为0和1,用于二值图像,如黑白图像或透明/不透明图像。

  • 8位位深度:每个像素可以有256个不同的颜色或灰度级别,通常用于灰度图像或基本的彩色图像。

  • 24位位深度:通常用于真彩色图像,其中每个像素可以表示约1677万种不同的颜色。这是通过8位红色、8位绿色和8位蓝色通道组合而成的。

  • 32位位深度:在真彩色图像的基础上,还可以包括一个8位的alpha通道,用于表示像素的不透明度。这通常用于图像合成和处理,如PNG图像格式。

位深度的增加会增加图像的颜色精度,使其能够表示更多的颜色或灰度级别。然而,更高的位深度也会导致图像文件变得更大,需要更多的存储空间。选择位深度通常要根据具体应用和需求来权衡。

接下来,我们再来看颜色所对应的值都可以怎么来确定。

二、RGB色彩空间

RGB颜色空间是一种用于表示彩色图像的常见颜色模型。RGB代表红色(Red)、绿色(Green)和蓝色(Blue),这三种颜色通道是通过不同的亮度值的组合来创建各种颜色的。在RGB颜色空间中,每个像素由三个分量组成,分别代表了红色、绿色和蓝色通道的亮度值。通过调整这三个通道的亮度值,可以混合出各种颜色。

1、发现

  • 基本颜色:早期的颜色研究表明,人眼对三种颜色最敏感,这些颜色是红色、绿色和蓝色。这一发现奠定了三元色模型的基础。

  • James Clerk Maxwell:19世纪的苏格兰物理学家詹姆斯·克拉克·麦克斯韦对颜色混合进行了深入的研究。他通过将红色、绿色和蓝色光进行不同比例的混合,实验证明了颜色混合的原理,从而提出了三元色模型的概念。

2、常用数字表示方法

我们现在只要把R、G、B的亮度值,用数字的方式表示出来,如:

  • 用3bit表示一个像素:红色、绿色、蓝色各占1位,8种颜色,用于大部分早期的电脑显示器
  • 用8bit表示一个像素:红色占3位、绿色占3位、蓝色占2位,256种颜色,用于最早期的彩色Unix工作站
  • 用16bit表示一个像素:红色占5位、蓝色占5位、绿色占6位,就是:RGB556或RGB16
  • 用24bit表示一个像素,也被称为是:真彩色(True Color),就是:RGB24
  • 用32bit表示一个像素:基于24位,增加8个位的透明通道,就是RGB32

3、颜色的表示方法

计算机中表示RGB颜色的方法主要有两种:整数表示和浮点数表示。这些方法是为了以数字形式存储和处理颜色信息而设计的,通常使用固定位数的通道值来表示红色(R)、绿色(G)、蓝色(B)颜色分量。

  • 整数表示:这是最常见的RGB颜色表示方法之一,其中每个颜色通道的值表示为整数。通常,每个通道的值在0到255之间,因为8位二进制数可以表示256种不同的值。这被称为8位RGB表示。例如,(255, 0, 0)表示纯红色,(0, 255, 0)表示纯绿色,(0, 0, 255)表示纯蓝色。

对于R通道,取值0表示没有红光,取值255表示最大强度的红光。如果想表示更高的颜色精度,那只要把各通道的光的强度划分的更细就可以表示出来了。

  • 浮点数表示:在某些应用中,需要更高的颜色精度,因此使用浮点数来表示RGB颜色。通常,每个通道的值在0.0到1.0之间,表示相对的亮度。这种表示在图像处理和计算机图形中常用,因为它允许更精确的颜色操作。例如,(1.0, 0.0, 0.0)表示纯红色,(0.0, 1.0, 0.0)表示纯绿色,(0.0, 0.0, 1.0)表示纯蓝色。

这两种表示方法都是为了在计算机中处理颜色而设计的,可以根据特定应用的需求选择使用整数表示还是浮点数表示。整数表示通常更常见,因为它们占用较少的存储空间,而浮点数表示提供更高的精度,适用于需要更高颜色精度的任务。

4、常见颜色的RGB

常见的24bit颜色:

  • 红色:rgb(255, 0, 0),0xFF0000
  • 绿色:rgb(0, 255, 0),0x00FF00
  • 蓝色:rgb(0, 0, 255),0x0000FF
  • 黄色:rgb(255, 255, 0),0xFFFF00
  • 洋红色:rgb(255, 0, 255),0xFF00FF
  • 青色:rgb(0, 255, 255),0x00FFFF
  • 白色:rgb(255, 255, 255),0xFFFFFF
  • 黑色:rgb(0, 0, 0),0x000000
  • 更多颜色,可以参考颜色对照表,红绿蓝的比例不同,合成的颜色也就不同

从上面能看出,对于每个像素的值,在内存中是按RGB的顺序排放的,但有些地方有会出现BGR的顺序,使用过OpenCV的同学估计知道。

5、总结

尽管RGB颜色空间可以表示大多数可见颜色,但它并不是唯一的颜色模型。其他颜色模型,如CMYK、HSV、YUV等,也具有各自的优势,适用于不同的应用领域。选择颜色模型通常根据具体的需求和颜色表示方式来确定。

三、HSV色彩空间

HSV(Hue, Saturation, Value)是一种常见的颜色模型,用于描述和表示颜色。它强调颜色的感知属性,如色相(Hue)、饱和度(Saturation)、亮度(Value),并因此在图像处理、图形设计和艺术创作中得到广泛应用。

1、详细介绍:

  • 色相(Hue):色相表示颜色的基本属性,即颜色的类型或种类。它通常以角度度量,范围是0°到360°,将颜色圆形连续分布在整个色相环上。在色相环中,红色位于0°或360°,绿色位于120°,蓝色位于240°,依此类推。通过调整色相,可以选择不同类型的颜色。

  • 饱和度(Saturation):饱和度表示颜色的纯度或鲜艳度。它是从0%(无饱和度,对应于灰度)到100%(最大饱和度)的百分比。较高的饱和度表示颜色更鲜艳,而较低的饱和度会导致颜色变得更加灰淡。通过调整饱和度,可以使颜色更加鲜艳或更加淡化。

  • 亮度(Value):亮度表示颜色的明亮度或亮度级别。它通常以百分比表示,范围从0%(黑色)到100%(白色)。较高的亮度值表示颜色更明亮,而较低的亮度值表示颜色更暗。通过调整亮度,可以改变颜色的明亮程度。

2、表示方法

HSV与RGB两种颜色模式都可以用来表示同一种颜色,但是,计算机显示器和许多其他设备都是基于RGB颜色模式工作的,因此在最终存储和显示时,通常会将HSV颜色模式转换为RGB颜色模式。

HSV到RGB的转换过程涉及一些数学计算,根据H(色相)在色轮上的位置,S(饱和度)和V(明度)的值,可以计算出对应的R、G、B值。

这种转换通常都由图形处理软件和编程语言库自动进行,使用者通常不需要直接进行这种转换。

YUV,是一种颜色编码方法。常使用在各个影像处理组件中。 YUV在对照片或影片编码时,考虑到人类的感知能力,允许降低色度的带宽。这样就能为我们节省不少带宽,我们下次重点讨论一下。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容