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

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

相关推荐
2401_841495642 天前
【计算机视觉】分水岭实现医学诊断
图像处理·人工智能·python·算法·计算机视觉·分水岭算法·医学ct图像分割
格林威2 天前
常规可见光相机在工业视觉检测中的应用
图像处理·人工智能·数码相机·计算机视觉·视觉检测
扶尔魔ocy2 天前
【QT常用技术讲解】multimedia实现指定分辨率打开摄像头
图像处理·qt
格林威2 天前
工业视觉检测里的 “柔性” 是什么?
图像处理·人工智能·深度学习·yolo·计算机视觉·视觉检测
格林威2 天前
不同光谱的工业相机有哪些?能做什么?
图像处理·人工智能·深度学习·数码相机·计算机视觉·视觉检测
CiLerLinux2 天前
第三十八章 ESP32S3 SPIFFS 实验
图像处理·人工智能·单片机·嵌入式硬件
要做朋鱼燕3 天前
【OpenCV】图像处理入门:从基础到实战技巧
图像处理·人工智能·opencv
不枯石3 天前
Matlab通过GUI实现点云的随机一致性(RANSAC)配准
开发语言·图像处理·算法·计算机视觉·matlab
那雨倾城3 天前
PiscCode:基于OpenCV的前景物体检测
图像处理·python·opencv·计算机视觉
CiLerLinux3 天前
第三十五章 ESP32S3 摄像头实验
图像处理·人工智能·计算机视觉