( ! ) Notice: Undefined index: mobile in /var/www/html/head.php on line 16
Call Stack
#TimeMemoryFunctionLocation
10.0001230208{main}( ).../view.php:0
20.0001230952include( '/var/www/html/head.php' ).../view.php:2
30.0009250312isMobile( ).../head.php:30
数学思维训练网 - 小学计算思维课程(8)-用二进制表示图像

小学计算思维课程(8)-用二进制表示图像

小学计算思维课程(8)-用二进制表示图像

本书共26课,如果您有好的建议,请联系作者:浙江省新昌县城西小学 唐明 147885198@qq.com


第八课:用二进制表示图像

计算机上有许许多多的图像,其中使用最多的是“位图”,位图由一个个很细小的点组成(就象我们在商店门口看到的LED广告屏)。比如下面这个奥运五环的图像,看起来细腻平滑,可是放大后……

你会注意到,图像其实是由一大堆小方块拼成的,它们被称之为“像素”,一张照片往往需要数以百万计的像素来构成。

在所有图像中,最简单的是黑白图像,每个像素只有两种值:黑或白,比如有一个字母c的放大图,你可以清晰的看到它是如何用像素来表示的,计算机保存图像时只要记录图像中哪些是黑点哪些是白点,它们也就是比特的组合。

下图给出了一种最简单的记录方式,即每个像素用一个比特来表示,白色像素用0表示,黑色像素用1表示,这样字母c,就可以用36比特表示。

在第六课我们学习了如何对字母进行编码,我们规定使用二进制00111就可以表示字母c,想一想这样的表示方法缺少了什么?

这节课我们用比特来记录下字母c的形状,表达的方法和第六课完全不同,需要用到的比特也大大增加。计算机才可以根据这个比特信息在屏幕上打印出字母c来。同样的方法可以用来储存更大更复杂的图像,比如一张写满字的纸,这时就需要很多比特来存储,它就需要更多的存储空间,计算机处理时用的时间也将更长,所以人们发明了一些办法来减少图像占用的体积,这个过程称为“压缩(compresssion)”。

下面介绍一种适合发送文字图像(比如传真机)的压缩方法,当我们观察上面的图像时,我们发现图像中有大块连续的白色像素和连续的黑色像素,所以只要记录下每个白色或黑色像素的长度,这种方法被称为“游程压缩”。

下图字母c的图像,第一行包含2个白色像素,接着4个黑色像素,可以被编码为2,4。第三行由于不是白色像素开头,所以在前面添加一个0以示区别。

由于游程的长度在计算机中也是用二进制表示的,比如用5个比特表示长度,那么最大可以表示有31个连续的白色或黑色像素。那么怎样表达一段长度是36的连续黑色像素呢?

问题:

1.有一幅宽度1000像素,长度2000像素的黑白图像,你认为游程最大可能是多少?

2.上面的例子只讨论了黑白图像,那么如何表示彩色图像呢?

接下来我们需要模拟计算机的工作来对压缩后的图像数据进行解码,下面的几张图画在解码后需要站在比较远的地方才能看出它的形状。

既然你已经学会如何用数字来表示图像,为什么不自己动手向好朋友展示一下自己编码的图片呢?先在第一张格子上画出你的图像,然后把编码写在另一张纸上交给你的好朋友,让他解码出图像并猜一猜你画的是什么。你可以用第二张格子来解码好朋友的图像。