真彩色圖像,索引色圖像,灰度圖像, 二值圖像之間的相互變換(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('索引轉二值')

實現效果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章