Matlab圖像處理-RGB色彩提取原理方法
本教程適合Matlab數字圖像處理的初學者。目前有一些手機相機軟件有“魔法色彩”功能,可以將彩色照片變爲只顯示某一種具體顏色的灰色照片。本文中所提到的RGB色彩提取純粹爲實現個人興趣而編寫,正規教材中可能並無相關資料。文中較爲全面直觀地給出在Matlab中對圖像進行RGB色彩提取的方法原理和Matlab原始碼,並配合必要的代碼註釋,希望能幫助Matlab和數字圖像處理的初學者入門。
操作方法
(01)開啟圖像[FileName, FilePath]=uigetfile('*.jpg;*.png;*.tif;*.img;*.gif;','請選擇圖像數據');str=[FilePath FileName];Image=imread(str);% 以對話框的形式選擇開啟一幅圖像
(02)設定參數Gray=rgb2gray(Image);R=Image(:,:,1); G=Image(:,:,2); B=Image(:,:,3);diff_R=0; diff_G=0; diff_B=0; % 設定紅、綠、藍三種顏色提取閾值(越大越嚴格)
(03)紅色提取Image_R=Image;RP_R=Image(:,:,1); RP_G=Image(:,:,2); RP_B=Image(:,:,3);XYR=~((R-G)>diff_R&(R-B)>diff_R); % 提取紅色條件是R分量與G、B分量差值大於設定Mask=Gray(XYR); % 灰照片掩膜RP_R(XYR)=Mask; RP_G(XYR)=Mask; RP_B(XYR)=Mask; % 使得非紅色區域變爲灰色Image_R(:,:,1)=RP_R; Image_R(:,:,2)=RP_G; Image_R(:,:,3)=RP_B;
(04)綠色提取Image_G=Image;GP_R=Image(:,:,1); GP_G=Image(:,:,2); GP_B=Image(:,:,3);XYG=~((G-R)>diff_G&(G-B)>diff_G); % 提取綠色條件是G分量與R、B分量差值大於設定Mask=Gray(XYG); % 灰照片掩膜GP_R(XYG)=Mask; GP_G(XYG)=Mask; GP_B(XYG)=Mask; % 使得非綠色區域變爲灰色Image_G(:,:,1)=GP_R; Image_G(:,:,2)=GP_G; Image_G(:,:,3)=GP_B;
(05)藍色提取Image_B=Image;BP_R=Image(:,:,1);BP_G=Image(:,:,2);BP_B=Image(:,:,3);XYB=~((B-R)>diff_B&(B-G)>diff_B); % 提取綠色條件是G分量與R、B分量差值大於設定Mask_B=Gray(XYB); % 灰照片掩膜BP_R(XYB)=Mask_B; BP_G(XYB)=Mask_B; BP_B(XYB)=Mask_B; % 使得非藍色區域變爲灰色Image_B(:,:,1)=BP_R; Image_B(:,:,2)=BP_G; Image_B(:,:,3)=BP_B;
(06)顯示結果subplot(2,2,1),imshow(Image); title('Image');subplot(2,2,2),imshow(Image_R); title('Red Pass');subplot(2,2,3),imshow(Image_G); title('Green Pass');subplot(2,2,4),imshow(Image_B); title('Blue Pass');% 顯示原圖與R/G/B三色提取結果對比圖並顯示標籤
(07)儲存結果imwrite(Image_R,'Image_R.jpg','jpeg');imwrite(Image_G,'Image_G.jpg','jpeg');imwrite(Image_B,'Image_B.jpg','jpeg');% 將R/G/B三色提取結果寫成jpg檔案儲存到當前目錄
原理詳解
(01)本文中提到的RGB色彩提取方法最爲關鍵的也最爲難以嚴格界定的地方是對於R/G/B三種顏色的判別規則,本文中提到的判別規則是更具R/G/B中某一顏色分量明顯不小於其它分量時,即判別某像素點爲某種顏色,並透過設定判別閾值,來控制判別條件的顏色與否。爲了保持圖片的完整性(即三種色彩提取結果中彩色相加後能得到原圖),本例中默認設定閾值爲0,爲了得到更爲單純的顏色,可適當增大閾值。如下圖是將R/G/B三色提取閾值設定爲0的提取結果:
(02)如下圖是將R/G/B三色提取閾值設定爲128的提取結果,從圖中可看到,當閾值設定越大(判定條件愈加嚴格),提取結果更接近R/G/B純色。
特別提示
本文中提出的R/G/B三色判別規則爲個人想法,更好的顏色判別規則有待大家發現,歡迎大家對本文提出的方法進行互動討論。
-
怎麼在網名上加橫線
我們會經常在一些地方看到有人的網名上有一條橫線,最多的莫過於在QQ暱稱上了。那麼,這種在網名上加橫線的暱稱是怎麼寫的呢?下面以QQ暱稱爲例給大家講解怎麼在網名上加橫線。操作方法(01)上面這個是例子,以漢字加數字的中間加了橫線,現在拿一個QQ來修改網名給大家講解...
-
微信網頁版登陸不了怎麼辦?
大家有沒有遇到微信電腦版登入不了的情況,今天來幫大家解決這個小問題,還不知道怎麼處理的小夥伴們來學習一下吧。操作方法(01)在手機上開啟微信,如圖所示。(02)點擊右下角的“我”。(03)再點擊“賬號與安全”,紅圈中的選項。(04)然後點擊“更多安全設定”。(05)把“賬號安全...
-
如何給u盤取消密碼
如何給u盤取消密碼?下面小編爲你介紹下,希望可以幫助到你。操作方法(01)開啟“控制面板”,進入頁面後點擊控制面板右側的下三角。(02)點擊“所有控制面板選項”,選擇“BitLocker驅動加密”。(03)進入頁面後,點擊“關閉BitLocker”。(04)輸入密碼,點擊“解鎖”,選擇“解鎖驅動...
-
cad中怎樣畫箭頭
操作方法(01)我們在cad裏輸入快速鍵“PL”(多段線),然後按空格鍵或回車鍵確定,確定後單擊鼠標左鍵確定箭頭第一個點,然後拖動鼠標確定箭頭直線段的第二個點。(02)完成箭頭直線段的繪製後我們開始畫箭頭部位,接着上面的操作輸入“w”,輸入箭頭起點寬度,我們輸入“5”(如果箭...