多媒体开发是软件开发中非常重要的一个大方向。我们日常生活中看的电影电视、听的音乐广播、户外广告、安防监控摄像头、视频直播、视频会议等等,其核心都是多媒体系统。所以,要参与这些系统的开发,就必须熟悉多媒体开发技术,而数字图像和视频,又是多媒体最基础的部分,作为开发人员,必须了解这些基础知识,才能才具体的开发中游刃有余。本文主要就是讲解一下这些图像和视频的基础知识,帮助初学者理解相关项目和代码的里面的专业知识。
数字图像的概念,RGB 的概念和实际操作
什么是数字图像呢?真实的图像是连续的,但是计算机是数字化的,只能描述离散的行为,所以数字图像其实就是一个一个离散的像素点,如下图所示,用编程语言来描述,就是一个二维数组,width 和 height 是图像的两个属性,表示其宽度和高度,所以这个数组就是从 image[0][0] 到 image[width-1][height-1]。
数组每个元素表示一个像素,我们说的 200 万像素,就是大约 200 万个点(1920x1080,就是 width 1920、height 1080,大约是 200w 左右),1000 万像素就是 1000 万个点,显然,像素点越多,图像越精细。
那么每个像素点如何描述呢?小时候有那种混色实验,就是将不同的食用色素,红色绿色蓝色的,混合,可以组成任何颜色。物理学家告诉我们,所有颜色都可以分解成红色+绿色+蓝色,就是我们说的 RGB (Red,Green,Blue)。所以计算机描述一个像素点一般就用三个字节,一个 R、一个 G、一个 B,通过调整 RGB 的值可以组成任意颜色。
为了直观了解 RGB 的概念,可以打开 Windows 自带的画图软件(mspaint),打开其“编辑颜色”界面,选择调色板的颜色,可以看到 RGB 值,改变 RGB 值,可以看到颜色的变化。
最后我们再自己造一个数字图像试试,由于 BMP 图像有文件头,还有颠倒等问题。为了简单,我们不用 BMP,直接用 Python 操作数组,直接显示,下面演示了一个给每个像素点赋值,然后显示图像的过程,有兴趣的可以试试,对照 mspaint 的调色板的 RGB 值,可以看到是一样的。
网友评论