matlab中imread 從圖形文件讀取圖像


來源:https://ww2.mathworks.cn/help/matlab/ref/imread.html?searchHighlight=imread&s_tid=doc_srchtitle

 

imread

從圖形文件讀取圖像

全頁折疊
 

說明

示例

A = imread(filename)filename 指定的文件讀取圖像,並從文件內容推斷出其格式。如果 filename 為多圖像文件,則 imread 讀取該文件中的第一個圖像。

A = imread(filename,fmt) 另外還指定具有 fmt 指示的標准文件擴展名的文件的格式。如果 imread 找不到具有 filename 指定的名稱的文件,則會查找名為 filename.fmt 的文件。

A = imread(___,idx) 從多圖像文件讀取指定的圖像。此語法僅適用於 GIF、CUR、ICO、TIF 和 HDF4 文件。您必須指定 filename 輸入,也可以指定 fmt

示例

A = imread(___,Name,Value) 使用一個或多個名稱-值對組參數以及先前語法中的任何輸入參數來指定格式特定的選項。

示例

[A,map] = imread(___)filename 中的索引圖像讀入 A,並將其關聯的顏色圖讀入 map。圖像文件中的顏色圖值會自動重新調整到范圍 [0,1] 中。

示例

[A,map,transparency] = imread(___) 另外還返回圖像透明度。此語法僅適用於 PNG、CUR 和 ICO 文件。對於 PNG 文件,如果存在 alpha 通道,transparency 會返回該 alpha 通道。對於 CUR 和 ICO 文件,它為 AND(不透明度)掩碼。

 

示例

全部折疊

讀取和顯示圖像

讀取示例圖。

A = imread('ngc6543a.jpg');

imread 返回 650×600×3 數組 A

顯示圖像。

image(A)

 
 

將索引圖像轉換成 RGB

讀取索引圖像示例文件 corn.tif 中的第一幅圖像。

[X,cmap] = imread('corn.tif');

索引圖像 Xuint8 類型的 415×312 數組。顏色圖 cmapdouble 類型的 256×3 矩陣,因此索引圖像中有 256 種顏色。顯示圖像。

imshow(X,cmap)

將索引圖像轉換為 RGB 圖像。結果為一個 double 類型的 415×312×3 數組。

RGB = ind2rgb(X,cmap);

檢查 RGB 圖像的值是否在 [0, 1] 范圍內。

disp(['Range of RGB image is [',num2str(min(RGB(:))),', ',num2str(max(RGB(:))),'].'])
Range of RGB image is [0.0078431, 0.97647].
 
 

讀取多頁 TIFF 文件中的特定圖像

讀取示例文件 corn.tif 中的第三幅圖像。

[X,map] = imread('corn.tif',3);
 
 

返回 PNG 圖像的 Alpha 通道

返回示例圖 peppers.png 的 Alpha 通道。

[X,map,alpha] = imread('peppers.png');
whos alpha
  Name       Size            Bytes  Class     Attributes

  alpha      0x0                 0  double              

沒有提供 Alpha 通道,因此 alpha 為空。

 
 

讀取 TIFF 圖像的指定區域

讀取示例圖 corn.tif 像素的特定區域。

用表示要讀取的區域邊界的向量元胞數組指定 'PixelRegion' 參數。第一向量指定要讀取的行范圍,第二向量指定要讀取的列范圍。

A = imread('corn.tif','PixelRegion',{[1,2],[2,5]});

imread 讀取 corn.tif 中 1–2 行和 2–5 列的圖像數據,並返回 2×4 數組 A

 
 

輸入參數

全部折疊

filename - 圖形文件名
字符向量 | 字符串標量

圖形文件的名稱,指定為字符向量或字符串標量。

根據文件的位置,filename 可以采用下列形式之一。

位置

形式

當前文件夾或 MATLAB® 路徑上的文件夾

指定 filename 中文件的名稱。

示例:'myImage.jpg'

文件夾中的文件

如果該文件不在當前文件夾或 MATLAB 路徑下的文件夾中,則指定完整或相對路徑名。

示例:'C:\myFolder\myImage.ext'

