图像编码
******
二进制
======

## 二进制 ##

众所周知，计算机内部采用二进制来表示和处理数据。这是因为很多理想的物理介质，状态都有二元特性。

* 磁性物质：有磁性，或无磁性；
* 电压：高电压，或低电压；
* 灯泡：亮，或不亮；

由于这样显著的二元特征，采用二进制数系统，也就不奇怪了。

在二进制中，只有两个数字 0 和 1 ，可以由其中的一种状态来表示。由于二进制中只有两个数字，因此采用逢二进一，可类比十进制中的逢十进一。

n位二进制最多可以表示2的n次方中不同信息。


位图
=======

位图又称为点阵图，是由像素组成。像素的不同排列和染色组成不同的图像。日常见到的大多数图像都是位图，格式包括BMP、GIF、TIF、JPG、PNG等。

像素
----
像素是构成图像的最小单位。

分辨率
-----
图像中像素的数量。

.. image:: teapot.png
   :scale: 50%

上图茶杯的图像横向方向有16个像素，纵向方向有12个像素。该图像的分辨率：16x12=192


像素编码
-------
像素编码是指用二进制来表示像素的颜色。


.. image:: color_code.png
   :scale: 50%

* 位深度：像素编码的二进制位数。位深度决定了图像所包含的最大颜色数。

.. note::

    像素为深度为N，则像素颜色最多可以有2^N种不同的可能性。


矢量图
=====

矢量图使用直线和曲线等属性来描述图形，是通过数学公式获得的。矢量图经常用来做为商标Logo图像使用。

.. note::

    位图优点是色彩丰富，缺点是位图放大之后会模糊失真。矢量图优点是无论放大、缩小或者旋转等都不会失真，缺点是难以表现色彩层次丰富的逼真图像效果。


.. code-block:: text

   问题1: 16色位图，每个像素需要几位二进制来表示？

   答案：4

.. code-block:: text

   问题2: 一个分辨率为16*16的16位位图需要占用多少字节？

   解答：分辨率16*16表示有256个像素点，每个像素点用16位编码，所以总共需要用256*16（位）进行编码。

   所需字节：256*16/8 = 512字节

.. code-block:: text

   问题3: 一个分辨率为16*16的16色位图需要占用多少字节？

   解答：分辨率16*16表示有256个像素点，16色位图说明每个像素点用4位编码，所以总共需要用256*4（位）进行编码。

   所需字节：256*4/8 = 128字节


课件下载：{download}`Image <image.pptx>`


