高中信息技术浙教版(2019)必修1数据与计算:3.3.3 算法程序实现的综合应用-课后练习(含答案)

资源下载
  1. 二一教育资源

高中信息技术浙教版(2019)必修1数据与计算:3.3.3 算法程序实现的综合应用-课后练习(含答案)

资源简介

作业练习
课程基本信息
学科 信息技术 年级 高二 学期 秋季
课题 3.3.3简单算法及程序实现(实践与体验)--图像字符画
教科书 书 名:信息技术必修1《数据与计算》 出版社:浙江教育出版社
学生信息
姓名 学校 班级 学号
作业练习
一、基础练习题
1.【嘉兴市2021年第一学期高二信息技术期末试题】部分改编,图像字符画。应用Python中的Image模块后,将手写的数字图片处理成由0,1表达的文本文件。手写图像如第1题图a所示,运行后文本文件结果如第1题图b所示。 第1题图a第1题图b
(一)项目分析与算法思路 首先需要先将图像统一转换为黑白图像。以彩色图像(RGB颜色模式)为例,可以按照如下数学模型将彩色图像中每个像素的RGB值转换成灰度值: 灰度值gray = 0.299×R+0.587×G+0.114×B 根据像素的灰度值,若灰度值小于限定值(如132),则判定为黑色,用ASCII码字符“1”填充;否则判定为白色,用ASCII码字符“0”填充。 算法思路: 遍历图片中的所有像素点 判定每个像素点灰度值的填充字符 把填充字符写入文本文件。 (二)完善程序 (1)若第1题图a的图像大小为512×120,则生成的文本文件(1.txt)的容量约为: KB(单选,填字母:A.7.5 / B.60) (2)实现该功能的python程序如下,请完善程序: from PIL import Image def judge(R,G,B): gray=0.299*R+0.587*G+0.114*B #转成灰度值 color= ① #1 return color img=Image.open("sx.jpg") pix=img.load() #读取所有像素的颜色值 fh=open("1.txt","w") #2 width=img.size[0] #图像宽度 height= ② #图像高度 for i in range(height): line='' for j in range(width): R,G,B=pix[j,i] #根据像素坐标获得该点的RGB值 ③ if color==0: line=line+"1" else: line=line+"0" fh.write(line) fh.write("\n") #3 fh.close() (3)结合程序,回答问题
①写出与注释1处(#1)语句功能等同的语句块:
②注释2处(#2)语句的作用是: ③注释3处(#3)语句若删除,程序 (选填:是或否)还能正常运行。 ④若将程序中的画框处语句修改为下面语句,程序运行后, (选填:是或否)还能得到第1题图b所示字符画,说说原因 。
二、拓展练习题
1. 【嘉兴市2021年新教材练习卷】现有一副RGB模式的彩色位图,将其转换为一副黑白图像,并压缩存储,具体的步骤如下: (1)将图像转换为灰度图像(位深度为8位),并将灰度值以二维列表形式存储。 (2)设定特定值128,当元素值大于128,则将该元素值设为1,否则设为0,逐行转化并存储到一维列表a中。 (3)将a列表按顺序遍历,将连续相同的元素值压缩为一个数字加元素值的形式,并存入列表b中。例如某一段元素值为:1111100011000,可以压缩为:5,1,4,0,2,1,3,0, 将一维列表b以文件的形式保存,完成图像压缩。运行效果如图所示: (1)图片压缩的部分程序代码如下,请完善程序 from PIL import Image import numpy as np img=np.array(Image.open('nanhu.jpg').convert('L')) rows,cols= ① # img的行,列数,分别存储到rows与cols中 a = [] for i in range(rows): for j in range(cols): x= ② a.append(x) b=[] s="" t=1 for i in range(len(a)-1): if ③ : t=t+1 else: s=str(t)+","+str(a[i])+"," b.append(s) t=1 f=open("ys.txt","w") f.writelines(b) f.close() (2)一副未经压缩的BMP位图,颜色位深度为24,压缩后的结果为:“5000,1,47800,0,3250,1,60000,1,3950,0,”,则压缩前该位图的存储容量约为 。(单选,填字母。A.352KB / B.2.75MB / C.14.6KB) 参考答案 一、基础练习题
1. 参考答案 (1)B (2)①gray//132 或其他等价答案 ②img.size[1] 或img.height ③color=judge(R,G,B)
(3)①if gray>=132:
color=1
else:
color=0
② 以读写方式打开文本文件1.txt ③ 否
④ 否 因为读取像素值时纵坐标不变,横坐标[0,rows)
【解析】 (1)文本文件中,每个字符存储需1B,在图像字符画过程中,1个像素点对应1个字符,故存储容量共512*120B,即60KB。(2)①按项目分析思路若灰度值小于限定值(如132),则判定为黑色,此空是将灰度像素值转为黑白两色,即0,1值,用字符映射思想。②读取图像高度,故答案img.size[1] 或img.height。③运用自定义函数将图像的像素点的灰度值转为黑白值。(3)①分情况讨论的思想进行字符映射。②文件读写操作中参数为“w”的作用是写文件模式。③不能,因为没有换行,字符画不能正常显示。④在读取像素时,纵坐标不变,横坐标从0到rows-1。 二、拓展练习题 1. 参考答案 (1) ①img.shape 或者shape[0],shape[1] ②img[i,j]//128 ③a[i]==a[i+1] (2)A 【解析】 (1)程序①处代码img.shape,读取图片的长和宽,存储到rows与cols中。程序②处代码是将每个像素点的值转换成0、1表示,根据题干,超过128为1,否则为0,可以用整除表示。程序③处代码是统计连续相同的个数并存储到b列表中,依次遍历,如果相邻a[i]==a[i+1],则t+1,如果不相等,则将计数个数t和a[i]连接后存储到b中。 (2)根据压缩结果计算0、1的总个数是120000,这就是该图像的总像素数。然后使用公式:像素数*位数/8来计算,120000*24/8/1024=352KB。

展开更多......

收起↑

资源预览