【项目作业】图像分析系统
项目作业 53
等1人参与

亲爱的慕友们,在学习了图像处理、数组操作和文件管理等 Python 知识后,我们已经具备了对图像进行基本处理和分析的能力。课程中老师提到不同图像格式在存储和处理上可能存在差异,那么在模拟从虚拟文件夹读取图像文件并处理的过程中,我们该如何灵活应对不同格式的图像呢?欢迎小伙伴们一起分享自己的想法~
现在,大家已经学习了这一阶段关于图像处理的知识,接下来就按照作业描述的要求,动手设计并实现一个简单的图像分析系统,展示一下自己的编程实力吧!

题目:

设计一个图像分析系统,实现以下功能:
1、从虚拟文件夹中读取一组图像文件,假设文件格式为常见的图片格式,如 .jpg。(图像可自行寻找,提交时需附带图片)
2、对每张图像进行灰度化处理。
3、使用自适应阈值方法对灰度图像进行二值化处理,以便更好地突出图像中的目标物体。
4、将处理后的图像存储到新的虚拟文件夹中,新文件夹的命名规则为原虚拟文件夹名加上 “_processed”。
5、统计所有处理后图像中白色像素点的总数,并输出结果。

图像数据:
simulated_images = [
np.random.randint(0, 256, size=(100, 100, 3), dtype=np.uint8),
np.random.randint(0, 256, size=(100, 100, 3), dtype=np.uint8)
]

预计结果:
所有处理后图像中白色像素点的总数为 10196。

作业描述

一、开发语言与环境要求​

1、语言版本:Python3(与课程视频中使用的 Python 版本保持一致)​
2、开发工具:PyCharm(与课程视频中推荐的开发工具相同)​
3、依赖模块:需安装并使用numpy模块处理图像数据、opencv-python(或PIL)模块实现图像灰度化与二值化处理,安装命令分别为pip install numpy和pip install opencv-python(若使用PIL则安装pip install pillow)

二、程序整体要求​

1、完成需求中涉及的所有功能,包括读取虚拟图像文件、图像灰度化处理、自适应阈值二值化处理、处理后图像存储、统计白色像素点总数并输出。​
2、Python 代码书写、命名需符合 PEP 8 规范:变量名用小写字母 + 下划线(如simulated_images“white_pixel_count”),函数名用动词 + 名词(如read_virtual_images“grayscale_conversion”),避免拼音或无意义命名。​
3、代码结构层次分明,采用功能模块化设计,将 “读取图像”“灰度化”“二值化”“存储图像”“统计像素” 等功能拆分到不同函数,不堆砌代码。​
4、在关键代码段(如灰度化算法、自适应阈值参数设置、像素统计逻辑)添加注释,说明功能与核心逻辑,提升代码可读性。​
5、程序运行稳定,处理图像无异常崩溃,最终输出的白色像素点总数与预计结果(10196,允许因随机图像数据小幅波动)基本一致。​
6、将作业项目整理为 “图像分析系统” 文件夹,包含主程序文件 “main.py”,若有工具类代码可创建 “image_utils.py”,最终压缩为 ZIP 格式提交。​

三、详细设计​

1、自定义虚拟图像读取函数​
(1)功能:接收题目给定的simulated_images(随机生成的 RGB 图像数组列表),模拟从虚拟文件夹读取图像,返回图像列表供后续处理。​
(2)实现思路:直接接收虚拟图像数据,可添加数据校验(如判断是否为 RGB 格式、像素维度是否合法),确保图像数据可正常处理。

评分标准是什么?

一、项目规范【15 分】​

1、文件与变量命名(5 分)​
(1)作业主文件名为 “main.py” 得 3 分,文件名错误(如 “image.py”“分析.py”)不得分;​

(2 )变量命名符合 PEP 8 规范(小写 + 下划线,如simulated_imgs“total_white_pixels”)得 2 分,1-2 处不规范扣 1 分,3 处及以上扣 2 分。​

