林 森,陶志勇,張沛泓,徐 維
(遼寧工程技術大學 電子與信息工程學院,遼寧 葫蘆島 125105)
數字圖像處理技術最早出現在20世紀中期,伴隨著計算機的發展,圖像處理技術也慢慢地發展起來。最近幾十年來,許多學者在圖像處理方面進行了大量的研究工作并且取得了豐碩的成果,使數字圖像處理技術迅猛發展,達到了新的高度,在各領域都得到了更加廣泛的應用和關注[1]。
作為一門多學科交叉、理論性和實踐性都很強的綜合性課程,《數字圖像處理》的教學目的是使學生系統掌握數字圖像處理的基本概念、基本原理、實現方法和實用技術,了解數字圖像處理基本應用和當前國內外的發展方向。要求學生通過該課程學習,具備解決圖像處理應用問題的初步能力,為在計算機視覺、圖像和視頻通信、模式識別等領域從事研究與開發打下扎實的理論基礎[2]。
使用Matlab對圖像進行處理是當前領域的一個必然趨勢,Matlab數組中的每一個元素對應圖像中相應位置的每一個像素值,由于圖像是由灰度或者是彩色數據構成的,那么對應像素值的元素就形成了一個與圖像大小相同的矩陣,從而可利用Matlab自身強大的矩陣計算能力來實現對圖像的數字處理[3]。
但是,傳統的基于命令行或者腳本文件的編程方法教學直觀性較差,學生理解起來比較困難,而Matlab恰恰為用戶設計圖形界面提供了一個高效、方便的集成環境,因此,本文主要以GUI為平臺設計圖像算法測試系統,有助于學生更好地理解相應的圖像處理方法。
本系統主要是利用Matlab提供的GUI平臺,來設計一個面向對象的可視化操作界面,然后對這個界面中所列出的功能進行后臺回調函數的編寫,從而完成常用圖像處理功能的設計,總體方案如圖1所示。
系統設計的主要步驟:①明確系統所要實現的主要功能,應該具有哪些模塊;②繪出基本的用戶界面草圖,并對其進行修改,最終確定一個方案;③根據最終確定的方案,利用Matlab GUI制作用戶操作界面及其他菜單項目;④編寫界面及其菜單里每個功能的回調程序,并且逐項進行功能檢測。按照最終確定方案的要求和系統界面設計的布局,該系統應主要包括文件、編輯、圖像旋轉、圖像濾波、邊緣檢測、亮度調節、特殊處理等幾大模塊。其具體的功能模塊如圖2所示。GUI系統界面如圖3所示。

圖1 總體方案

圖2 系統功能框架圖
圖像類型的相互轉換有很多種,這里圖像類型相互轉換的實現主要是利用Matlab提供的圖像類型轉換函數。設B為轉換后輸出圖像類型,A為輸入圖像類型,則一般有如下轉換:①灰度-二值,利用dither函數來實現,這里用到的是抖動法,B=dither(A);②RGB-灰度,利用rgb2gray函數實現,B=rgb2gray(A);③灰度-索引,利用gray2ind函數實現,[B,map]=gray2ind(A,n),按照指定的灰度級數n和顏色圖map進行轉換;④二值-索引,轉換的實現與灰度-索引的轉換相同,使用同一個調用函數,在這里n表示的是指定顏色圖map的顏色種類;⑤索引-RGB,利用ind2rgb函數實現,B=ind2rgb(A,map),將矩陣A和對應的顏色圖map轉換成RGB圖像;⑥矩陣-灰度,利用mat2gray函數實現,B=mat2gray(A,[l,h]),按照指定的取值區域[l,h]將矩陣A轉換為圖像B.如果不指定取值區間,將默認區間為[0,1]。圖4給出了一個彩色圖像到灰度圖像的轉換示例。

圖3 GUI系統界面

圖4 灰度轉換

圖5 直方圖均衡化
圖像增強是數字圖像處理過程中經常采用的一種方法,目的是改善視覺效果或者便于人和機器對圖像的理解和分析,根據圖像的特點或存在的問題采取的簡單改善方法或加強特征的措施就稱為“圖像增強”。目前,圖像增強技術根據其處理的空間不同,可分為空域法和頻域法兩大類,前者根據圖像所在的像素空間進行處理,后者是通過圖像變換后在頻域上間接進行。直方圖均衡化是常用的圖像空域增強技術,圖5給出了直方圖均衡化的示例,主要采用histeq()函數。
圖像濾波,即在盡量保留圖像細節特征的條件下對目標像的噪聲(包括高斯噪聲、椒鹽噪聲、隨機噪聲)進行抑制,是圖像預處理中不可缺少的操作,其處理效果的好壞將直接影響到后續圖像處理和分析的有效性和可靠性。主要通過函數imnoise()來加入噪聲,然后medfilt2做中值濾波。圖6給出了具體示例。

圖6 中值濾波

圖7 邊緣檢測
邊緣檢測技術在數字圖像處理中顯得非常重要,這是因為邊緣是所要提取目標和背景的界線,只有把邊緣提取出來,才能更好地把目標和背景分離開。同時,圖像分割的基礎正是邊緣檢測技術。在圖像中,邊界將內部特征屬性不一致的區域劃分開。邊緣檢測技術正是利用了邊界的這一特點來提取邊緣的。邊緣檢測的本質就是檢測圖像特征中灰度、顏色和紋理發生變化的位置。為了提取區域邊界,可以對圖像直接運用一階微分算子或二階微分算子,然后根據各像素點處的微分幅值及其他附加條件判定其是否為邊界點。函數導數反映圖像灰度變化的程度,一階導數的局部極大值和二階導數的過零點都是圖像灰度變化極大的地方,這里主要利用了edge()函數。圖7給出了邊緣檢測的示例。
近年來,隨著圖像應用領域的拓寬,圖像處理技術更是取得了前所未有的矚目成果,特別是深度學習、人工智能等技術的完善和發展,都展示了計算機視覺及數字圖像處理技術應用的廣闊前景。Matlab軟件功能強大,是目前圖像處理教學和科研中應用最為廣泛的軟件,但傳統的基于Matlab命令行或者腳本文件的圖像處理直觀性較差,教學效果有限,且功能擴展較為煩瑣。本文基于Matlab中的GUI功能設計了圖像處理輔助教學系統,可任意添加和刪除相關功能模塊,界面簡潔,操作簡單,包括了圖像處理中基本的處理技術,能夠更加直觀地展示圖像處理的效果,激發了學生的學習興趣,調動了學生的積極性,提高了學習效率,同時也加深了 學生對理論的理解,從而使教學效果得到了顯著增強,具有 非常積極的意義。
[1]肖志勇,劉建軍,宋曉寧,等.《數字圖像處理》課程教學改革探索研究[J].教育教學論壇,2017(3):86-87.
[2]莫建文,張彤,袁華,等.深度學習在圖像處理技術課程教學實踐中的應用探討[J].教育教學論壇,2016(9):115-116.
[3]謝鳳英.數字圖像處理及應用[M].北京:電子工業出版社,2016.