基于Visual C++的PH值标定程序的设计与实现

2020-12-23 05:47吴艳
软件 2020年10期
关键词:pH值

摘  要: 利用数字图像分析技术,对根据实验实际得出的底物浓度图片进行检测,提取图像的关键参数,进而分析图像的直方图统计特性与PH值之间的线性关系,建立PH值与RGB分量的线性回归方程。采用Visual C++对线性方程进行检验,效果良好。

关键词: Visual C++;PH值;RGB模型;线性回归方程

中图分类号: TP319    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2020.10.036

本文著录格式:吴艳. 基于Visual C++的PH值标定程序的设计与实现[J]. 软件,2020,41(10):146147+160

【Abstract】: To detect the substrate concentration image obtained from the experiment, by using the digital image analysis technology, extract the key parameters of the image, and analysis the linear relationship between the histogram statistical characteristics of the image and the pH value, finally the establish the linear regression equation. Test the linear equation by Using Visual C++, and the effect is good.

【Key words】: Visual C++; PH value; Image histogram Analysis; Linear Regression Equation

0  引言

本课题研究是对底物浓度图像经过某些预处理(如增强、复原等)后,进行区域分割,提取能够有效表示图像属性纹理特征的相关参数。根据相关参数与底物浓度PH值的关系推导线性回归方程,建立回归模型。在Visual C++环境中对测试图像进行分析预测,进而验证线性回归方程的正确性。

本文通过实现基于Visual C++的PH值标定程序,获得给定图片的底物浓度PH值,并将其显示在主界面上。结果将作为PH值测定方法正确性的判定依据。

1  Visual C++程序开发环境

Visual C++是由微软公司与1998年推出的面向对象的,集成了MFC类库的可视化集成编程系统,并在此后不断更新版本。它具有自动生成程序框架、类管理灵活方便、代码编写和界面设计可交互操作序等优点[1-2]。

微软基础类库(Microsoft Foundation Classes,简称MFC)是由微软公司提供的一个类库。它以C++类的形式封装了Windows API,并包含一应用程序框架,用以减少应用程序开发人员的工作量。其中包含的类囊括了大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

本系统功能实现主要利用了MFC类库的CImage类。该类是MFC和ATL的共享类,它支持如JPG、BMP及PNG等多种常见格式外部图像文件的调入、显示和存储,及不同格式文件间的相互转换。CImage类封装了DIB(设备无关位图)的功能,实现了对选定图片的每个像素的操作。

2  RGB模型

RGB是常用的一种彩色信息表达方式,它使用红、绿、蓝三原色的亮度来定量表示颜色。该模型也称为加色混色模型,是以RGB三色光互相叠加来实现混色的方法,因而适合于显示器等发光体的显示[3-4]。RGB模型用三维空间中的一个点来表示一种颜色。每个点有三个分量,分别代表该点颜色的红、绿、蓝亮度值,其取值范围为[0,255]。是目前,摄像系统以及彩色显示器等硬件显示设备所采用的最为常用的彩色模型。

3  线性回归分析

在PH值标定程序中,因为试纸的三个颜色参数 R、G、B与底物浓度参数如PH 值的关系不确定,需要对每个参数与底物浓度参数进行一元线性回归分析。

系統设计的主要功能是,实现对用于细菌数量测定的底物浓度的PH值进行标定。经实际实验测得,底物浓度PH值不同时,采用相同检测试纸,将会在其上呈现不同的颜色。选择RGB颜色模型,通过线性回归分析。尝试建立,R、G、B三个颜色参数与底物浓度PH 值的对应关系。

一元线性回归的公式推导:在外界检测条件相同的情况下,取检测底物浓度的PH值为目标函数值,记为,y1,y2,y3,…,yn。对已知PH值的检测试纸图像文件进行图像处理,提取器颜色分量参数,记为,x1,x2,x3,…,xn。现假设x,y,之间有如下的数学关系:

4  系统功能设计

该系统的主要处理流程为:首先,提示用户打开一组任意格式的底物浓度图片文件;利用“点运算”功能,完成对所选取图片相应参数值的计算;建立线性回归方程表示出PH值与图片纹理特征的对应关系;将计算出的底物浓度图片PH值与库中存储图片标记的PH值进行比较,判断其值是否与标记值,近似相等。

5  系统实现

5.1  运行界面设计

用户界面是软件系统的重要组成部分, 它主要负责接收用户的输入信息并显示程序处理的结果[5-6]。系统界面设计简单大方,主要分为左部的图片显示区,和右部的参数显示区两部分。通过建立MFC应用程序来实现对话框界面,用if语句来判断响应是“IDOK”还是“IDCANCEL”,若响应是“IDOK”即“确定”来关闭对话框代码,否则就“取消”来关闭对话框代码。继续利用选择结构,完成对shell管理器id是否不为空的判断。若是,则删除shell管理器,否则返回“FALSE”值。

5.2 “打开图片”命令的实现

通过调用OnBnClickedChooseButton函数实现“打开图片”命令[7]。

定义“打开图片”对话框,允许用户打开bmp、jpg和gif格式图片。用户单击“请选择图片”按钮,获取图片路径,实现图片打开功能。该功能的实现主要是依靠重载OnBnClickedChooseButton()函数完成。

void CPHConverterDlg::OnBnClickedChooseButton()

{

DWORD dwFlags = OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT;

LPCTSTR lpszFilter = _T("bmp格式 (*.bmp) |*.bmp|jpg格式 (*.jpg)|*.jpg|gif格式 (*.gif)|*.gif||");

CFileDialog dlgFile(TRUE, L"bmp", NULL, dwFlags, lpszFilter, NULL, 0);

if(dlgFile.DoModal() != IDOK)

{    return;    }

m_strPath= dlgFile.GetPathName();

this->OpenPHImg();

}

5.3  RGB参数获取功能的实现[8]

通过调用GetImgRGB函数实现。调用GetBPP函数,获得图像图像的高度和宽度。使用if语句判断每一行的字节数大于零还是小于零,若小于零指针指向最后一行,否则指针指向第一行。用户将鼠标移动到图像范围内,则会获取到图像的RGB值、宽度和高度,并在界面上进行显示。利用if语句判断用户鼠标是否在图像范围内,若不在则无法获取到图像的RGB值、宽度和高度等相关信息。

5.4  计算PH值功能的实现

系统的主要功能是计算给定底物浓度图片的PH值,并将结构输出到主界面中。主要是通过调用OnBnClickedCalcPhvaule函数实现的。首先,使用if语句判断R、G、B分量的值是否为0,若为0,则图片无效,弹出“必须有相应的ph值才能计算!”提示框。否则调用线性回归公式计算对应的PH值。

5.5  系统运行效果

6  结语

系统完成后,对其主要功能进行了测试,系统运行良好。测试结果说明其基本满足最初的设计要求。利用Visual C++提供的类可以轻松地实现对底物浓度图像PH值测定,程序计算的结果将作为PH值测定方法正确性的判定依据。

参考文献

[1]李弼程, 彭天强, 彭波.《智能图像处理技术》. 北京: 电子工业出版社, 2004.

[2]李耀辉, 刘保军. 《基于直方图均衡的图像增强》. 华北科技学院学报, 2003(6): 88-89.

[3]许慧慧. 《VC++图像处理程序设计》. 北京: 北方交通大学出版社, 2005(3): 22-25.

[4]骆岩红. 《数字图像处理》课程的实验系统的研究[J].教育 教学论坛, 2018(50): 277-278.

[5]赵振兵, 金思新, 刘亚春. 基于NSCT的航拍绝缘子图像边缘提取方法[J]. 仪器仪表学报, 2012(9).

[6]史广, 杨艳. 沙化土地地理信息多維结构特征提取仿真[J].  计算机仿真, 2019(11).

[7]陈龙, 吴龙飞. 基于Qt的数字图像处理实验演示系统[J]. 实验室研究与探索, 2018, 37(7): 170-173+202.

[8]覃磊, 孙开琼, 刘春苔. 数字图像处理综合性实验教学案例研究与实现[J]. 武汉轻工大学学报, 2018, 37(2): 91-97.

猜你喜欢
pH值
降低粗选石灰PH值在沙溪铜矿的运用
新生儿胃液PH值检测在胃液细菌培养中的意义
PH值在纺织品生产中的重要作用
脱硫系统PH值的自动调节与控制
水的酸碱性与健康无关