計(jì)算機(jī)視覺_圖像處理 2009-12-06 16:01:34 閱讀229 評(píng)論0 字號(hào):大中小 訂閱
1)位圖:是根據(jù)圖像的尺寸和分辨率創(chuàng)建和保存的圖像,由掃描輸入。
2)矢量圖:使用專用軟件繪制的,以數(shù)學(xué)方程式的方式保存的圖像,所以矢量圖的清晰度與分辨率無關(guān)。
3)象素:是圖像在計(jì)算機(jī)顯示中的度量單位,可以變化,可大可小。
4)分辨率:是用于度量圖像在顯示器中清晰程度的一個(gè)參數(shù),分辨率越高,圖像越清晰。分辨率是與象素相關(guān)的,即單位長(zhǎng)度上的象素?cái)?shù)就是分辨率。由此可知,分辨率越高,象素的幾何尺寸就越小。
5)圖像文件的大?。褐敢环鶊D像在計(jì)算機(jī)中保存時(shí)所占用的磁盤空間,其大小與所用的顏色模式有關(guān)?;叶葓D像中的每一個(gè)灰度象素只占用一個(gè)字節(jié)(8位),RGB圖像中紅、綠、藍(lán)各占用一個(gè)字節(jié)。另外,圖像文件的大小也直接與其分辨率有關(guān),原因是當(dāng)分辨率增加時(shí),一幅圖像所包含的象素量急劇增加。
6)句柄:通俗地說就是對(duì)象的代號(hào)或標(biāo)志,它能使計(jì)算機(jī)方便地從眾多對(duì)象中找到所需要的對(duì)象并對(duì)之加以相應(yīng)的操作。MATLAB中的句柄圖形對(duì)象包括軸、文本、菜單、控制框、圖像等。
2.2 MATLAB 圖像文件格式簡(jiǎn)介
針對(duì)MATLAB的數(shù)字圖像處理功能,我們討論它可以處理的幾種圖像文件格式:
A)PCX格式??商幚?font style="LINE-HEIGHT: normal" face="Times New Roman">1、4、8、16、24位等圖像數(shù)據(jù)。文件內(nèi)容包括文件頭 、圖像數(shù)據(jù)、擴(kuò)展調(diào)色板數(shù)據(jù)。
B)BMP格式,即位圖文件,整幅圖可視為一個(gè)數(shù)字矩陣。它包括1、4、8、24位非壓縮圖像,8位RLE(行程編碼)圖像。文件內(nèi)容包含文件頭、位圖信息數(shù)據(jù)塊和圖像數(shù)據(jù)。選擇BMP格式保存一幅灰度模式圖像時(shí),可選擇以Windows格式保存。而且在選中4位或8位位圖時(shí),還可選壓縮(RLE)項(xiàng),在用RLE方式壓縮保存后圖像將毫無損失。這是用得最廣的圖像格式之一,在本文中都對(duì)這種格式的圖像進(jìn)行操作。
C)HDF格式。有8位,24位光柵圖像數(shù)據(jù)集。
D)JPEG格式。是一種聯(lián)合圖像專家組的圖像壓縮格式,是目前所用對(duì)靜止灰度或彩色圖像的壓縮標(biāo)準(zhǔn)。它實(shí)際上定義了3種編碼系統(tǒng):
a.基于DCT的有損編碼基本系統(tǒng),可用于絕大多數(shù)壓縮場(chǎng)合;
b.用于高壓縮比、高精度或漸進(jìn)重建應(yīng)用的擴(kuò)展編碼系統(tǒng);
c.用于無失真應(yīng)用場(chǎng)合的無損系統(tǒng)。JPEG沒有規(guī)定文件格式、圖像分辨率或所用的彩色空間模型,這使它就有可能適用于MATLAB。
D)TIFF格式。處理1、4、8、24位非壓縮圖像,1、4、8、24位 packbit 壓縮圖像,1位CCITT壓縮圖像等。文件內(nèi)容包括:文件頭、參數(shù)指針表與參數(shù)域、參數(shù)數(shù)據(jù)表和圖像數(shù)據(jù)四部分。它是一種用途廣泛的文件格式,其特點(diǎn)是可移植性好,幾乎所有的掃描儀及在Windows、Macintosh平臺(tái)上常用的版面設(shè)計(jì)軟件都支持TIFF文件格式。以這種格式保存的圖像文件結(jié)構(gòu)比較復(fù)雜,在不壓縮存放時(shí)文件比較大。
E)XWD格式。1、8位Zpixmaps, Xybitmaps, 1位XYPixmaps。
F)TGA格式。處理1、4、8、16、24位非壓縮圖像和行程編碼圖像。文件包由5個(gè)固定長(zhǎng)度字段和3個(gè)可變長(zhǎng)度字段組成。
2.3 MATLAB圖像文件類型
根據(jù)數(shù)據(jù)矩陣和圖像象素點(diǎn)顏色的匹配關(guān)系,MATLAB中的圖像可分為三類:索引圖像、灰度圖像和RGB圖像。
1)索引圖像:它的數(shù)據(jù)信息包括一個(gè)數(shù)據(jù)矩陣和一個(gè)雙精度色圖矩陣,它的數(shù)據(jù)矩陣中的值直接指定該點(diǎn)的顏色為色圖矩陣中的某一種。色圖矩陣中,每一行表示一種顏色,每行有三個(gè)數(shù)據(jù),分別表示該種顏色中紅、綠、藍(lán)的比例情況,所有元素值都在[0,1]內(nèi)。
2)灰度圖像:它的數(shù)據(jù)矩陣中的元素值一般都在[0,1]或[0,255]之間,灰度圖像根據(jù)這些數(shù)據(jù)利用線性插值來和色圖中的顏色種類匹配。
3)RGB圖像:圖像中每個(gè)象素的顏色用三個(gè)數(shù)據(jù)來存儲(chǔ),分別指定紅、綠、藍(lán)三原色在象素顏色中的比例關(guān)系,組成一個(gè)三維數(shù)組。
2.4 MATLAB中圖像的存儲(chǔ)運(yùn)算和顯示方式
在MATLAB中,數(shù)值一般都采用double型(64位)存儲(chǔ)和運(yùn)算,為了節(jié)省存儲(chǔ)空間,MATLAB為圖像提供了特殊的數(shù)據(jù)類型uint8(8位無符號(hào)整數(shù)),以此方式存儲(chǔ)的圖像稱為8位型像。函數(shù)image能夠直接顯示8位圖像,但8位型數(shù)據(jù)和double型數(shù)據(jù)在image中意義不一樣,對(duì)于索引圖像,數(shù)據(jù)矩陣中的值指定該像素的顏色種類在色圖矩陣中的行數(shù)。當(dāng)數(shù)據(jù)矩陣中的值為0時(shí),表示用色圖矩陣中第一行表示的顏色繪制;當(dāng)數(shù)據(jù)矩陣中的值為1時(shí),表示用色圖矩陣中的第二行表示的顏色繪制該像素,數(shù)據(jù)與色圖矩陣中的行數(shù)總是相差1。所以,索引圖像double型和uint8型在顯示方法上沒有什么不同,只是8位數(shù)據(jù)矩陣的值和顏色種類之間有一個(gè)偏差1。調(diào)用格式均為image(x); colormap(map);對(duì)于灰度圖像,uint8表示范圍[0,255],double型表示范圍[0,1]??梢姡?font style="LINE-HEIGHT: normal" face="Times New Roman">double型和uint8型灰度圖像不一樣,二者轉(zhuǎn)換格式為:
I8=uint8 (round (I64*255));
I64=double (I8)/255;
反之,imread根據(jù)文件中的圖像種類作不同的處理。當(dāng)文件中的圖像為灰度圖像時(shí),imread把圖像存入一個(gè)8位矩陣中,把色圖矩陣轉(zhuǎn)換為雙精度矩陣,矩陣中每個(gè)元素值在[0,1]內(nèi);當(dāng)為RGB圖像時(shí),imread把數(shù)據(jù)存入到一個(gè)8位RGB矩陣中。
本軟件的處理統(tǒng)一針對(duì)BMP格式的灰度圖。在編程時(shí)圖像讀入與輸出均要求轉(zhuǎn)換為uint8型,中間運(yùn)算處理過程則要用double型。
2.5 從零開始學(xué)用MATLAB
MATLAB對(duì)于我來說是一門全新的語言,一般在編輯框中編程存盤后在命令框內(nèi)運(yùn)行,在Figure框中顯示圖像。在用它作數(shù)字圖像處理的過程中,最常碰到的問題有:
① 圖像讀入 imread (‘文件名.格式’,’格式’),必須是上文提過的MATLAB支持的7種格式之一,而用Photoshop制作的PSD圖像保存了所有通道和圖層的信息,不能直接用MATLAB來處理。顯示圖像用imshow (h) 語句,h 為圖像句柄;在一幅圖片中顯示子圖用subplot規(guī)定子圖的位置和大小,用subimage(h)輸出子圖。輸出圖像若需要永久保存,則可用imwrite (h,map, ’filename.bmp’,’bmp’), 寫入存儲(chǔ)器。注意在該語句前要設(shè)置調(diào)色板,即map=(gray(256))。
② 結(jié)構(gòu)化程序語句寫法不同于C語言。比如if, for 之后要用end 表示這一塊結(jié)束。有關(guān)條件的語句都不用加括號(hào),而用冒號(hào)來表示遞增,如
for i=1:3:10
表示 i從1以步長(zhǎng)3遞增到10,即做三次循環(huán)。
③ 要注意圖像格式的轉(zhuǎn)化。須知不同的圖像格式對(duì)應(yīng)不同的處理方式,如果處理與格式不符,將引起錯(cuò)誤。比如范例中的圖片lena256.bmp表現(xiàn)為灰度圖,但其實(shí)質(zhì)仍為RGB圖像。如果不用語句rgb2gray將其轉(zhuǎn)化為256級(jí)灰度圖,經(jīng)變換后圖像會(huì)變紅或變藍(lán)。
④ 數(shù)組的定義方式與C語言不同。由于C語言中含N個(gè)元素的一維數(shù)組A的下標(biāo)從0到N-1,數(shù)組定義為A[N];同樣的數(shù)組,MATLAB規(guī)定的下標(biāo)是從1到N,所以不能再用A[N]來表示數(shù)組,只能用它表示數(shù)組的第N個(gè)元素。賦值時(shí)用A代表數(shù)組。
⑤ 由于在本演示軟件中,涉及較多點(diǎn)運(yùn)算,所以運(yùn)行速度較慢。等待時(shí)未知其是否順利運(yùn)行。這時(shí)最好在最外層循環(huán)加上計(jì)數(shù)標(biāo)志,即變量名,這樣對(duì)程序運(yùn)行的影響不大,卻可以知道程序的運(yùn)行情況,有助于查錯(cuò)。但如果在內(nèi)層循環(huán)加標(biāo)志的話,將大大減慢運(yùn)行速度。
⑥ 盡管MATLAB允許未定義使用數(shù)組,但在實(shí)際應(yīng)用中這樣經(jīng)常出錯(cuò),特別是遇到在double和uint8型之間的轉(zhuǎn)換時(shí)。所以最好還是養(yǎng)成用前定義的習(xí)慣,避免出現(xiàn)不必要的錯(cuò)誤。
⑦ 在做完一定量的運(yùn)算后,一般要用Clear清除內(nèi)存變量,以防影響后面的程序運(yùn)行。
聯(lián)系客服