當前位置:編程學習大全網 - 編程語言 - 求助!!用imread 命令是否可以讀圖像的某行

求助!!用imread 命令是否可以讀圖像的某行

在命令行中輸入:

open xxx.fig

壹般的保存都是.fig的格式的!

imread 適合很多常用的圖形格式。具體哪些妳可以通過help imread了解到!

具體的請看下面:

MATLAB支持的幾種圖像文件格式

⑴JPEG(Joint Photogyaphic Expeyts Group):壹種稱為聯合圖像專家組的圖像壓縮格式。

⑵BMP(Windows Bitmap):有1位、4位、8位、24位非壓縮圖像,8位RLE(Run length Encoded)的圖像。文件內容包括文件頭(壹個BITMAP FILEHEADER數據結構)、位圖信息數據塊(位圖信息頭BITMAP INFOHEADER和壹個顏色表)和圖像數據。

⑶PCX(Windows Paintbrush):可處理1位、4位、8位、16位、24位等圖像數據。文件內容包括文件頭、圖像數據和擴展色圖數據。

⑷TIFF(Tagged Iamge File Format):處理1位、4位、8位、24位非壓縮圖像,1位、4位、8位、24位packbit壓縮圖像,1位CCITT壓縮圖像等。文件內容包括文件頭、參數指針表與參數域、參數數據表和圖像數據四部分。

⑸PNG(Portable Network Graphics):包括1位、2位、4位、8位和16位灰度圖像,8位和16位索引圖像,24位和48位真彩色圖像。

⑹GIF(Graphics Interchange Format):任何1位到8位的可交換的圖像。

⑺HDF(Hierarchial Data Format):有8位、24位光柵圖像數據集。

⑻ICO(Windows Icon resource):有1位、4位、8位非壓縮圖像。

⑼CUR(Windows Cursor resource):有1位、4位、8位非壓縮圖像。

⑽XWD(X Windows Dump):包括1位、8位Zpixmaps,XYBitmaps,XYPixmmmaps。

⑾RAS(Sun Raster image):有1位bitmap、8位索引、24位真彩色和帶有透明度的32位真彩色。

⑿PBM(Portable Bitmap)。

⒀PGM(Portable Graymap)。

⒁PPM(Portable Pixmap)。

2.MATLAB支持五種圖像類型,即二值圖像、索引圖像、灰度圖像、RGB圖像和多幀圖像陣列。

圖像類型

Double數據

uint8和uint16數據

二值圖像

圖像為m×n的整數矩陣,元素值範圍[0,1]

圖像為m×n的整數矩陣,元素值範圍[0,1]

索引圖像

圖像為m×n的整數矩陣,元素值範圍[0,p]

圖像為m×n的整數矩陣,元素值範圍[0,p-1]

灰度圖像

圖像為m×n的浮點數矩陣,元素值範圍[0,1]

圖像為m×n的整數矩陣,元素值範圍[0,255]或[0,65535]

RGB圖像

圖像為m×n×3的浮點數矩陣,元素值範圍[0,1]

圖像為m×n×3的整數矩陣,元素值範圍[0,255]或[0,65535]

其中,多幀圖像陣列是由多幀圖像組成的,每壹幀圖像可以為前四種圖像中的壹種,但組成壹個多幀圖像陣列的圖像必須為同壹種。cat函數可以將具有相同尺寸的幾個獨立圖像存成多幀文件。對於多幀圖像也可以從中提取單幀。

2.2.2 圖像類型判斷及轉換

1.在MATLAB中如果要判斷壹個圖像文件的類型,可使用如下指令:

l isbw:若圖像為二值圖像,則返回真。

l isgray:若圖像為灰度圖像,則返回真。

l isind:若圖像為索引圖像,則返回真。

l isrgb:若圖像為RGB圖像,則返回真。

2.在MATLAB系統中,要將壹個類型的圖像文件轉換成另壹個類型的圖像文件,只需將前壹個文件的圖像數據用imread讀出,再用imwrite以適當的格式寫到後壹個圖像文件中去即可。另外,要將灰度圖像I轉換成RGB圖像,可運用cat指令。cat函數可以把壹些單壹的圖像合並成圖像序列。在圖像序列中每個圖像需有相同的大小,如果是索引圖像,色圖也要壹致。

此外,MATLAB還提供了若幹函數,用於圖像類型的轉換。這些函數有:

l dither:用抖動法(dithering)轉換圖像。該函數通過顏色抖動(顏色抖動即改變邊沿像素的顏色,使像素周圍的顏色近似於原始圖像的顏色,從而以空間分辨率來換取顏色分辨率)來增強輸出圖像的顏色分辨率。該函數可以把RGB圖像轉換成索引圖像或把灰度圖像轉換成二值圖像。

l gray2ind:灰度圖像或二值圖像向索引圖像轉換。

l grayslice:設定閾值將灰度圖像轉換為索引圖像。

l im2bw:設定閾值將灰度、索引、RGB圖像轉換為二值圖像。

l im2double:將圖像數組轉換為double型。

l im2uint8:將圖像數組轉換為uint8型。

l im2uint16:將圖像數組轉換為uint16型。該函數不支持二值圖像序列的轉換。

l ind2gray:索引圖像向灰度圖像轉換。

l ind2rgb:索引圖像向RGB圖像轉換。

l mat2gray:將壹個數據矩陣轉換為灰度圖像。

l rgb2gray:RGB圖像向灰度圖像轉換或將彩色色圖轉換成灰度色圖。

l rgb2ind:RGB圖像向索引圖像轉換。包含三種不同方法:均衡量化、最小值量化、色圖映射。

l im2java:壹般圖像向Java圖像轉換。

l label2rgb:標誌圖像向RGB圖像轉換。

2.2.3 圖像的查詢及讀寫

在MATLAB中要查詢壹個圖像文件的信息,只要用imfinfo指令加上文件及其完整路徑名即可。函數調用格式為:

info = imfinfo(filename,fmt)

info = imfinfo(filename)

參數fmt對應於所有圖像處理工具箱中所有支持的圖像文件格式。

MATLAB提供了兩個重要的用於圖像文件的讀寫的指令,分別是從圖像文件中讀取數據的imread,以及將數據寫入到圖像文件中的imwrite。

1.imread的常見調用格式為:

A = imread(filename,fmt)

其作用是將文件名用字符串filename表示的,擴展名用fmt表示的圖像文件中的數據讀到矩陣A中。如果filename所指的為灰度級圖像,則A為壹個二維矩陣;如果filename所指的為RGB圖像,則A為壹個m×n×3的三維矩陣。Filename表示的文件名必須在MATLAB的搜索路徑範圍內,否則需指出其完整路徑。

imread的其他幾種重要的調用格式為:

[X,map] = imread(filename.fmt)

[…] = imread(filename)

[…] = imread(URL,…)

[…] = imread(…,idx) (CUR,ICO and TIFF only)

[…] = imread(…,’frames’,idx) (GIF only)

[…] = imread(…,ref) (HDF only)

[…] = imread(…,’BackgroundColor’,BG) (PNG only)

[A,map,alpha] = imread(…) (ICO,CUR and PNG only)

上面壹些參數的含義如下:idx是指讀取圖標(cur、ico、tiff)文件中第idx個圖像,默認值為1。’frame’,idx是指讀取gif文件中的圖像幀,idx值可以是數量、向量或’all’。ref是指整數值。alpha是指透明度。

2.imwrite的常用調用格式為:

imwrite(A,filename,fmt)

imwrite(X,map,filename,fmt)

imwrite(…,filename)

imwrite(…,Param1,Val1,Param2,Val2…)

其中imwrite(…,Param1,Val1,Param2,Val2…)可以讓用戶控制HDF、JPEG、TIFF等壹些圖像文件格式的輸出特性。

在MATLAB中,默認的保存類型是uint8。由於PNG和TIFF格式支持16位的圖像,所以保存這類圖像時,保存類型就是uint16。

2.2.4 圖像的顯示

顯示圖像的最基本的手段是使用image函數。該函數還產生了圖像對象的句柄,並允許對對象的屬性進行設置。此外,imagesc函數也具有image的功能,所不同的是imagesc函數還自動將輸入數據比例化,以全色圖的方式顯示。

imshow函數比image和imagesc更常用,它能自動設置句柄圖像的各種屬性。imshow可用於顯示各類圖像。對於每類圖像,調用方法如下:

l imshow filename:顯示圖像文件。

l imshow(BW):顯示二值圖像,BW為黑白二值圖像矩陣。

l imshow(X,map):顯示索引圖像,X為索引圖像矩陣,map為色彩圖示。

l imshow(I):顯示灰度圖像,I為二值圖像矩陣。

l imshow(RGB):顯示RGB圖像,RGB為RGB圖像矩陣。

l imshow(I,[low high]):將非圖像數據顯示為圖像,這需要考慮數據是否超出了所顯示類型的最大允許範圍,其中[low high]用於定義待顯示數據的範圍。

有關圖像顯示的函數或其輔助函數,除了上述的以外,MATLAB還提供了壹些用於進行圖像的特殊顯示的函數。

l colorbar:為圖像的顯示增加壹個顏色條,這壹用法對於了解被顯示圖像的灰度級別特別有用。

