(廣東省地質測繪院 廣東廣州 510800)
MATLAB是近幾年來國內外使用最為廣泛的軟件之一,其語法結構簡單.具有極強的數(shù)值計算、數(shù)據(jù)分析、圖形繪制及圖像處理等功能,具有高質量的圖形可視化效果和強大的界面設計能力,因而在數(shù)字圖像處理中有著其他語言所無法比擬的優(yōu)勢。
MATLAB 語言具有如下特點:
⑴編程效率高
MATLAB 語言通俗地稱為演算紙式科學算法語言,用MATLAB 編寫程序猶如在演算紙上排列出公式與求解問題,編寫簡單,效率高[1]。
⑵用戶使用方便
MATLAB 語言集編輯、編譯、連接和執(zhí)行為一體,調試程序手段豐富,速度快。它能在同一畫面上進行靈活操作、快速排除輸入程序中的各種錯誤,從而加快了用戶編寫、修改和調試程序的速度[2]。
⑶擴充能力強
MATLAB 語言在進行復雜的數(shù)學運算時可以直接調用庫函數(shù),而且用戶文件也可作為MATLAB的庫函數(shù)來調用。所以用戶可以根據(jù)自己的需要方便地建立和擴充新的庫函數(shù),提高MATLAB的使用效率和擴充功能。
⑷語句簡單易懂,內涵豐富博大
MATLAB 語言中最基本最重要的成分是函數(shù),其一般形式為[a,b,….]=fun(x,y,z…),即一個函數(shù)由函數(shù)名fun,輸入變量(x,y,z,…)和輸出變量[a,b,c…]組成。同一函數(shù)名,不同數(shù)目的輸入變量和輸出變量,代表著不同的含義。這不僅使MATLAB的庫函數(shù)功能更豐富,而且大大減少了需要的磁盤空間,使得MATLAB 編寫的M 文件簡單短小卻高效[3]。
⑸高效方便的矩陣和數(shù)組運算
MATLAB 語言像Basic、Fortran 和C 語言一樣規(guī)定了矩陣的一系列運算符,它不需定義數(shù)組的維數(shù),并給出矩陣函數(shù)、特殊矩陣專門的庫函數(shù),使之在求解諸如信號處理、建模、系統(tǒng)識別、控制、優(yōu)化等領域的問題時,顯得極為簡捷、高效。
⑹方便的繪圖功能
MATLAB 有一系列繪圖函數(shù)(命令),通過調用不同的繪圖函數(shù)(命令),就能在圖上標出圖題、XY軸標注,格(柵)繪制[4]。
某區(qū)域衛(wèi)星圖片如圖1所示,已知最北端到最南端距離為382km,求該區(qū)域面積和東西間的最大距離。
圖1 某區(qū)域衛(wèi)星圖片
在MATLAB中讀入該圖像后,其方法步驟為:
(1)將圖像進行RGB模型到H-S-V模型的變換,并統(tǒng)計出生成的H 分量圖的直方圖,通過graythresh()函數(shù)選取全局閾值,以此作為二值化的閾值。將大于閾值的亮度賦予值1,小于閾值的亮度值賦予0,再對生成的二值圖像進行數(shù)學形態(tài)學處理,先進行以去除噪聲。最后將二值圖像存儲為B(i,j)待用。
(2)從已存儲的二值圖像的首個像元開始進行,從上到下,從左至右的逐行掃描,當遇到第一個像素值為1時,則記錄下該點矩陣坐標(k,t),并結束掃描。
(3)從已存儲的二值圖像的最后一個像元開始進行,從下到上,從右至左的逐行掃描,當遇到像素值為1時,則記錄下該點矩陣坐標(m,n),并結束掃描。
(4)由于所給的最北端到最南端距離為歐幾里得距離(Euclidian distance),如圖2所示,故Z=設每個像元的分辨率為d,S=d*Z=將k,t,m,n S=382km,代入該式,可得分辨率d。
圖2 像元圖
(5)計算東西間的最大距離;從1 行開始,從左至右,從上至下掃描;當i 行遇到一個像素值為1時,定義的像素點1的計數(shù)變量x 加1,然后將本行x 記錄的1 像元的個數(shù)賦給行記錄一維矩陣l (i),將計數(shù)變量x 清零,記錄第i 行的1 像元個數(shù)。下一行重復掃描,直到全圖掃描完時結束掃描,選取f=max[l(i)],則東西間的最大距離
Distance=f*d。
(6)計算區(qū)域面積;Area=d2*bwarea(A4)程序代碼為:
Z=((k-m)^2+(t-n)^2)^0.5;%圖像上最北邊到最南邊點的距離
(7)結果
各個步驟的結果如下列圖所示:
圖3 從RGB 空間變換到HSV 空間的彩色圖像
圖4 HSV 空間的H 分量圖像
運行算出的該區(qū)域的面積為35346km2、東西間的最大距離為137.54km。而真實的該區(qū)域面積約35700km2,南北最長約394km,東西最寬約144 km,結果比較相對較好。
圖5 HSV 空間的H 分量的直方圖
圖6 采用谷底法二值化后的圖像
圖7 對二值化圖像進行一次開運算和一次閉運算后的圖像
圖8 運行結果
采用MATLAB 實現(xiàn)圖像處理、分析和計算,通過幾條簡單的MATLAB 命令就可完成較多的高級計算機語言才能完成的任務,簡潔明了。大多數(shù)圖像處理模型是可以通過使用MATLAB的基本函數(shù)的編程來實現(xiàn),在MATLAB中的工具箱中有許多函數(shù)可運用圖像處理技術,因此在圖像處理中使用MATLAB 語言可以快速實現(xiàn)圖像的模擬仿真,較大地提高工作效率。
[1]張培強.MATLAB 語言演算紙式的科學工程計算語言[M].合肥:中國科學技術大學出版社,1995.
[2]朱富麗.MATLAB 在數(shù)字圖像處理技術中的應用[J].計算機光盤軟件與應用,2010,4:10-11.
[3]鄭繼剛.MATLAB 在數(shù)字圖像處理中的應用[J].保山師專學報,2009,28(5):76-79.
[4]王蔚.MATLAB 在數(shù)字圖像處理技術中的應用[J].寧波職業(yè)技術學院學報,2006,10(5):30-32.
[5]趙英時.遙感應用分析原理與方法[M].北京:科學出版社,2003.
[6]蘇金明,阮沈勇.MATLAB 實用教程[M].北京:電子工業(yè)出版社,2005.
[7]蘇金明,王永利.MATLAB7.0 使用指南[M].北京:電子工業(yè)出版社,2004.