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