技术与应用*********************
78中国信息技术教育屏幕的诞生:
计算机图像的矩阵表示与变换于方军 彭春锋 山东省淄博市博山区山头中心学校
模拟量和数字量是信息技术实验的基本概念,现在的高像素的手机都在宣传“视网膜屏幕”的概念,即由于像素密度足够大,对于25cm距离之外通过肉眼观察,区分不出一幅彩连续的图画和一个由不连续的像素点构成的计算机图像。信息技术实验教学,就是在信息技术学科范式变化的背景下,透过现象、应用来看到历史和本质。在这一点上,软硬件结合显得特别必要。因此,本实验先让学生看到图片像素背后的数字,然后通过开源硬件micro:bit上只有5×5像素的区域,将实验结果输出到一台更原始的计算机上,实现原理层面上的教学。
对于计算机来说,图像是由一个个像素点组成的,图像可以看作是二维的像素网格,每一个像素的值都代表这一点图像亮暗、颜等信息。计算机读取图像,读取的是一组数据,图像处理是对这组数据进行的复杂的数学运算,显示图像也是用这样一组数据控制显示设
备的明暗变化。实验过程中可以利
用开源库OpenCV,先读取图像灰
度值,理解图像矩阵的概念,并利用
矩阵变换将灰度矩阵转化为控制
micro:bit屏幕的控制信号并显示
出来,控制micro:bit显示屏并显示
出来,其中涉及数学、信息技术和物
理的知识,学生可以更直观地感受
计算机处理图像信息的过程。
●用矩阵的观念看计算机上
的图片:读取图片的像素值
OpenCV是一个开源的跨平
台计算机视觉和机器学习软件库,
提供了完善的Python接口,非常便
于调用。作为一个基本的计算机视
觉、图像处理和模式识别的开源项
目,OpenCV可以直接应用于很多
领域。
首先,用Jupyter
Notebook打
信息技术实验
图1 读取并显示图片
技术与应用*********************
开源文件,Jupyter Notebook是一个在浏览器中使用的交互式的编译环境,可以方便学生理解和调试程序,Anaconda安装成功后,默认会添加Jupyter Notebook,图1是用Jupyter Notebook打开源程序,分布执行后,读取并显示黑底白字图片。
计算机的诞生可以把图1中图像看作一个25行、25列的像素点的组合,这个就是矩阵,只读取它的灰度信息。对于灰度图像来说,每一个像素点的值,都代表该点的亮暗,如0代表黑,255代表白,0~255中间值代表亮度不同的灰度,通过研究图片的像素值可以帮助学生深入理解计算机中图片的构成及其显示的原理。如图2所示,通过px=img[x,y],依次读取图1中黑底白字图片的像素值,会发现中间白字部分像素值较大,其余部分像素值几乎为0。
●改变矩阵的元素数值:观察图像中像素点的变化
1.读取改变某点像素值
笔者用px=img[3,3]读取图片中横坐标和纵坐标都为3的像素点的像素值,因为该点为黑所以读取值为0;通过img[3,3]=255改变这个点的像素值,再显示图片时,会发现图片左上角[3,3]位置出现了一个白点(如图3)。另外,还可以在0~255之间改变这个值,观察该点的亮度变化。
2.读取改变某区域像素值
下面,
通过改变像素值的方
图2 读取图片的像素值
图3 读取改变点的像素值
图4 读取改变区域的像素值
法,给图片加个边框,如图4所示,
img[3,3:21]=255代表第3行,其中第
3列到21列的像素值改为255,也就
是变成白。其他三条白边的设
置相同。另外,还可以尝试改变其他
像素点的值,观察检测结果。
●跨屏显示:图像矩阵的
变换
在现在这样一个动辄高清
的时代,实验当中选用的25×25像
素的图片实在只能看作一张很小
的图片,但是跨系统显示图片在
micro:bit上显示时,需要将其转换
为5×5的图片,这就需要对图像矩
阵进行缩放变换,有时还需要改变
矩阵的数值范围,这样自动地对应
了计算机图形学当中的“位”和对
比度的概念。
mPython0.5.0是在BBC官方
原版PythonEditor基础上拓展开
发的应用软件,可以进行可视化代
码编程,有hex、Python、blockly
三种代码读写等功能,mPython可
以非常方便地控制micro:bit硬件。
首先通过下面代码了解其显示原
理,micro:bit有个5×5的LED点阵,
能显示25个像素点。
79
FEB. 2021 NO.03
技术与应用*********************
80
中国信息技术教育
图5 把图像缩小为5X5像素
图6 像素值转换为0-9
图7 mPython运行效果如用display.show(Imge("000
00:00000:99999:00000:00000"))显示第3行的5个LED亮度设置为9,其余的LED亮度为0,模拟显示一条水平亮线,这个值要求必须是介于0和9之间的整数。
1.改变图像矩阵的大小
通过图5所示代码,把25×25大小的图片,转换为5×5的图片,O p e nCV中的r e s i z e完成图片尺寸转换,在这里笔者通过fx=0.2,fy=0.2把图像尺寸缩小为原来的0.2。
2.改变图像矩阵的位数
因为micro:bit的LED亮度等级是0~9,图片像素值是0~255,所以需要把图片像素值0~255等比例转换为micro:bit要求的0~9,通过图6所示的代码可以实现。
3.在micro:bit上显示缩小后的图片
把转换好的像素值按行录入到mPython0.5.0的显示语句中,就能得到如图7所示的实物显示效果和仿真效果。
这里面模拟的是早期计算机中的基于单LED的黑边点阵显
示器,从计算机的发展史来看,点阵的密度越来越高,彩也越来越丰富,这是一个自然的趋势。例如,掌控板硬件的显示屏是128*64的OLED屏幕,代表着横向能显示128个像素,纵向能显示64个像素,可以表现黑白显示器中像素不断提升的过程。此外,换用RGB发光二极管,通过调整不同组分光的亮
度,又能显示彩,就像传统的磁
场示波器是一个很好的表现电视
机原理的教具一样。在信息技术实
验的开发过程中,除了求新求变之
外,更要关注学科发展的历史和内
在稳定的知识规律,如本实验使用
的编辑器和库都是最新的,但揭示
的原理却是相对稳定的知识。“工
具用最新的,原理讲最老的”可能
是信息技术在不断寻学科之魂
的过程中呈现给我们的一个有趣的
发展规律。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论