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