**2、代码结构(5 分)**​
按 “读取图像→灰度化→二值化→存储→统计” 拆分功能到独立函数,结构清晰得 5 分;代码无拆分、堆砌在主程序,扣 3-5 分。​

3、代码规范与注释(5 分)​
(1)代码缩进统一(4 个空格)、无语法错误得 2 分,缩进混乱或有基础语法错扣 1-2 分;​

(2)关键逻辑(如灰度化公式、二值化参数、像素统计方法)添加注释,说明清晰得 3 分,注释缺失或模糊扣 1-3 分。​

二、程序整体运行效果【20 分】​

1.功能完整性(12 分)​
(1)完成 “虚拟图像读取→灰度化→自适应阈值二值化→处理后图像存储→白色像素统计” 所有功能,每缺 1 项扣 3 分;​

(2)新文件夹命名符合 “原文件夹名 +_processed” 规则(如 “images_processed”)得 3 分,命名错误扣 1-3 分。​

2、结果准确性(8 分)​
(1)最终输出的白色像素总数与预计结果(10196,允许 ±500 内波动)一致得 8 分;偏差 501-1000 扣 4 分,偏差超 1000 或无统计结果扣 6-8 分。

三、核心函数实现【45 分】​

1、虚拟图像读取函数(8 分)​
(1)能接收simulated_images数据、完成 RGB 格式校验(如判断 3 通道)得 5 分,无校验扣 3 分;​

(2)函数有返回值(返回有效图像列表)得 3 分,无返回值扣 3 分。​

**2、灰度化处理函数(10 分)**​
(1)使用加权平均法(gray=0.299R+0.587G+0.114B)或调用opencv/PIL内置函数实现灰度化,逻辑正确得 6 分,算法错误扣 4-6 分;​

(2)灰度图像为单通道、像素值类型为uint8(0-255)得 4 分,通道 / 类型错误扣 2-4 分。​

3、自适应阈值二值化函数(12 分)​
(1)使用cv2.adaptiveThreshold()(或PIL对应功能),参数设置合理(如自适应方法为高斯、块大小 11、常数 2)得 8 分,未用自适应阈值(用固定阈值)扣 5 分,参数错误扣 3-8 分;​

(2)输出二值图像仅含 0(黑)和 255(白)像素值得 4 分,像素值异常扣 2-4 分。​

4、白色像素统计函数(10 分)​
(1)正确统计单张二值图像白色像素((img==255).sum())并累加总数得 7 分,统计逻辑错误扣 4-7 分;​

(2)打印 “单张图像白色像素数 + 汇总总数”,输出格式清晰得 3 分,仅输出汇总得 1 分。​

5、图像存储函数(5 分)​
(1)成功创建新文件夹、用cv2.imwrite()(或PIL.save())存储处理后图像得 5 分,存储失败(如路径错误)扣 3-5 分。​

四、异常处理与细节【20 分】​

1、异常处理(10 分)​
(1)在 “图像读取、格式转换、存储” 环节添加try-except捕获异常(如格式错误、存储权限问题)得 6 分,无异常处理扣 4-6 分;​

(2)异常发生时输出明确提示(如 “图像格式错误,需 RGB 三通道”)得 4 分,仅捕获无提示扣 2-4 分。​

2、依赖模块与提交规范(10 分)​
(1)正确使用numpy处理图像数据、opencv-python/PIL处理图像转换,模块调用无误得 5 分,模块用错或未安装相关库扣 3-5 分;​

(2)提交压缩包含 “图像分析系统” 文件夹,内有 “main.py”(无冗余文件)得 5 分,文件缺失或冗余扣 2-5 分。​

项目作业上传说明
第1步:上传你的作业压缩包
第2步:等待讲师一对一批复
第3步:查看讲师点评
上传作业

登录后查看更多作业,立即

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师