示例:'\imgDir\myImage.ext'

URL

如果文件是通過 Internet URL 定位的,則 filename 必須包含協議類型,例如 http://

示例:'http://hostname/path_to_file/my_image.jpg'

遠程位置

如果文件存儲在遠程位置,則 filename 必須包含文件的完整路徑,指定為以下形式的國際化資源標識符 (IRI):

scheme_name://path_to_file/my_file.ext

根據您的遠程位置,scheme_name 可以是下表中的值之一。

遠程位置 scheme_name
Amazon S3™ s3
Windows Azure® Blob Storage wasb, wasbs
HDFS™ hdfs

有關詳細信息,請參閱處理遠程數據

示例:'s3://bucketname/path_to_file/my_image.jpg'

 

有關每種文件類型支持的位深度、壓縮方案和顏色空間的信息,請參閱算法

數據類型: char | string

fmt - 圖像格式
字符向量 | 字符串標量

圖像格式,指定為指示標准文件擴展名的字符向量或字符串標量。調用 imformats 可查看支持的格式及其文件擴展名列表。

示例: 'png'

數據類型: char | string

idx - 要讀取的圖像
整數標量 | 整數向量

要讀取的圖像,指定為整數標量或整數向量(對於 GIF 文件)。例如,如果 idx 為 3,則 imread 將返回文件中的第三個圖像。對於 GIF 文件,如果 idx1:5,則 imread 僅返回前五個幀。idx 參數僅支持用於多圖像 GIF、CUR、ICO 和 HDF4 文件。

從同一 GIF 文件讀取多個幀時,請將 idx 指定為幀向量或使用 'Frames','all' 名稱-值對組參數。由於構造 GIF 文件的方式,這些語法可提供比循環調用 imread 更快的性能。

對應 HDF4 文件,idx 對應於要讀取的圖像的引用編號。引用編號不一定與文件中圖像的順序對應。您可以使用 imfinfo 將圖像順序與引用編號進行匹配。

示例: 3

數據類型: double

名稱-值對組參數

指定可選的、以逗號分隔的 Name,Value 對組參數。Name 為參數名稱,Value 為對應的值。Name 必須放在引號中。您可采用任意順序指定多個名稱-值對組參數,如 Name1,Value1,...,NameN,ValueN 所示。

示例: 'Index',5 讀取 TIFF 文件的第五個圖像。

GIF 文件

全部折疊

'Frames' - 要讀取的幀
1 (默認) | 正整數 | 整數向量 | 'all'

要讀取的幀,指定為逗號分隔的對組,其中包含 'Frames' 和一個正整數、整數向量或 'all'。例如,如果指定值 3,imread 將讀取文件中的第三個幀。如果您指定 'all',則 imread 讀取所有幀並按其在文件中顯示的順序返回這些幀。

示例: 'frames',5

JPEG 2000 文件

全部折疊

'PixelRegion' - 要讀取的子圖像
{rows,cols} 形式的元胞數組

要讀取的子圖像,指定為包含 'PixelRegion'{rows,cols} 形式的元胞數組的逗號分隔對組。rows 輸入指定要讀取的行范圍。cols 輸入指定要讀取的列范圍。rowscols 都必須為包含以 1 開始的索引的二元素向量。例如,'PixelRegion',{[1 2],[3 4]} 讀取圖像數據的第 1 和第 2 行以及第 3 和第 4 列界定的子圖像。如果 'ReductionLevel' 值大於 0,則 rowscols 為子圖像的坐標。

示例: 'PixelRegion',{[1 100],[4 500]}

'ReductionLevel' - 降低圖像分辨率
0 (默認) | 非負整數

降低的圖像分辨率,指定為以逗號分隔的對組,包含 'ReductionLevel' 和一個非負整數。對於約簡級別 L,圖像分辨率按因子 2^L 進行約簡。約簡級別受限於 imfinfo 函數輸出中的 'WaveletDecompositionLevels' 字段指定的分解級別總數。

示例: 'ReductionLevel',5

數據類型: single | double

