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