摘 要:文中提出了一種基于OpenCV的圖像處理軟件設(shè)計(jì)方案。軟件通過使用OpenCV提供的圖像處理算法,實(shí)現(xiàn)了圖像的形態(tài)學(xué)運(yùn)算、去噪、特征提取等一系列功能。同時(shí),軟件還提供了用戶友好的圖形界面,方便用戶對(duì)圖像進(jìn)行直觀地處理和操作。實(shí)驗(yàn)結(jié)果表明,軟件具有較好的圖像處理效果和較高的實(shí)用性,可以運(yùn)用于科學(xué)研究及工業(yè)應(yīng)用領(lǐng)域。
關(guān)鍵詞:OpenCV;圖像處理;圖形界面;圖像去噪;軟件設(shè)計(jì);特征提取
中圖分類號(hào):TP393;TN911.73-34 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2024)06-00-03
0 引 言
隨著計(jì)算機(jī)視覺和圖像處理技術(shù)[1]的不斷發(fā)展,圖像處理軟件成為了科學(xué)研究和工業(yè)應(yīng)用領(lǐng)域中的重要工具。在制造業(yè)、安防、自動(dòng)化控制、醫(yī)學(xué)影像處理、地球物理學(xué)、氣象學(xué)、生物學(xué)等領(lǐng)域,圖像處理軟件被廣泛應(yīng)用。這些軟件可以對(duì)圖像進(jìn)行分析、處理和增強(qiáng),以提取和研究感興趣的特征和信息。
OpenCV是開源的視覺庫(kù),其包含多種先進(jìn)的圖像處理算法與技術(shù),可以有效支持多種視覺處理任務(wù),并且在各行各業(yè)得到了廣泛應(yīng)用。文中提出了一種基于OpenCV的圖像處理軟件[2]設(shè)計(jì)方案,該方案實(shí)現(xiàn)了圖像形態(tài)學(xué)運(yùn)算、去噪、特征提取等圖像處理功能,并提供了用戶友好的圖形界面。該軟件不僅具備高效的圖像處理能力,還具有易用性和擴(kuò)展性,可以滿足不同用戶的需求。隨著計(jì)算機(jī)視覺和圖像處理技術(shù)的不斷進(jìn)步,這種軟件將有更廣泛的應(yīng)用前景。
OpenCV的基本結(jié)構(gòu)如圖1所示。
1 設(shè)計(jì)方案
1.1 概括
軟件采用Python語言[3]編寫。Python是一種高效的編程語言,同時(shí)也是計(jì)算機(jī)視覺和圖像處理領(lǐng)域中常用的編程語言。基于OpenCV庫(kù)的開發(fā)可以使得該軟件擁有豐富的圖像處理算法和工具,滿足不同用戶的需求。通過采用模塊化設(shè)計(jì),將軟件分為圖像處理模塊和圖形界面模塊。圖像處理模塊實(shí)現(xiàn)了常用的圖像處理算法,包括圖像形態(tài)學(xué)運(yùn)算、去噪、特征提取等,這些算法可以提高圖像的質(zhì)量和信息提取的準(zhǔn)確性。圖形界面模塊采用Qt[4]框架實(shí)現(xiàn),提供了友好的圖形界面,包括工具欄、狀態(tài)欄等,使得用戶可以方便地進(jìn)行圖像處理和操作。同時(shí),采用模塊化設(shè)計(jì)可以使得軟件代碼更加清晰簡(jiǎn)潔、易于維護(hù)和擴(kuò)展,提高了軟件的可靠性和可用性??傊赑ython語言和OpenCV庫(kù)的開發(fā)以及模塊化[5]設(shè)計(jì),使得該軟件具有高效、可靠、易用等特點(diǎn),有望在圖像處理領(lǐng)域得到廣泛應(yīng)用。
1.2 圖像處理模塊
1.2.1 圖像形態(tài)學(xué)運(yùn)算
圖像的形態(tài)學(xué)運(yùn)算[6]包括腐蝕操作和膨脹、開運(yùn)算和閉運(yùn)算以及梯度運(yùn)算等。
(1)腐蝕和膨脹
膨脹操作是指將圖像(或圖像的某個(gè)區(qū)域,稱為A)與核(稱為B)進(jìn)行卷積的過程。
通常情況下,核可能是一個(gè)大實(shí)心圓或小的空心圓,并同時(shí)帶有多個(gè)參考點(diǎn),也可以作為一種模板或者掩碼。膨脹操作可以作為一種局部最大值求解的圖像處理方法,其實(shí)質(zhì)是通過直接對(duì)圖像域中的每個(gè)像素與每個(gè)像素核間的亮度值進(jìn)行卷積處理,來精確計(jì)算出被覆蓋在圖像區(qū)域范圍內(nèi)各顯像層色素點(diǎn)上的像素亮度最大值,并通過計(jì)算機(jī)將達(dá)到該點(diǎn)亮度的最大值通過直接賦值形式傳遞分配給位于各像素參考點(diǎn)附近或其指定位置的每個(gè)像素。通過膨脹操作可自動(dòng)實(shí)現(xiàn)對(duì)圖像區(qū)域面積的形態(tài)學(xué)化處理。
在進(jìn)行腐蝕處理操作過程中,需要先計(jì)算核區(qū)域最小像素值的最小值。將一個(gè)核像素B與下一個(gè)新形成的圖像進(jìn)行卷積,計(jì)算在被核圖像B所覆蓋的像素區(qū)域范圍內(nèi)的最小像素值,并于最后一天將其像素重新放置在另一個(gè)參考點(diǎn)上。
當(dāng)執(zhí)行cvErode()函數(shù)時(shí),可以把其中任意一個(gè)點(diǎn)的p函數(shù)最小像素值設(shè)定為在其對(duì)應(yīng)核覆蓋的所有點(diǎn)中的最小值;處理膨脹時(shí),先將p點(diǎn)的像素值設(shè)定為其對(duì)應(yīng)核所覆蓋的所有點(diǎn)中像素的最大值:
(1)
(2)
(2)開運(yùn)算與閉運(yùn)算
開運(yùn)算和閉運(yùn)算的操作都可以被看作是“保留區(qū)域”的形式。其中,閉運(yùn)算帶來的顯著效果是消除了低于其鄰近點(diǎn)的所有孤立點(diǎn),而開運(yùn)算則恰恰是要消除這些高于其鄰近點(diǎn)的所有孤立點(diǎn)。morphologyEx()操作選項(xiàng)見表1所列。
(3)形態(tài)學(xué)梯度
形態(tài)學(xué)梯度操作能直接用于精確描述圖像亮度變化發(fā)生的劇烈程度。
gradient(srrc)=dilate(src)-erode(src)" " " " " " " " " (3)
1.2.2 圖像去噪
圖像去噪[7]包括中值、均值和高斯濾波等。
(1)中值濾波
中值濾波算法是非線性濾波算法,利用滑動(dòng)窗口(或稱為卷積核)在圖像上掃描,對(duì)窗口內(nèi)的像素排序,然后取其中位數(shù)作為該像素的值。中值濾波的優(yōu)點(diǎn)是能夠有效去除椒鹽噪聲等離群點(diǎn),但對(duì)于圖像中的細(xì)節(jié)和邊緣信息處理效果不佳。
(2)均值濾波
均值濾波法指圖像線性濾波算法,其通過滑動(dòng)窗口在一張圖像窗口上連續(xù)掃描,對(duì)圖像窗口內(nèi)出現(xiàn)的各像素值進(jìn)行加權(quán)平均濾波,然后再將其平均值轉(zhuǎn)換后作為當(dāng)前該窗口像素的值。
(3)高斯濾波
高斯濾波是另一種線性濾波算法,其通過滑動(dòng)窗口在圖像表面上掃描,對(duì)該窗口內(nèi)掃描的每個(gè)像素進(jìn)行加權(quán)和平均運(yùn)算。
1.2.3 圖像特征提取
圖像特征提取[8]包括邊緣檢測(cè)、霍夫圓檢測(cè)、輪廓提取等算法。
(1)邊緣檢測(cè)
邊緣檢測(cè)是圖像處理中常用的算法,其目的是在圖像中找到像素值發(fā)生劇烈變化的位置,從而得到圖像中物體的輪廓。Canny算法被廣泛應(yīng)用于邊緣檢測(cè),它通過高斯濾波可以有效提取出圖像的邊界信息,并且準(zhǔn)確識(shí)別出每一個(gè)像素的位置、大小、形狀以及方向,從而完成邊界檢測(cè)。最后根據(jù)梯度值的大小和方向確定邊緣位置。
(2)霍夫圓檢測(cè)
霍夫圓檢測(cè)是一種用于檢測(cè)圖像中圓形結(jié)構(gòu)的算法。對(duì)于每個(gè)像素點(diǎn),以其為圓心,在圖像中生成一系列半徑不同的圓,然后統(tǒng)計(jì)圓與圖像中實(shí)際存在的差距,最終確定圖像中圓的位置和半徑。霍夫圓檢測(cè)算法的優(yōu)點(diǎn)是能夠?qū)D像中的圓形結(jié)構(gòu)進(jìn)行較為準(zhǔn)確的檢測(cè),由于計(jì)算復(fù)雜性增加,它所消耗的計(jì)算資源也會(huì)相應(yīng)增加。
(3)輪廓提取
輪廓提取是一種用于提取圖像中物體輪廓的算法,其基本思想是通過對(duì)圖像進(jìn)行邊緣檢測(cè),然后對(duì)邊緣進(jìn)行連通性分析,最終得到物體的輪廓。輪廓提取常用的算法包括連通性分析、分水嶺算法、基于邊緣的分割算法等。其中,連通性分析是最為基礎(chǔ)的一種輪廓提取算法,其通過對(duì)邊緣進(jìn)行連通性分析,將邊緣分成若干個(gè)連通塊,從而得到物體的輪廓。
1.3 圖形界面模塊
圖形界面模塊主要實(shí)現(xiàn)了以下功能:
(1)進(jìn)度條:提供圖像處理進(jìn)度。
(2)工具欄:提供圖像增強(qiáng)、去噪、特征提取等功能的快捷按鈕。
(3)狀態(tài)欄:顯示當(dāng)前圖像的大小、分辨率等信息。
(4)主窗口:顯示圖像處理結(jié)果,并提供縮放、平移等操作。
除上述提到的功能外,圖形界面模塊還實(shí)現(xiàn)了以下功能:
(1)圖像預(yù)覽:在圖像處理過程中,用戶可以通過圖像預(yù)覽功能實(shí)時(shí)查看處理結(jié)果,方便用戶對(duì)處理結(jié)果進(jìn)行調(diào)整和優(yōu)化。
(2)圖像比較:軟件還實(shí)現(xiàn)了圖像比較功能,可以將原始圖像和處理后的圖像進(jìn)行對(duì)比顯示,方便用戶直觀了解處理效果。
(3)多窗口支持:軟件支持多窗口操作,用戶可以同時(shí)打開多張圖像進(jìn)行處理,提高了用戶的工作效率。
(4)快捷鍵支持:除工具欄提供的快捷按鈕外,軟件還支持快捷鍵操作,方便用戶進(jìn)行圖像處理任務(wù)的快速操作。
2 實(shí)現(xiàn)過程
軟件采用PyCharm2021.1.3X64[9-10],使用OpenCV 3.4.1版本。圖形界面模塊采用Qt 5.15.2實(shí)現(xiàn)。
圖像處理模塊的實(shí)現(xiàn)主要包括以下步驟:
(1)讀取圖像:通過OpenCV中的imshow函數(shù)可以查看處理過的圖像。
(2)處理圖像:根據(jù)用戶選擇的算法對(duì)圖像進(jìn)行處理。
(3)顯示圖像:使用OpenCV中的imshow函數(shù)顯示處理后的圖像。
圖形界面模塊的實(shí)現(xiàn)主要包括以下步驟:
(1)設(shè)計(jì)界面:使用Qt Designer設(shè)計(jì)圖形界面。
(2)連接信號(hào)和槽:使用Qt信號(hào)和槽機(jī)制連接控件和程序邏輯。
(3)實(shí)現(xiàn)功能:根據(jù)用戶操作實(shí)現(xiàn)形態(tài)學(xué)運(yùn)算、去噪、特征提取等功能。
圖像處理軟件如圖2所示。
3 實(shí)驗(yàn)結(jié)果
軟件經(jīng)過實(shí)驗(yàn)驗(yàn)證,具有較好的圖像處理效果和實(shí)用性。例如,在直方圖均衡化算法中,可以明顯看到圖像亮度增強(qiáng);在邊緣檢測(cè)算法中,可以清晰識(shí)別出圖像的邊緣;在特征提取算法中,可以有效提取出圖像的邊緣和輪廓。同時(shí),軟件的圖形界面友好、操作簡(jiǎn)單,方便用戶進(jìn)行圖像處理操作。處理結(jié)果如圖3、圖4、圖5所示。
4 結(jié) 語
文中介紹了一種基于OpenCV的圖像處理軟件設(shè)計(jì)方案,該軟件可以對(duì)圖像進(jìn)行形態(tài)學(xué)運(yùn)算、去噪和特征提取等操作,并且具有友好的圖形界面。該軟件的優(yōu)點(diǎn)在于它可以提高圖像質(zhì)量,使得圖像更加清晰、明亮和易于分析。實(shí)驗(yàn)結(jié)果表明,該軟件具有較好的圖像處理效果和實(shí)用性,可以滿足大多數(shù)圖像處理任務(wù)需求。
未來,我們將繼續(xù)完善該軟件的功能,如在軟件中增加如圖像分割、目標(biāo)檢測(cè)[10]等功能,以滿足不同領(lǐng)域的應(yīng)用需求。同時(shí),我們也將努力提高軟件的穩(wěn)定性,以確保它可以在不同的操作系統(tǒng)和硬件上運(yùn)行。
參考文獻(xiàn)
[1]陳天華.數(shù)字圖像處理[M].北京:清華大學(xué)出版社,2007.
[2]張瑞,焦曉瓊.基于OpenCV的圖像處理技術(shù)在國(guó)畫中的應(yīng)用[J].自動(dòng)化與儀器儀表,2019,39(12):34-43.
[3]李曉莎,林森.基于Python+OpenCV的車牌識(shí)別技術(shù)的研究[J].數(shù)字技術(shù)與應(yīng)用,2019,37(6):95-97.
[4]陸文周. Qt5開發(fā)及實(shí)例[M].北京:電子工業(yè)出版社,2008.
[5]常奇峰.基于VC++的數(shù)字圖像處理軟件[D].南京:南京航空航天大學(xué),2010.
[6]賀東霞,李竹林,王靜.淺談數(shù)字圖像處理的應(yīng)用與發(fā)展趨勢(shì)[J].延安大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,32(12):18-21.
[7]STEGER C,ULRICH M,WIEDEMANN C.機(jī)器視覺算法與應(yīng)用[M].楊少榮,吳迪靖,段德山,譯.北京:清華大學(xué)出版社,2008.
[8]黃凱奇,任偉強(qiáng),譚鐵牛.圖像物體分類與檢測(cè)算法綜述[J].計(jì)算機(jī)學(xué)報(bào),2014,37(6):1225-1240.
[9]王娜,李霞.一種新的改進(jìn)Canny邊緣檢測(cè)算法[J].深圳大學(xué)學(xué)報(bào),2005,22(2):149-153.
[10]劉瑞禎,于仕琪.OpenCV教程基礎(chǔ)篇[M].北京:北京航空航天大學(xué)出版社,2007.
作者簡(jiǎn)介:李振杰(1999—),男,碩士在讀,研究方向?yàn)閿?shù)字圖像處理。
臧春華(1963—),男,碩士,教授,碩士研究生導(dǎo)師,研究方向?yàn)閺?fù)雜系統(tǒng)建模與控制、智能測(cè)控技術(shù)。
蘇寶玉(1987—),男,碩士,控制科學(xué)工程師,研究方向?yàn)楣I(yè)過程實(shí)時(shí)優(yōu)化與模型預(yù)測(cè)控制。
陳香歸(1997—),男,碩士,控制科學(xué)工程師,研究方向?yàn)榭刂瓶茖W(xué)。