李晶路 付云寶 胡松
摘 要:MATLAB是當(dāng)今最強(qiáng)大的一款科技應(yīng)用軟件之一。本文簡單介紹了利用MATLAB進(jìn)行圖像處理的特點,并舉例說明了MATLAB在圖像處理中圖像增強(qiáng)和邊緣檢測常用的一些方法。
關(guān)鍵詞:MATLAB;圖像增強(qiáng);邊緣檢測
圖像處理是人類獲取圖像內(nèi)部所包含的信息的重要手段。它主要是指利用計算機(jī)將圖像轉(zhuǎn)換成數(shù)字信號并進(jìn)行一系列處理的過程。利用圖像處理技術(shù)能夠使人們獲得任意波長上所測得的圖像,當(dāng)今圖像處理技術(shù)已經(jīng)運(yùn)用到各個領(lǐng)域內(nèi),尤其是在航空航天、生物制藥、工程檢測、軍事通訊、工業(yè)生產(chǎn)等領(lǐng)域已經(jīng)取得了一系列的重要成就。
1 MATLAB圖像處理的特點
MATLAB是由美國MathWorks公司推出的一款主要用于數(shù)學(xué)計算和圖像處理的軟件。經(jīng)過多年的實踐應(yīng)用MATLAB已經(jīng)成為目前工程中最重要的圖像處理軟件。
MATLAB圖像處理工具箱是利用MATLAB強(qiáng)大的數(shù)學(xué)計算能力,為廣大用戶提供了一套全方位的參照標(biāo)準(zhǔn)算法和圖形工具,用于進(jìn)行圖像處理、分析、可視化和算法開發(fā)。MATLAB圖像處理工具箱函數(shù)主要包括以下15類:(1)圖像顯示函數(shù);(2)圖像文件輸入、輸出函數(shù);(3)圖像幾何操作函數(shù);(4)圖像像素值及統(tǒng)計函數(shù);(5)圖像分析函數(shù);(6)圖像增強(qiáng)函數(shù);(7)線性濾波函數(shù);(8)二維線性濾波設(shè)計函數(shù);(9)圖像變換函數(shù);(10)圖像鄰塊及塊操作函數(shù);(11)二值圖像操作函數(shù);(12)基于區(qū)域的圖像處理函數(shù);(13)顏色圖像操作函數(shù);(14)顏色空間轉(zhuǎn)換函數(shù);(15)圖像類型和類型轉(zhuǎn)換函數(shù)。
MATLAB圖像處理工具箱能提供的圖像處理非常的廣泛,主要包括:圖像數(shù)據(jù)的讀取和保存、圖像的顯示、創(chuàng)建用戶接口,實現(xiàn)交互操作、圖像的幾何變換、圖像濾波器設(shè)計及線性濾波、形態(tài)學(xué)圖形處理、圖像域變換、圖像增強(qiáng)、圖像分析、圖像合成、圖像配準(zhǔn)、圖像分割、圖像ROI處理、圖像恢復(fù)、彩色圖像處理、鄰域和塊處理等。
利用圖像處理工具箱,人們能夠在不必考慮圖像的格式、內(nèi)容、讀寫、顯示等這些圖像自身包涵的細(xì)節(jié),把主要的精力放在對圖像算法的研究上,進(jìn)而能夠大幅度的提高工作效率。并且,我們在對這些算法進(jìn)行測試時既能夠得到理想的數(shù)據(jù),又能得到直觀的圖示。
下面將通過一些例子來簡單的介紹利用MATLAB進(jìn)行數(shù)字圖像處理的方法。
2 圖像增強(qiáng)
2.1 直方圖均衡實現(xiàn)圖像增強(qiáng)
圖像增強(qiáng)的目的是運(yùn)用當(dāng)前的技術(shù)去改善圖像的視覺效果進(jìn)而將圖像轉(zhuǎn)化成一種更適合人眼觀察和機(jī)器自動分析的形式。直方圖均衡化是常用的一種圖像增強(qiáng)方法。采用直方圖修整可以使原圖像灰度集中的區(qū)域拉開或使灰度分布均勻,增大反差,使圖像的細(xì)節(jié)更加清晰,進(jìn)而達(dá)到增強(qiáng)圖像的目的。
下面是用MATLAB對圖像“coins”進(jìn)行的直方圖均衡化增強(qiáng)效果對比圖,如圖1所示。
具體對應(yīng)的MATLAB語言實現(xiàn)的源程序以及主要注解如下
I=imread('coins.png');%讀入要處理的圖像文件。
M=histeq(I,64);%對圖像進(jìn)行直方圖均衡化處理,指定均衡化后的灰度為64。
subplot(2,2,1),imshow(I),title('原始圖像');%顯示原始圖像。
subplot(2,,2,2),imhist(I,64),title('原始直方圖');%顯示原始直方圖。
subplot(2,2,3),imshow(M),title('直方圖均衡化后的圖像');%顯示均衡化后的圖像。
subplot(2,2,4),imhist(M,64),title('直方圖均衡化后的直方圖');%顯示均衡化后的直方圖。
通過對兩幅圖的對比可以很清晰的看出進(jìn)行均衡化的圖像變得清晰,直方圖的形狀更加理想。
2.2 非線性空域濾波實現(xiàn)圖像增強(qiáng)
空域濾波是空域圖像增強(qiáng)的一種常用的方法??沼驗V波是對圖像中每個像素為中心的鄰域進(jìn)行一系列的運(yùn)算,最終將得到的結(jié)果替換原來的像素值??沼驗V波一般分為線性空域濾波和非線性空域濾波。線性平均濾波是一種最常用的線性空域濾波。線性平均濾波實際是一種低通濾波,信號的低頻部分通過,阻止高頻部分通過。由于圖像的邊緣處于高頻部分,因此線性平均濾波后,會造成圖像邊緣的模糊。非線性空域濾波主要包括中值濾波、順序統(tǒng)計濾波和自適應(yīng)濾波等。中值濾波能夠保護(hù)邊緣的非線性圖像平滑。
下面是用MATLAB對圖像“coins”進(jìn)行的中值濾波增強(qiáng)效果對比圖,如圖2所示。
具體對應(yīng)的MATLAB語言實現(xiàn)的源程序以及主要注解如下
I=imread('coins.png');%讀入文件
M=histeq(I,64)
J=imnoise(M,'salt & pepper',0.02);%添加椒鹽噪聲
subplot(2,3.1),imshow(I),title('原始圖像');%顯示原圖像
subplot(2,3,2),imshow(J),title('添加椒鹽噪聲后的圖像');%顯示添加椒鹽噪聲后的圖像
k1=medfilt2(J);%進(jìn)行3*3模板平滑濾波
k2=medfilt2(J,[5,5]);%進(jìn)行5*5模板平滑濾波
k3=medfilt2(J,[7,7]);%進(jìn)行7*7模板平滑濾波
k4=medfilt2(J,[9,9]);%進(jìn)行9*9模板平滑濾波
subplot(2,3,3),imshow(k1),title('3*3模板中值濾波'):%顯示3*3模板中值濾波
subplot(2,3,4),imshow(k2),title('5*5模板中值濾波');%顯示5*5模板中值濾波
subplot(2,3,5),imshow(k3),title('7*7模板中值濾波');%顯示7*7模板中值濾波
subplot(2,3,6),imshow(k4),title('9*9模板中值濾波');%顯示9*9模板中值濾波
通過對以上圖片的對比,經(jīng)過MATLAB中值濾波處理后的圖像輪廓更加清晰。不同的模板得到的清晰度也有所差別。
3 邊緣檢測
邊緣檢測是利用物體和背景在某種圖像特征上的差異來實現(xiàn)的。圖像的邊緣中包含許多對圖像分析,目標(biāo)識別有價值的信息,合理的利用物體和背景在某種圖像特征的差異能夠準(zhǔn)確的將目標(biāo)和背景區(qū)分開來。邊緣檢測包含兩個基本內(nèi)容:一是抽取反映灰度變化的邊緣點;二是剔除某些邊界點或填補(bǔ)邊界間斷點,并將這些邊緣連接成完整的線。常見的邊緣檢測方法有:微分算子、Canny算子和LOG算子等。常用的微分算子有Sobel算子、Roberts算子Prewit算子等。
Canny算子邊緣檢測
Canny算子的具有低誤碼率、高定位精度和抑制虛假邊緣等優(yōu)點。
LOG算子邊緣檢測
拉普拉斯算子是一種不依賴于邊緣方向的二階微分算子,它具有旋轉(zhuǎn)不變的性質(zhì),在圖像處理中經(jīng)常被用來提取圖像的邊緣。
下面是用MATLAB對圖像“l(fā)ena”進(jìn)行的LOG算子邊緣檢測
下面是用MATLAB對圖像“l(fā)ena”進(jìn)行的Canny算子邊緣檢測,如圖3所示
具體對應(yīng)的MATLAB語言實現(xiàn)的源程序以及主要注解如下
I=imread('lena.jpg');%讀入文件
subplot(2,2,1),imshow(I),title('原始圖像')%顯示原始圖像
I1=rgb2gray(I);%轉(zhuǎn)化灰度圖像
subplot(2,2,2),imshow(I1),title('灰度圖像');%顯示灰度圖像
I2=edge(I1,'canny');%canny算子檢測
subplot(2,2,3),imshow(I2),title('canny算子分割結(jié)果');%顯示canny算子邊緣檢測圖像
I3=edge(I1,'log');%log算子邊緣檢測。
subplot(2,2,4),imshow(I3),title('log算子分割結(jié)果');%顯示log算子邊緣檢測圖像
4 結(jié)論
利用MATLAB進(jìn)行圖像處理,操作方便,簡單快捷,能夠快速、高效得到理想的預(yù)期效果。其中圖像處理工具箱幾乎包含了所以的常用的圖像處理方法,同時工具箱也具有開放性,能夠讓人們直接利用現(xiàn)有的方法進(jìn)行圖像處理,也可以更改代碼進(jìn)而改進(jìn)函數(shù)功能。本文只是簡單的介紹了一些例子,MATLAB本身還包含一系列復(fù)雜的圖像處理命令??傊?,MATLAB作為一個強(qiáng)大的數(shù)據(jù)處理軟件為我們在圖像處理方向的研究提供了極大的方便。
[參考文獻(xiàn)]
[1]高成.MATLAB圖像處理與應(yīng)用[M].北京.國防工業(yè)出版社,2007,04.
[2]楊丹,趙海濱,龍哲.MATLAB圖像處理實例詳解[M].北京:清華大學(xué)出版社,2013,07.
[3]王秋雨.MATLAB圖像處理的幾個應(yīng)用實例[J].福建電腦.2011,11, 6-7.
[4]于廣州,楊秀娟.MATLAB在圖像處理中的應(yīng)用[J].中國校外教育 2009,02,166-167.
[5]趙小川.MATLAB圖像處理:程序?qū)崿F(xiàn)與模塊化仿真[M].北京,北京航空航天大學(xué)出版社,2014,01.