'V79Compatible' - 與 MATLAB 7.9 (R2009b) 及更早版本的兼容性
false (默認) | true

與 MATLAB 7.9 (R2009b) 及更早版本的兼容性,指定為包含 'V79Compatible' 以及 truefalse 的逗號分隔對組。如果您指定 true,則返回的灰度或 RGB 圖像與之前版本的 imread(MATLAB 7.9 (R2009b) 及更早版本)一致。

示例: 'V79Compatible',true

數據類型: logical

PNG 文件

全部折疊

'BackgroundColor' - 背景色
'none' | 整數 | 3 元素整數向量

背景色,指定為 'none'、整數或三元素整數向量。如果 BackgroundColor'none',則 imread 不執行任何組合操作。否則,imread 將透明像素與背景色混合。

  • 如果輸入圖像為索引圖像,BackgroundColor 的值必須為 [1,P] 范圍中的一個整數,其中 P 是顏色圖長度。

  • 如果輸入圖像為灰度,則 BackgroundColor 的值必須為 [0,1] 范圍中的整數。

  • 如果輸入圖像為 RGB,則 BackgroundColor 的值必須為三元素向量,其中的值介於 [0,1] 范圍內。

BackgroundColor 的默認值取決於 transparency 輸出參數和圖像類型的存在性:

  • 如果您請求 transparency 輸出參數,則 BackgroundColor 的默認值為 'none'

  • 如果您不請求 transparency 輸出且 PNG 文件包含背景色塊,則該顏色是 BackgroundColor 的默認值。

  • 如果不請求 transparency 輸出並且文件不包含背景色塊,則對於索引圖像,BackgroundColor 的默認值為 1;對於灰度圖像,默認值為 0;對於真彩色 (RGB) 圖像,默認值為 [0 0 0]

 

TIFF 文件

全部折疊

'Index' - 要讀取的圖像
1 (默認) | 正整數

要讀取的圖像,指定為包含 'Index' 和正整數的逗號分隔對組。例如,如果 Index 的值為 3,則 imread 讀取文件中的第三個圖像。

數據類型: single | double

'Info' - 圖像的相關信息
結構體數組

圖像的相關信息,指定為包含 'Info'imfinfo 函數返回的結構體數組的逗號分隔對組。使用 Info 名稱-值對組參數可幫助 imread 更快地找到多圖像 TIFF 文件中的圖像。

數據類型: struct

'PixelRegion' - 區域邊界
元胞數組

區域邊界,指定為包含 'PixelRegion' 和一個 {rows,cols} 形式的元胞數組的逗號分隔對組。rows 輸入指定要讀取的行范圍。cols 輸入指定要讀取的列范圍。rowscols 必須為二元素或三元素的從 1 開始的索引向量。二元素向量指定要讀取的第一行和最后一行或第一列和最后一列。例如,'PixelRegion',{[1 2],[3 4]} 讀取圖像數據的第 1 和第 2 行以及第 3 和第 4 列界定的區域。

三元素向量的形式必須為 [start increment stop],其中 start 是要讀取的第一行或第一列,increment 是增量值,stop 是要讀取的最后一行或最后一列。此語法支持圖像減采樣。例如,'PixelRegion',{[1 2 10],[4 3 12]} 讀取由第 1 和第 10 行以及第 4 和第 12 列界定的區域,在垂直方向每隔 2 個像素進行數據采樣,在水平方向每隔 3 個像素進行數據抽樣。

示例: 'PixelRegion',{[1 100],[4 500]}

數據類型: cell

輸出參數

全部折疊

A - 圖像數據
數組

圖像數據,以數組的形式返回。

  • 如果文件包含灰度圖像,則 A 為 m×n 數組。

  • 如果文件包含索引圖像,則 A 為 m×n 數組,其中的索引值對應於 map 中該索引處的顏色。

  • 如果文件包含真彩色圖像,則 A 為 m×n×3 數組。

  • 如果文件是一個包含使用 CMYK 顏色空間的彩色圖像的 TIFF 文件,則 A 為 m×n×4 數組。

A 的類取決於圖像數據的圖像格式和位深。有關詳細信息,請參閱 算法

