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

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

相关推荐
SimonCoder6 小时前
CVMJ 2024 | StyleDiffusion: 基于Prompt嵌入的真实图像反演和文本编辑
图像处理
sirius1234512318 小时前
使用open-cv实现图片添加水印
图像处理·opencv·计算机视觉
德林恩宝20 小时前
基于双目视差的3D立体视觉原理及其应用
图像处理·计算机视觉·3d·双目视差
加德霍克1 天前
Opencv之图像添加水印
图像处理·python·opencv·学习·计算机视觉
蚂蚁没问题s1 天前
图像处理 - 车道线检测:智能驾驶的“眼睛”
图像处理·人工智能·算法·机器学习·计算机视觉
机器视觉李小白1 天前
VisionPro 机器视觉控件篇 之 CogBlobTool 斑点工具
图像处理·人工智能·笔记·机器视觉·康耐视visionpro
Jamence2 天前
【图像处理】利用numpy、opencv、python实现车牌检测
图像处理·人工智能·opencv
木市门2 天前
【GAMES101笔记速查——Lecture 22 Animation Cont】
图像处理·笔记·图形渲染
我感觉。2 天前
【图像处理lec3、4】空间域的图像增强
图像处理·图像增强·直方图均衡·直方图匹配·空间域图像增强