基于图像处理和机器学习的水浑浊度预测研究与系统实现

1.摘要

本文实现了一个基于图像处理的水浑浊度预测系统。首先,通过Python的图像处理库读取图片并截取有效区域,然后将图片数据划分为RGB三个颜色通道,并转换为像素值矩阵。接着,自定义函数计算三个颜色通道的一阶、二阶和三阶颜色矩,作为图像特征。为了批量处理图像,还自定义了函数获取指定路径中的所有图片名称,并计算它们的颜色矩特征,保存为数组。这些特征数据集用于训练机器学习模型,包括人工神经网络(ANN)、线性回归和K-最近邻(K-NN)等,以预测水的浑浊度。最后,使用Flask框架、HTML/CSS/JavaScript等技术实现了一个基于Web的系统界面,用户可以通过上传水体图像进行浑浊度预测。该系统为水质监测提供了一种新的、便捷的方法。

2.基于图像处理的水浑浊度实现步骤

1.1 读取一张图片数据并用Python查看图片,截取图像的有效区域

目的:从数据源中读取图像,并确定哪些部分是图像的有效内容(即,去除边框、文字等非目标区域)。实现:使用Python的图像处理库(如PIL、OpenCV)读取图像。

显示图像以手动确定有效区域,或者使用图像处理技术(如边缘检测、阈值分割)自动确定。

使用切片操作截取有效区域。
1.2 将图片数据划分为RGB三个颜色通道,分别将三个颜色通道的图片数据转换为像素值矩阵

目的:将图像分解为红(R)、绿(G)、蓝(B)三个颜色通道,以便单独分析每个通道的信息。实现:使用图像处理库的功能分离RGB通道。

将每个通道的图像数据转换为二维或三维的像素值矩阵,其中每个元素代表对应位置的像素值。
1.3 了解水质图像特征-颜色矩,自定义计算三阶颜色矩的函数

目的:颜色矩是一种描述图像颜色分布的特征,它基于图像的颜色直方图计算低阶矩(如均值、方差、偏斜度)。这些特征对于区分不同浑浊度的水图像可能是有用的。实现:研究颜色矩的理论基础,特别是如何计算一阶(均值)、二阶(方差)、三阶(偏斜度)颜色矩。

编写函数来计算每个颜色通道的颜色矩。
1.4 计算三个颜色通道的一阶颜色矩、二阶颜色矩和三阶颜色矩

目的:实际计算每张图像每个颜色通道的颜色矩特征。实现:对每个颜色通道应用之前定义的函数。存储每个颜色通道的颜色矩结果。
1.5 自定义函数正确获取指定路径中的所有图片名称

目的:为了批量处理图像,需要能够列出指定文件夹中的所有图像文件名。实现:使用Python的文件系统操作函数(如os.listdir())列出文件夹中的文件。过滤出图像文件(根据文件扩展名,如.jpg, .png)。
1.6 自定义函数,用循环语句计算所有图片的颜色矩和获取图片标签,分别保存为数组

目的:对指定文件夹中的所有图像重复前面的步骤,计算它们的颜色矩特征,并可能获取与每张图像相关联的标签(如浑浊度等级)。实现:编写一个函数,该函数接受图像文件夹的路径和标签信息(如果可用)。使用循环遍历所有图像文件。对每张图像执行前面的步骤(读取、截取、分离通道、计算颜色矩)。将每张图像的颜色矩特征和标签(如果有)保存到数组中。这些数组随后可以用于机器学习模型的训练和测试。
完成上述步骤后,将拥有一个特征数据集,可以用于训练机器学习模型来预测水的浑浊度。

3.利用数据集进行训练预测模型

提取出的数据集如下:

浊度单位:NTU

1.数据准备:

使用pandas库读取ntumodel.csv文件。

从数据集中提取特征(如最大灰度值、最小灰度值、平均灰度值等)作为输入(X),并将"ntu"列作为目标输出(y)。

使用train_test_split函数将数据集分割为训练集和测试集,测试集大小为33%。
2.模型训练与评估

人工神经网络(ANN):

使用Normalizer对数据进行归一化处理。

创建一个多层感知器回归器(MLPRegressor),具有5个隐藏层,每层分别有512、256、128、64、32个神经元。

使用训练数据拟合模型,并预测训练集和测试集的输出。

计算并打印训练集和测试集的均方根误差(RMSE)等。

还可以使用线性回归模型(LinearRegression)、K-最近邻(K-NN):
使用pickle库将训练好的模型(ANN、线性回归、K-NN)保存为.pkl文件,以便将来使用。

4.系统实现

使用刚刚训练好的**.pkl文件实现一个可以基于上传图像进行水浑浊度预测的系统。**

该系统是一个基于Web的图像处理平台,专门用于评估水的浑浊度。用户可以通过上传一张包含水体图像的照片,系统将对这张照片进行处理,并基于图像的多种特征来预测和显示水的浑浊程度。使用到的技术如下:

前端技术:HTML/CSS/JavaScript、Jinja2模板引擎。

后端技术:Flask框架、Python编程语言

图像处理技术:OpenCV库、PIL/Pillow库

机器学习技术:Scikit-learn库、预训练的机器学习模型

Web技术:HTTP协议、WSGI(Web Server Gateway Interface

实现的系统界面如下所示:

上传一张水的图像进行预测:

代码下载链接:

https://download.csdn.net/download/weixin_40651515/90141065

相关推荐
知来者逆20 小时前
计算机视觉——深度学习图像处理中目标检测平均精度均值(mAP)与其他常用评估指标
图像处理·深度学习·目标检测·计算机视觉·map
binary001021 小时前
基于 Qt 的图片处理工具开发(一):拖拽加载与基础图像处理功能实现
图像处理·人工智能·qt
AndrewHZ21 小时前
【图像处理基石】什么是影调?并用python实现一个哈苏色彩影调
图像处理·人工智能·python·计算机视觉·影调·摄影语言
搞程序的心海1 天前
OpenCV 进阶实战与技巧——图像处理的全面解析
图像处理·人工智能·opencv
Jeson-y1 天前
PointNet++语义分割(semseg)训练自己的数据集并完成可视化并保存txt结果
图像处理·深度学习
搞程序的心海1 天前
用Python和OpenCV开启图像处理魔法之旅
图像处理·python·opencv
哥谭市情歌王2 天前
基于OpenCV的图像处理程序设计实践
图像处理·人工智能·opencv
Yang-Never2 天前
Open GL ES -> SurfaceView + 自定义EGL实现OpenGL渲染框架
android·开发语言·图像处理·android studio
知来者逆2 天前
计算机视觉——图像金字塔与目标图像边缘检测原理与实践
图像处理·计算机视觉·边缘检测·图像金字塔
AndrewHZ2 天前
【图像处理基石】什么是自动曝光(AE)?
图像处理·人工智能·算法·计算机视觉·ae·isp算法·3a