天天看點

真彩色圖像,索引色圖像,灰階圖像, 二值圖像之間的互相變換(Matlab實作)

根據圖像資料矩陣解釋方法的不同,MATLAB 把其處理為 4 類:

RGB 圖像(Binary images): 一幅 RGB 圖像就是彩色像素的一個 M×N×3 數組,其中每一個彩色相似點都是在特定 空間位置的彩色圖像相對應的紅、綠、藍三個分量。按照慣例,形成一幅 RGB 彩色圖像的 三個圖像常稱為紅、綠或藍分量圖像。

令 fR,fG 和 fB 分别代表三種 RGB 分量圖像。一幅 RGB 圖像就利用 cat(級聯)操作将 這些分量圖像組合成彩色圖像: rgb_image=cat(3,fR,fG,fB) 在操作中,圖像按順序放置。

索引圖像(Indexed images): 索引顔色通常也稱為映射顔色,在這種模式下,顔色都是預先定義的,并且可供選用的 一組顔色也很有限,索引顔色的圖像多隻能顯示 256 種顔色。 一幅索引顔色圖像在圖像檔案裡定義,當打開該檔案時,構成該圖像具體顔色的索引 值就被讀入程式裡,然後根據索引值找到終的顔色。

亮度圖像/灰階圖像(Intensity images): 一幅亮度圖像是一個資料矩陣,其歸一化的取值表示亮度。若亮度圖像的像素都是 uint8 類或 uint16 類,則它們的整數值範圍分别是[0,255]和[0,65536]。若圖像是 double 類,則 像素取值就是浮點數。規定雙精度型歸一化亮度圖像的取值範圍是[0,1]

二值圖像(RGB images): 一幅二值圖像是一個取值隻有 0 和 1 的邏輯數組。而一幅取值隻包含 0 和 1 的 uint8 類 數組,在 MATLAB 中并不認為是二值圖像。使用 logical 函數可以把數值數組轉化為二值數 組或邏輯數組。

建立一個邏輯圖像,其文法為: B=logical(A) 其中,B 是由 0 和 1 構成的數值數組。 要測試一個數組是否為邏輯數組,可以使用函數: islogical(c)若 C 是邏輯數組,則該函數傳回 1;否則,傳回 0。

I=imread('flower.tif');      %讀取圖像,即原始RGB圖像
whos I    %顯示圖像的基本資訊
subplot(2,4,1);
imshow(I)       %顯示圖像
title('RGB圖像')
imfinfo('flower.tif')        %顯示圖像具體資訊

%RGB轉灰階
gray=rgb2gray(I);            
subplot(2,4,2);
imshow(gray)
title('RGB轉灰階')

 %RGB轉索引
[index,map]=rgb2ind(I,10);     % map:調用調色闆  10:指定map中顔色項數
subplot(2,4,3);
imshow(index,map)
title('RGB轉索引')

%RGB轉二值
bw=im2bw(I);
subplot(2,4,4);
imshow(bw)
title('RGB轉二值')

%索引轉灰階
gray_1=ind2gray(index,map);    %調用調色闆map
subplot(2,4,5);
imshow(gray_1)
title('索引轉灰階')

%索引轉RGB
RGB=ind2rgb(index,map);
subplot(2,4,6);
imshow(RGB)
title('索引轉RGB')

%索引轉二值
bw_1=im2bw(index,map);
subplot(2,4,7);
imshow(bw_1)
title('索引轉二值')
           

實作效果如下:

真彩色圖像,索引色圖像,灰階圖像, 二值圖像之間的互相變換(Matlab實作)

繼續閱讀