习题改编之计算图像存储容量
说在前面
命题是一线教师的基本任务,也是工作难点。创作一道科学性和原创性俱佳的好题是可遇不可求的事情。更常见的做法是博采众长,对原有题目做一定程度的改编。那么,如何改编题目呢?
笔者尝试通过一些案例,把自己改编题目的思路和方法与大家分享。若有不当之处,欢迎各位老师批评指正。

原题展示:
一幅未经压缩的1025*256像素的BMP图像,每个像素的颜色均不同,其存储容量至少约为( )
A.768KB
B. 512KB
C. 576KB
D. 609KB
答案:
D
解析:此题难点在于求位深度。因为每个像素的颜色均不同,故颜色总量为1025*256<2^19,故位深度为19。
存储容量为1025*256*19/8/1024=609KB。
改编思路:
原题是一道经典的计算图像存储容量的题目。教材中给出了计算BMP图像存储容量的公式:存储容量=总像素x颜色位深度(单位:位),一般情况下只需将各参数值代入公式计算即可。本题难点在于颜色位深度未知,需要根据颜色总量来计算位深度,其中用到了十进制转二进制算法。
为了帮助学生深度理解进制和编码相关知识点,我们可以将此题改编成非选择题,把图像数字化和计算存储容量公式作为背景信息介绍给学生,通过问题串的方式让学生逐步思考计算位深度和图像存储容量的方法,并把进制转换作为考查重点,以填空和改错的方式考查十进制转二进制的算法。
改编题:
将图像数字化需要经过采样、量化、编码等环节。
图像的量化是指要使用多大范围的数
值来表示图像采样之后每个像素的颜色信息,一般用二进制数来表示,其长度也称为颜色的位深度。
如
256
种颜色的图像,它的位深度为
8
位。
图像存储容量计算公式:存储容量=总像素x颜色位深度(单位:位)
已知某BMP图像的每个像素的颜色均不同,试根据其宽度和高度计算最小存储容量。相关程序如下,请仔细阅读代码,回答问题。
def d2b(n):
s = ""
while n > 0:
r = ①
s = str(r) + s
n = ②
return s
w = int(input("请输入图像宽度:"))
h = int(input("请输入图像高度:"))
d = len(d2b(w * h))+1 # 此为加框处代码,计算最小位深度
c = ③ # 注意单位为KB
print("该BMP图像的最小存储容量为", round(c), "KB")
(1)已知函数d2b()的功能是将十进制正整数n转换成二进制数字符串,请将代码补充完整。
(2)已知加框处代码有误,其代码应改为 ( )
A. len(d2b(w * h))
B. len(d2b(w
* h))-1
C. len(d2b(w * h - 1))
(3)若该BMP图像的宽、高分别为128、64,则其位深度至少为
(填数字)
(4)若该BMP图像的宽、高分别为1025、256,则其存储容量至少约为( )
A.768KB
B. 512KB
C. 576KB D. 609KB
答案:
(1)① n % 2
② n // 2
③ w * h * d / 8 / 1024
(2)C
(3)13
(4)D
解析:
略。
(详见Python算法之旅知识星球)
需要本文word文档、源代码和课后练习答案的,可以加入
“Python算法之旅”知识星球
参与讨论和下载文件,
“Python算法之旅”知识星球
汇集了数量众多的同好,更多有趣的话题在这里讨论,更多有用的资料在这里分享。
我们专注Python算法,感兴趣就一起来!
相关优秀文章:
