

摘? 要: 利用數(shù)字圖像分析技術(shù),對(duì)根據(jù)實(shí)驗(yàn)實(shí)際得出的底物濃度圖片進(jìn)行檢測,提取圖像的關(guān)鍵參數(shù),進(jìn)而分析圖像的直方圖統(tǒng)計(jì)特性與PH值之間的線性關(guān)系,建立PH值與RGB分量的線性回歸方程。采用Visual C++對(duì)線性方程進(jìn)行檢驗(yàn),效果良好。
關(guān)鍵詞: Visual C++;PH值;RGB模型;線性回歸方程
中圖分類號(hào): TP319? ? 文獻(xiàn)標(biāo)識(shí)碼: A? ? DOI:10.3969/j.issn.1003-6970.2020.10.036
本文著錄格式:吳艷. 基于Visual C++的PH值標(biāo)定程序的設(shè)計(jì)與實(shí)現(xiàn)[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? 引言
本課題研究是對(duì)底物濃度圖像經(jīng)過某些預(yù)處理(如增強(qiáng)、復(fù)原等)后,進(jìn)行區(qū)域分割,提取能夠有效表示圖像屬性紋理特征的相關(guān)參數(shù)。根據(jù)相關(guān)參數(shù)與底物濃度PH值的關(guān)系推導(dǎo)線性回歸方程,建立回歸模型。在Visual C++環(huán)境中對(duì)測試圖像進(jìn)行分析預(yù)測,進(jìn)而驗(yàn)證線性回歸方程的正確性。
本文通過實(shí)現(xiàn)基于Visual C++的PH值標(biāo)定程序,獲得給定圖片的底物濃度PH值,并將其顯示在主界面上。結(jié)果將作為PH值測定方法正確性的判定依據(jù)。
1? Visual C++程序開發(fā)環(huán)境
Visual C++是由微軟公司與1998年推出的面向?qū)ο蟮模闪薓FC類庫的可視化集成編程系統(tǒng),并在此后不斷更新版本。它具有自動(dòng)生成程序框架、類管理靈活方便、代碼編寫和界面設(shè)計(jì)可交互操作序等優(yōu)點(diǎn)[1-2]。
微軟基礎(chǔ)類庫(Microsoft Foundation Classes,簡稱MFC)是由微軟公司提供的一個(gè)類庫。它以C++類的形式封裝了Windows API,并包含一應(yīng)用程序框架,用以減少應(yīng)用程序開發(fā)人員的工作量。其中包含的類囊括了大量Windows句柄封裝類和很多Windows的內(nèi)建控件和組件的封裝類。
本系統(tǒng)功能實(shí)現(xiàn)主要利用了MFC類庫的CImage類。該類是MFC和ATL的共享類,它支持如JPG、BMP及PNG等多種常見格式外部圖像文件的調(diào)入、顯示和存儲(chǔ),及不同格式文件間的相互轉(zhuǎn)換。CImage類封裝了DIB(設(shè)備無關(guān)位圖)的功能,實(shí)現(xiàn)了對(duì)選定圖片的每個(gè)像素的操作。
2? RGB模型
RGB是常用的一種彩色信息表達(dá)方式,它使用紅、綠、藍(lán)三原色的亮度來定量表示顏色。該模型也稱為加色混色模型,是以RGB三色光互相疊加來實(shí)現(xiàn)混色的方法,因而適合于顯示器等發(fā)光體的顯示[3-4]。RGB模型用三維空間中的一個(gè)點(diǎn)來表示一種顏色。每個(gè)點(diǎn)有三個(gè)分量,分別代表該點(diǎn)顏色的紅、綠、藍(lán)亮度值,其取值范圍為[0,255]。是目前,攝像系統(tǒng)以及彩色顯示器等硬件顯示設(shè)備所采用的最為常用的彩色模型。
3? 線性回歸分析
在PH值標(biāo)定程序中,因?yàn)樵嚰埖娜齻€(gè)顏色參數(shù) R、G、B與底物濃度參數(shù)如PH 值的關(guān)系不確定,需要對(duì)每個(gè)參數(shù)與底物濃度參數(shù)進(jìn)行一元線性回歸分析。
系統(tǒng)設(shè)計(jì)的主要功能是,實(shí)現(xiàn)對(duì)用于細(xì)菌數(shù)量測定的底物濃度的PH值進(jìn)行標(biāo)定。經(jīng)實(shí)際實(shí)驗(yàn)測得,底物濃度PH值不同時(shí),采用相同檢測試紙,將會(huì)在其上呈現(xiàn)不同的顏色。選擇RGB顏色模型,通過線性回歸分析。嘗試建立,R、G、B三個(gè)顏色參數(shù)與底物濃度PH 值的對(duì)應(yīng)關(guān)系。
一元線性回歸的公式推導(dǎo):在外界檢測條件相同的情況下,取檢測底物濃度的PH值為目標(biāo)函數(shù)值,記為,y1,y2,y3,…,yn。對(duì)已知PH值的檢測試紙圖像文件進(jìn)行圖像處理,提取器顏色分量參數(shù),記為,x1,x2,x3,…,xn。現(xiàn)假設(shè)x,y,之間有如下的數(shù)學(xué)關(guān)系:
4? 系統(tǒng)功能設(shè)計(jì)
該系統(tǒng)的主要處理流程為:首先,提示用戶打開一組任意格式的底物濃度圖片文件;利用“點(diǎn)運(yùn)算”功能,完成對(duì)所選取圖片相應(yīng)參數(shù)值的計(jì)算;建立線性回歸方程表示出PH值與圖片紋理特征的對(duì)應(yīng)關(guān)系;將計(jì)算出的底物濃度圖片PH值與庫中存儲(chǔ)圖片標(biāo)記的PH值進(jìn)行比較,判斷其值是否與標(biāo)記值,近似相等。
5? 系統(tǒng)實(shí)現(xiàn)
5.1? 運(yùn)行界面設(shè)計(jì)
用戶界面是軟件系統(tǒng)的重要組成部分, 它主要負(fù)責(zé)接收用戶的輸入信息并顯示程序處理的結(jié)果[5-6]。系統(tǒng)界面設(shè)計(jì)簡單大方,主要分為左部的圖片顯示區(qū),和右部的參數(shù)顯示區(qū)兩部分。通過建立MFC應(yīng)用程序來實(shí)現(xiàn)對(duì)話框界面,用if語句來判斷響應(yīng)是“IDOK”還是“IDCANCEL”,若響應(yīng)是“IDOK”即“確定”來關(guān)閉對(duì)話框代碼,否則就“取消”來關(guān)閉對(duì)話框代碼。繼續(xù)利用選擇結(jié)構(gòu),完成對(duì)shell管理器id是否不為空的判斷。若是,則刪除shell管理器,否則返回“FALSE”值。
5.2 “打開圖片”命令的實(shí)現(xiàn)
通過調(diào)用OnBnClickedChooseButton函數(shù)實(shí)現(xiàn)“打開圖片”命令[7]。
定義“打開圖片”對(duì)話框,允許用戶打開bmp、jpg和gif格式圖片。用戶單擊“請(qǐng)選擇圖片”按鈕,獲取圖片路徑,實(shí)現(xiàn)圖片打開功能。該功能的實(shí)現(xiàn)主要是依靠重載OnBnClickedChooseButton()函數(shù)完成。
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參數(shù)獲取功能的實(shí)現(xiàn)[8]
通過調(diào)用GetImgRGB函數(shù)實(shí)現(xiàn)。調(diào)用GetBPP函數(shù),獲得圖像圖像的高度和寬度。使用if語句判斷每一行的字節(jié)數(shù)大于零還是小于零,若小于零指針指向最后一行,否則指針指向第一行。用戶將鼠標(biāo)移動(dòng)到圖像范圍內(nèi),則會(huì)獲取到圖像的RGB值、寬度和高度,并在界面上進(jìn)行顯示。利用if語句判斷用戶鼠標(biāo)是否在圖像范圍內(nèi),若不在則無法獲取到圖像的RGB值、寬度和高度等相關(guān)信息。
5.4? 計(jì)算PH值功能的實(shí)現(xiàn)
系統(tǒng)的主要功能是計(jì)算給定底物濃度圖片的PH值,并將結(jié)構(gòu)輸出到主界面中。主要是通過調(diào)用OnBnClickedCalcPhvaule函數(shù)實(shí)現(xiàn)的。首先,使用if語句判斷R、G、B分量的值是否為0,若為0,則圖片無效,彈出“必須有相應(yīng)的ph值才能計(jì)算!”提示框。否則調(diào)用線性回歸公式計(jì)算對(duì)應(yīng)的PH值。
5.5? 系統(tǒng)運(yùn)行效果
6? 結(jié)語
系統(tǒng)完成后,對(duì)其主要功能進(jìn)行了測試,系統(tǒng)運(yùn)行良好。測試結(jié)果說明其基本滿足最初的設(shè)計(jì)要求。利用Visual C++提供的類可以輕松地實(shí)現(xiàn)對(duì)底物濃度圖像PH值測定,程序計(jì)算的結(jié)果將作為PH值測定方法正確性的判定依據(jù)。
參考文獻(xiàn)
[1]李弼程, 彭天強(qiáng), 彭波.《智能圖像處理技術(shù)》. 北京: 電子工業(yè)出版社, 2004.
[2]李耀輝, 劉保軍. 《基于直方圖均衡的圖像增強(qiáng)》. 華北科技學(xué)院學(xué)報(bào), 2003(6): 88-89.
[3]許慧慧. 《VC++圖像處理程序設(shè)計(jì)》. 北京: 北方交通大學(xué)出版社, 2005(3): 22-25.
[4]駱巖紅. 《數(shù)字圖像處理》課程的實(shí)驗(yàn)系統(tǒng)的研究[J].教育 教學(xué)論壇, 2018(50): 277-278.
[5]趙振兵, 金思新, 劉亞春. 基于NSCT的航拍絕緣子圖像邊緣提取方法[J]. 儀器儀表學(xué)報(bào), 2012(9).
[6]史廣, 楊艷. 沙化土地地理信息多維結(jié)構(gòu)特征提取仿真[J].? 計(jì)算機(jī)仿真, 2019(11).
[7]陳龍, 吳龍飛. 基于Qt的數(shù)字圖像處理實(shí)驗(yàn)演示系統(tǒng)[J]. 實(shí)驗(yàn)室研究與探索, 2018, 37(7): 170-173+202.
[8]覃磊, 孫開瓊, 劉春苔. 數(shù)字圖像處理綜合性實(shí)驗(yàn)教學(xué)案例研究與實(shí)現(xiàn)[J]. 武漢輕工大學(xué)學(xué)報(bào), 2018, 37(2): 91-97.