map - Colormap
m×3 的矩陣

A 中的索引圖像數據關聯的顏色圖,以 m×3 的 double 類矩陣形式返回。

transparency - 透明度信息
矩陣

以矩陣形式返回的透明度信息。對於 PNG 文件,transparency 為 alpha 通道(若存在)。如果不存在 alpha 通道,或者如果指定了 'BackgroundColor' 名稱-值對組參數,則 transparency 為空。對於 CUR 和 ICO 文件,transparency 是 AND 掩碼。對於光標文件,該掩碼有時僅包含有用的數據。

詳細信息

全部折疊

位深

位深是指用於表示每個圖像像素的位數。

位深是通過將每樣本位數與每像素樣本數相乘而得。因此,使用每個顏色分量(或樣本)8 位和每像素三個樣本的格式的位深為 24。有時,與位深關聯的樣本大小可能不確定。例如,48 位的位深是表示 6 個 8 位樣本、4 個 12 位樣本,還是表示 3 個 16 位樣本?請參閱 算法 了解樣本大小信息以避免這種多義性。

算法

全部折疊

對於大多數圖像文件格式,imread 對每個顏色平面使用 8 位或更少位來存儲圖像像素。此表列出了返回的圖像數組 A 與文件格式使用的位深對應的類。

文件中的位深

imread 返回的數組的類

每像素 1 位

logical

每顏色平面 2 到 8 位

uint8

每像素 9 位到 16 位

uint16BMPJPEGPNGTIFF

對於 16 位的 BMP 壓縮格式 (5-6-5),MATLAB 返回 uint8

以下部分提供了有關特定格式的支持信息,各格式按名稱的字母順序列出。

BMP - Windows 位圖

此表列出了輸出圖像數據數組支持的位深和數據類型。

支持的位深 無壓縮 RLE 壓縮 輸出類 注釋
1 位 logical  
4 位 uint8  
8 位 uint8  
16 位 uint8 1 個樣本/像素
24 位 uint8 3 個樣本/像素
32 位 uint8 3 個樣本/像素
(1 個字節填充)

CUR - 光標文件

此表列出了輸出圖像數據數組支持的位深和數據類型。

支持的位深 無壓縮 壓縮 輸出類
1 位 logical
4 位 uint8
8 位 uint8

注意

默認情況下,Microsoft® Windows® 光標為 32×32 像素。因為 MATLAB 指針必須為 16×16,所以您可能需要縮放圖像。如果您有 Image Processing Toolbox™,則可以使用 imresize 函數。

GIF - 圖形交換格式

此表列出了輸出圖像數據數組支持的位深和數據類型。

支持的位深 無壓縮 壓縮 輸出類
1 位 logical
2 位到 8 位 uint8

HDF4 - 分層數據格式

此表列出了輸出圖像數據數組支持的位深和數據類型。

支持的位深 帶有顏色圖的光柵圖像 不帶顏色圖的光柵圖像 輸出類 注釋
8 位 uint8  
24 位 uint8 3 個樣本/像素

ICO - 圖標文件

JPEG - 聯合圖像專家組

imread 讀取任何基准 JPEG 圖像以及帶有某些常用擴展名的 JPEG 圖像。有關 JPEG 2000 文件支持的信息,請參閱 JPEG 2000

支持的采樣位數 有損壓縮 無損壓縮 輸出類 注釋
8 位 uint8 灰度或 RGB
12 位 uint16 灰度或 RGB
16 位 uint16 灰度

JPEG 2000 - 聯合圖像專家組 2000

有關 JPEG 文件的信息,請參閱 JPEG

注意

不支持 JPEG 2000 索引圖像。JP2/JPX 文件僅支持 JP2 兼容顏色空間。默認情況下,將按圖像在文件中的存儲順序返回所有圖像通道。

支持的采樣位數

有損壓縮 無損壓縮 輸出類 注釋
1 位 logical 僅限灰度
2 位到 8 位 uint8int8 灰度
或 RGB
9 位到 16 位 uint16int16 灰度
或 RGB

PBM - 可移植位圖

此表列出了輸出圖像數據數組支持的位深和數據類型。

支持的位深 原始二進制 ASCII(普通)編碼 輸出類
1 位 logical

PCX - Windows 畫筆

此表列出了輸出圖像數據數組支持的位深和數據類型。

支持的位深 輸出類 注釋
1 位 logical 僅限灰度
8 位 uint8 灰度或索引圖像
24 位 uint8 RGB
3 個 8 位樣本/像素

PGM - 可移植灰度圖

此表列出了輸出圖像數據數組支持的位深和數據類型。

支持的位深 原始二進制 ASCII(普通)編碼 輸出類 注釋
8 位 uint8  
16 位 uint16  
任意 1 位到 8 位:uint8
9 位到 16 位:uint16
值被縮放

PNG - 可移植網絡圖形

此表列出了輸出圖像數據數組支持的位深和數據類型。

支持的位深 輸出類 注釋
1 位 logical 灰度
2 位 uint8 灰度
4 位 uint8 灰度
8 位 uint8 灰度或索引圖像
16 位 uint16 灰度或索引圖像
24 位 uint8 RGB
3 個 8 位樣本/像素。
48 位 uint16 RGB
3 個 16 位樣本/像素。

PPM - 可移植像素圖

此表列出了輸出圖像數據數組支持的位深和數據類型。

支持的位深 原始二進制 ASCII(普通)編碼 輸出類
最多 16 位 uint8
任意  

RAS - Sun 光柵

此表列出了輸出圖像數據數組支持的位深和數據類型。

支持的位深 輸出類 注釋
1 位 logical 位圖
8 位 uint8 索引
24 位 uint8 RGB
3 個 8 位樣本/像素
32 位 uint8 帶有 Alpha 的 RGB
4 個 8 位樣本/像素

TIFF - 標記圖像文件格式

imread 讀取 TIFF 規范或 LibTIFF 支持的大多數圖像。imread 函數支持以下 TIFF 功能:

  • 每像素任意個樣本

  • CCITT group 3 和 4 FAX、Packbits、JPEG、LZW、Deflate、ThunderScan 壓縮和未壓縮的圖像

  • 邏輯、灰度、索引顏色、真彩色和高光譜圖像

  • RGB、CMYK、CIELAB、ICCLAB 顏色空間。如果彩色圖像使用 CMYK 顏色空間,則 Am×n×4 數組。要確定所使用的顏色空間,請使用 imfinfo 獲取有關圖形文件的信息並查看 PhotometricInterpretation 字段的值。如果文件包含 CIELAB 顏色數據,則 imread 將其轉換為 ICCLAB,然后將其移到 MATLAB 工作區中。由於 8 位或 16 位 TIFF CIELAB 編碼值混合使用有符號和無符號數據類型,而這兩種數據類型無法表示為單個 MATLAB 數組,因此需要進行此轉換。

  • 數據組成圖塊或掃描線

imread 按如下方式讀取並轉換 TIFF 圖像:

  • YCbCr 圖像轉換為 RGB 顏色空間。

  • 所有灰度圖像都按“黑色 = 0”、“白色 = 最大值”進行讀取。

  • 1 位圖像以 logical 類形式返回。

  • 16 位浮點圖像以類 single 形式返回。

  • CIELab 圖像轉換為 ICCLab 顏色空間。

如需版權信息,請打開 libtiffcopyright.txt 文件。

XWD - X 窗口轉儲

此表列出了 XWD 文件支持的位深、壓縮和輸出類。

支持的位深 ZPixmaps XYBitmaps XYPixmaps 輸出類
1 位 logical
8 位 uint8

擴展功能

用法說明和限制:

 

  • 僅支持讀取 8 位 JPEG 圖像。輸入參數 filename 必須為有效的絕對路徑或相對路徑。

  • 此函數生成的代碼使用預編譯的、特定於平台的共享庫 (Image Processing Toolbox)。

  • MATLAB Function 模塊中,輸入參數 filename 必須為編譯時常量。

 

另請參閱

fread | image | imfinfo | imformats | imwrite | ind2rgb

主題

在 R2006a 之前推出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM