Related Posts with Thumbnails

2009年2月26日 星期四

[程設] Matlab - 彩色影像的三色分離


一張彩色的影像,其實是由三張0~255階層的紅,藍,綠影像組合而成的!
所以一張800pix*600pix的彩色影像其實是一個800*600*3的矩陣!

我們把這個三維矩陣想成三個平面,每個平面放一種顏色!
所以[800,600,1]是第一層 , [800,600,2]是第二層 , [800,600,3]是第三層!
Matlab把第一層設為紅色,第二層設為綠色,第三層設為紅色!

這三種顏色中,每個顏色都有1~255個階層,0是最黑,255是最白!
以紅色來說,0是最黑的紅色,255是最白的紅色!

一張彩色影像的每一個pix的顏色就是把三層圖片中的pix合起來就是一種顏色!
所以每個pix可能會有256*256*256=16777216種顏色!

===========================================================

寫了一個程式把一張彩色圖片的紅,藍,綠的顏色個別抽取出來

程式碼內容

%三色分離
clear; %清除螢幕資料
f=imread('flower-color.jpg'); %讀入"flower-color.jpg"影像存入變數f中
[M,N,O] = size(f); %將f矩陣大小放入M(Y軸),N(X軸),O(層)值中
fr = f; %先複製三份f影像 fr(紅),fg(綠),fb(藍)
fg = f;
fb = f;
fr(1:M,1:N,2:3)=0; %將fr(紅)中,第2:3層影像設為白色
fg(1:M,1:N,1)=0; %將fg(綠)中,第1層影像設為白色
fg(1:M,1:N,3)=0; %將fg(綠)中,第3層影像設為白色
fb(1:M,1:N,1:2)=0; %將fr(藍)中,第1:2層影像設為白色

figure, imshow(f);
figure, imshow(fr);
figure, imshow(fg);
figure, imshow(fb);


結果如下:

彩色原圖

紅色圖層

綠色圖層

籃色圖層

2 則留言:

  1. MATLAB還滿好玩的!!

    回覆刪除
  2. 請問 假如把RGB另外儲存後,想在合起來成完整圖面
    應該怎麼做?

    回覆刪除

歡迎各位來看我的Blogger,希望大家都可以多多留言,或是提供意見給我喔!!