l getimage:獲取圖像數據。

l immovie:將多幀索引圖像制作成連續圖像格式。其調用格式為:

mov = immovie(D,map)

不過這種功能只對索引圖像有效,其中D為多幀索引圖像陣列,map為索引圖像的對應色階。對於其他類型圖像,則需要首先將其轉換為索引圖像。

l montage:多幀圖像的壹次顯示。它能將每壹幀分別顯示在壹幅圖像的不同區域,所有子區的圖像都用同壹個色彩條。

l movie:播放多幀連續圖像。

l subimage:在壹個圖形區域內顯示多個圖像。

l truesize:調整圖像顯示的尺寸。

l warp:顯示圖像的紋理表面圖。前面提到的圖像顯示手段都只能在二維平面上顯示,MATLAB6.5的壹個強大功能是能將平面圖像顯示在空間三維曲面上。這是由warp函數的紋理成圖功能來實現的,該功能能通過雙線性插值將平面圖像投影到三維曲面上。

l zoom:將圖像或二維圖形進行放大或縮小顯示。zoom本身是是壹個開關鍵,zoom on用於打開縮放模式,zoom off用於關閉該模式,zoom in用於放大局部圖像,zoom out用於縮小圖像。

至於多個圖像的顯示,則可分為兩個方面:在不同的圖形窗口顯示不同的圖像,可以用figure指令來實現;在同壹個圖形窗口顯示多圖,可以用subplot來實現。

第三章 圖像運算

3.1 圖像的點運算

點運算將輸入圖像映射為輸出圖像,輸出圖像每個像素點的灰度值僅由對應的輸入像素點的值決定。它常用於改變圖像的灰度範圍及分布,是圖像數字化及圖像顯示的重要工具。點運算因其作用性質,也被稱為對比度增強、對比度拉伸或灰度變換。在真正進行圖像處理之前,有時可以用點運算來克服圖像數字化設備的局限性。

點運算實際上是灰度到灰度的映射過程。點運算不會改變圖像內像素點之間的空間關系。設輸入圖像為A(x, y),輸出圖像為B(x, y),則點運算可表示為:

B(x, y) = f [A(x, y)] (3-1)

點運算可完全由灰度變換(gray-scale transformation)函數s=f (r)決定,後者描述了輸入灰度級與輸出灰度級之間的映射關系。圖像的點運算分為線性點運算和非線性點運算兩種。

3.1.1 線性點運算

線性點運算是指灰度變換函數f為線性函數時的運算。

如圖3.1,當a>1時,輸出圖像對比度增大;當a<1時,輸出圖像對比度降低;當a=1,b=0時,輸出圖像就是輸入圖像的簡單復制;當a=1,b≠0時,僅使輸出圖像的灰度值上移或下移,其效果是使整個圖像更亮或更暗。如果a為負值,暗區域將變亮,亮區域將變暗,點運算完成了圖像求補。

除了調節對比度以外,還有壹種典型的線性點運算的應用就是灰度標準化。設灰度圖像為I[W][H],其中W表示圖像寬度,H表示圖像的高度,那麽灰度圖像的平均灰度和方 圖3.1 線性函數

差由如下計算公式得到:

平均灰度:

(3-2)

方差:

(3-3)

可以將其變換為具有相同均值和方差的變換函數(線性映射),其形式如下:

(3-4)

其中σ0和u 0為給定的變換參數。灰度標準化可以用來生成壹些常用的平均模型。

3.1.2 非線性點運算

非線性點運算對應於非線性映射函數,典型的映射包括平方函數、對數函數、截取函數(窗口函數)、域值函數、多值量化函數等。

閾值化處理是最常用的壹種非線性點運算,它的功能是選擇壹閾值,將圖像二值化,然後使用生成的二進制圖像進行圖像分割及邊緣跟蹤等處理。

直方圖均衡化也是壹種非常常用的非線性點運算。它是指將壹個已知灰度分布的圖像使用某種非線性灰度變換函數進行計算,使運算結果變成壹幅具有均勻灰度分布的新圖像。經過直方圖均衡化的點運算處理後,實際的直方圖將呈現參差不齊的外形,這是由於灰度級的可能個數是限造成的。在壹些灰度級處可能沒有像素,在另外壹些灰度級處則像素很擁擠。

點運算的MATLAB實現:

I=imread('rice.png');

rice=double(I);

rice2=rice*0.5+50;

J=uint8(rice2);

subplot(1,2,1),imshow(I);

subplot(1,2,2),imshow(J);

  • 上一篇:今年暑假妳是怎麽度過的經歷了哪些新鮮事
  • 下一篇:C#編程保存BMP格式文件
  • copyright 2024編程學習大全網