
摘 要 本論文首先簡要介紹了數字圖像處理技術的發展歷程、研究內容與應用領域,最后重點介紹了數字圖像處理技術在MATLAB中的具體應用,通過邊緣檢測試驗在MATLAB上運行程序代碼得到運行結果,對比圖像處理前后異同可以加深對這門課程的理解,為以后在學習和工作中應用這門理論打下堅實的基礎。
關鍵詞 數字圖像處理技術 MATLAB程序代碼 異同
一、數字圖像處理技術簡介
數字圖像處理的發展與計算機以及硬件技術的發展是緊密聯系的, 20世紀60年代到80年代中期,這個時期的圖像處理系統采用機箱式結構;20世紀80年代中期~20世紀90年代初期,這個階段的主要特點是小型化,采用插卡式,采用雙屏操作方式;從20世紀90年代開始,隨著運算能力很強的數字信號處理器(DSP)的問世,使現代圖像處理系統進入了和計算機緊密結合的全數字階段。
數字圖像處理技術主要研究的內容:圖像變換、圖像編碼壓縮、圖像增強和復原、圖像分割、圖像分類(識別)等,廣泛應用在遙感探測、生物醫學、交通運輸、安全檢測等領域。
二、邊緣檢測試驗在數字圖像處理技術上的具體應用
將數字圖像處理程序代碼在MATLAB軟件上運行并得到運行結果,對比圖像處理前后異同點,加深對數字圖像處理技術理論知識的理解。下面通過實驗來看一下數字圖像處理技術在MATLAB上的具體應用。
(1)邊緣檢測原理簡介
邊緣檢測是圖像處理和計算機視覺中的基本問題,邊緣檢測的目的是標識數字圖像中亮度變化明顯的點。圖像屬性中的顯著變化通常反映了屬性的重要事件和變化。 這些包括豍深度上的不連續、豎表面方向不連續、豏物質屬性變化和豐場景照明變化。邊緣檢測是圖像處理和計算機視覺中,尤其是特征提取中的一個研究領域。
(2)邊緣檢測的檢測方法
有許多用于邊緣檢測的方法, 他們大致可分為兩類:基于搜索和基于零交叉。
基于搜索的邊緣檢測方法首先計算邊緣強度, 通常用一階導數表示, 例如梯度模,然后,用計算估計邊緣的局部方向, 通常采用梯度的方向,并利用此方向找到局部梯度模的最大值。
基于零交叉的方法找到由圖像得到的二階導數的零交叉點來定位邊緣。 通常用拉普拉斯算子或非線性微分方程的零交叉點。
濾波做為邊緣檢測的預處理通常是必要的,通常采用高斯濾波。
(3)邊緣檢測實驗代碼及其運行結果
img=imread('C:\Documents and Settings\Administrator\桌面\5.jpg'); %讀入圖像
subplot(2,4,1);
img=rgb2gray(img);
imshow(img);title('原始圖像');
I=im2double(img);
%Roberts算子%
x_mask=[1 0;0 -1];
y_mask=rot90(x_mask);
dx=imfilter(I,x_mask);
dy=imfilter(I,y_mask);
grad=sqrt(dx.*dx+dy.*dy);
grad=mat2gray(grad);
level=graythresh(grad);
BW=im2bw(grad,level);
subplot(2,4,2);
imshow(BW);
title('Roberts算子');
%Prewitt算子%
y_mask=[-1 -1 -1;0 0 0;1 1 1];
x_mask=y_mask';
dx=imfilter(I,x_mask);
dy=imfilter(I,y_mask);
grad=sqrt(dx.*dx+dy.*dy);
grad=mat2gray(grad);
level=graythresh(grad);
BW=im2bw(grad,level);
subplot(2,4,3);
imshow(BW);
title('Prewitt算子');
%Sobel算子%
y_mask=[-1 -2 -1;0 0 0;1 2 1];
x_mask=y_mask';
dx=imfilter(I,x_mask);
dy=imfilter(I,y_mask);
grad=sqrt(dx.*dx+dy.*dy);
grad=mat2gray(grad);
level=graythresh(grad);
BW=im2bw(grad,level);
subplot(2,4,4);
imshow(BW);
title('Sobel算子');
%Laplacian算子
mask=[0 -1 0;-1 4 -1;0 -1 0];
dx=imfilter(I,mask);
grad=mat2gray(dx);
level=graythresh(grad);
BW=im2bw(grad,level);
subplot(2,4,5);
imshow(BW);
title('Laplacian算子');
%LoG算子%
mask=[0 0 -1 0 0;0 -1 -2 -1 0;-1 -2 16 -2 -1;0 -1 -2 -1 0;0 0 -1 0 0];
dx=imfilter(I,mask);
grad=mat2gray(dx);
level=graythresh(grad);
BW=im2bw(grad,level);
subplot(2,4,6);
imshow(BW);
title('LoG算子');
%Canny算子%
BW1=edge(I,'canny');
subplot(2,4,7);
imshow(BW1);
title('Canny算子');
三 、結語
數字圖像處理技術具有再現性好,處理精度高,適用面寬,靈活性好等優點。隨著電子計算機的不斷發展和人們對數字圖像處理越來越高的重視,數字圖像處理技術正在向處理算法更優化,處理速度更快,處理后的圖像清晰度更高的方向發展,從而最終實現實現圖像的智能生成、處理、識別和理解。借助MATLAB軟件運行簡單的數字圖像處理程序,可以對一些簡單的圖像進行變換,對比前后圖像變化,加深對所學的理論知識的理解,從而為將來繼續深入學習打下堅實的基礎。
參考文獻:
[1]章毓晉.圖象處理和分析[M].北京:清華大學出版社,1999 .
[2]郎銳.數字圖像處理學[M].北京:希望電子出版社,2002.
[3]周明全.圖像圖形技術與應用進展[M].北京: 北京師范大學出版社, 2008:71-72,129-132,149-150.
[4]岡薩雷斯.數字圖像處理[M].電子工業出版社,2003.