久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 10020|回復(fù): 0
收起左側(cè)

RGB圖像顏色分離的MATLAB實(shí)現(xiàn)

[復(fù)制鏈接]
ID:252607 發(fā)表于 2017-11-23 11:34 | 顯示全部樓層 |閱讀模式

1.理論分析
1.1程序設(shè)計(jì)的初衷
自己的專業(yè)方向會(huì)可能用到圖像處理的知識(shí),作為數(shù)字圖像處理的初學(xué)者,此程序完全是為實(shí)現(xiàn)自己興趣并結(jié)合我們所學(xué)的MATLAB課程及GUI知識(shí)而編寫的,可以實(shí)現(xiàn)對(duì)圖中感興趣物體顏色的提取,從而突出事物。設(shè)計(jì)的知識(shí)背景或許淺,課下希望能向研究Matlab數(shù)字圖像處理的老師,同學(xué)們多多請(qǐng)教,交流。
1.2程序?qū)崿F(xiàn)的理論分析
若想實(shí)現(xiàn)對(duì)RGB圖像顏色提取,最為關(guān)鍵的也最為核心的是對(duì)R/G/B等顏色嚴(yán)格界定的判別規(guī)則。而對(duì)于非目標(biāo)顏色則會(huì)通過掩膜覆蓋,從而突出顯示所要提取到的顏色。
此程序中提到的判別規(guī)則是更具R/G/B中某一顏色分量明顯不小于其它分量時(shí),即判別某像素點(diǎn)為某種顏色,并通過設(shè)置判別閾值,來控制判別條件的顏色與否。
1.2.RGB圖像背景知識(shí)介紹
所謂的RGB圖像,RGB色彩模式是工業(yè)界的一種顏色標(biāo)準(zhǔn),是通過對(duì)紅(R)、綠(G)、藍(lán)(B)三個(gè)顏色通道的變化以及它們相互之間的疊加來得到各式各樣的顏色的,RGB即是代表紅、綠、藍(lán)三個(gè)通道的顏色,這個(gè)標(biāo)準(zhǔn)幾乎包括了人類視力所能感知的所有顏色,是目前運(yùn)用最廣的顏色系統(tǒng)之一。
    RGB圖像原理如下圖1~圖2:
   
圖1 RGB圖像原理               圖2 RGB圖像RGB三色矩陣
所以RGB圖像的顏色分布區(qū)間如圖3:
圖3  RGB圖像的顏色分布圖
因此可得到六種顏色的判別規(guī)則如下:
利用以上判別準(zhǔn)則來作為程序設(shè)計(jì)的核心,通過設(shè)計(jì)判斷語句,對(duì)圖像的不同色域進(jìn)行分離,從而實(shí)現(xiàn)顏色分離。
3.程序設(shè)計(jì)
3.1設(shè)計(jì)流程圖
以下是整體程序的設(shè)計(jì)流程如圖4:
圖4 程序?qū)崿F(xiàn)流程圖
通過此流程圖,可以把握全局思想來完成圖像顏色提取的框架結(jié)構(gòu),這樣可以有益于對(duì)整體的把握。
3.2.主要程序段分析
(1)讀入圖像部分的程序段分析:
%打開圖像
[FileName, FilePath]=uigetfile('*.jpg;*.png;*.tif;*.img;*.gif;','請(qǐng)選擇圖像數(shù)據(jù)');
if  isequal(FilePath,0)        %如果未選擇圖像則返回,防止報(bào)錯(cuò)
    return;
end
str=[FilePath FileName];     %文件的路徑,文件名稱
Image=imread(str);
imshow(Image)            %讀入圖形,顯示圖形
%%掩膜處理方式預(yù)設(shè)置
Gray=rgb2gray(Image);      %灰度處理
Blackk=zeros(size(Gray));     %黑色掩膜處理
Whitee=255*ones(size(Gray)); %白色掩膜處理
R=Image(:,:,1);             %分別分出R分量
G=Image(:,:,2);             %分別分出G分量
B=Image(:,:,3);              %分別分出B分量
aa=0;                     %不做任何處理的原圖標(biāo)志位
此段程序?qū)崿F(xiàn)圖片的讀入并實(shí)現(xiàn)對(duì)掩膜方式的的初始化實(shí)現(xiàn),通過對(duì)三種掩膜方式設(shè)置,后面可以直接選擇。
(2)掩膜方式選擇及判別條件確定主要程序段分析(以紅色提取為例):
function Redbutton_Callback(hObject, eventdata, handles)
global  Image  R  G  B  diff_R   Gray   Blackk Whitee aa
%掩膜方式的選擇:從下拉菜單中選擇掩膜方式
str1=get(handles.popupmenu1,'String');
val=get(handles.popupmenu1,'Value');
switch  str1{val}
case '灰度掩膜'
current_data=Gray;
case '黑色掩膜'
current_data=Blackk;
case '白色掩膜'
current_data=Whitee;
end
%從GUI編輯界面上獲取當(dāng)前所選顏色的  閾值
diffr=get(handles.edit1,'String');
diff_R =str2num(diffr);
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分量差值大于設(shè)定
Mask=current_data(XYR);  % 掩膜方式
RP_R(XYR)=Mask;
RP_G(XYR)=Mask;
RP_B(XYR)=Mask;                % 使得非紅色區(qū)域變?yōu)檫x擇的顏色
Image_R(:,:,1)=RP_R;
Image_R(:,:,2)=RP_G;
Image_R(:,:,3)=RP_B;
imshow(Image_R)
title(strcat(['R分量閾值為',diffr,'時(shí)的圖像']));
aa=1;                          %進(jìn)行紅色處理的標(biāo)志位
其他顏色(綠色,藍(lán)色,黃色,洋紅色,青色)提取主要程序段與之類似。
(3)保存圖片部分的主要程序段分析:
function pushbutton6_Callback(hObject, eventdata, handles)
global aa rrnum ggnum bbnum yynum mmnum ccnum
switch aa
    case 0                            %%%%%0,代表著所摁下按鈕的代號(hào),即原圖
        picname='原圖.jpg';  
        case 1                        %%%%%1,代表著所摁下按鈕的代號(hào),即紅色
        rrname=int2str(rrnum);          %%%%此數(shù)據(jù)代表著當(dāng)前是第幾次保存紅色
        rrrname=get(handles.edit1,'string');%%%%此數(shù)據(jù)代表著當(dāng)前保存時(shí)的閾值
        picname=strcat(['Red',rrname,'-',rrrname,'.jpg']);%%保存的路徑及名字
        rrnum=rrnum+1;                    %%%% 每按下按鈕一次,次數(shù)加1
    case 2                            %%%%%2,代表著所摁下按鈕的代號(hào),即綠色
        ggname=int2str(ggnum);
        gggname=get(handles.edit4,'string');
        picname=strcat(['Green',ggname,'-',gggname,'.jpg']);
        ggnum=ggnum+1;                   %%%% 每按下按鈕一次,次數(shù)加1
    case 3                            %%%%%3,代表著所摁下按鈕的代號(hào),即藍(lán)色
        bbname=int2str(bbnum);
        bbbname=get(handles.edit5,'string');
        picname=strcat(['Blue',bbname,'-',bbbname,'.jpg']);
        bbnum=bbnum+1;                   %%%% 每按下按鈕一次,次數(shù)加1
    case 4                            %%%%%4,代表著所摁下按鈕的代號(hào),即洋色
        yyname=int2str(yynum);
        yyyname=get(handles.edit7,'string');
        picname=strcat(['Yellow',yyname,'-',yyyname,'.jpg']);
        yynum=yynum+1;                     %%%% 每按下按鈕一次,次數(shù)加1
    case 5                             %%%%5,代表著所摁下按鈕的代號(hào),即黃色
        mmname=int2str(mmnum);
        mmmname=get(handles.edit8,'string');
        picname=strcat(['Mag',mmname,'-',mmmname,'.jpg']);
        mmnum=mmnum+1;                %%%% 每按下按鈕一次,次數(shù)加1
    case 6                            %%%%%6,代表著所摁下按鈕的代號(hào),即青色
        ccname=int2str(ccnum);
        cccname=get(handles.edit10,'string');
        picname=strcat(['Cyan',ccname,'-',cccname,'.jpg']);
        ccnum=ccnum+1;                    %%%% 每按下按鈕一次,次數(shù)加1
end
pix=getframe(handles.axes1);             %%%%獲取當(dāng)前的坐標(biāo)軸圖像
%%%%%%生成圖片到設(shè)定路徑
imwrite(pix.cdata,strcat(['C:\Users\Administrator\Desktop\',picname]));
%%%%%%保存成功時(shí)通知框提示
msgbox(strcat(['已成功保存當(dāng)前圖片為',picname,'到默認(rèn)路徑']))
通過此程序,可以實(shí)現(xiàn)對(duì)選取提取顏色的圖像進(jìn)行保存處理,并將適應(yīng)度,顏色序號(hào)等信息以文件名等保存。
4. GUI界面設(shè)計(jì)及程序仿真效果演示
4.1.GUI簡(jiǎn)介及使用優(yōu)點(diǎn)
圖形用戶接口(Graphical  User Interface,簡(jiǎn)稱GUI),其是有窗口,菜單和對(duì)話框等各種圖形元素組成的用戶界面。在這種用戶界面中,可以使操作形象生動(dòng),方便靈活。
對(duì)于圖形顏色分離,由于對(duì)不同的圖片,其對(duì)顏色的閾值要求不同,即對(duì)非指定顏色掩膜要求不同,有時(shí)不可能一次調(diào)整參數(shù)就能達(dá)到滿意結(jié)果,而是需要對(duì)其選擇不同的參數(shù),因此可以做出GUI界面,對(duì)修改參數(shù)方面,且具有實(shí)時(shí)預(yù)覽功能,使交互性更方便,極大滿足用戶體驗(yàn)。
如下圖即為GUI界面的功能區(qū)按鍵如下圖5:
圖5 GUI界面功能
4.2. 程序仿真效果演示
圖片提取效果仿真過程效果如下圖所示演示,圖6:
圖6 GUI界面讀入要處理的圖片
如下圖為掩膜方式分別選擇為:灰度掩膜,黑色掩膜,白色掩膜等三種方式來實(shí)現(xiàn)六種顏色的處理,其中紅色,綠色使用灰度掩膜方式,藍(lán)色,洋紅色使用黑色掩膜,黃色,青色采用白色掩膜,其效果圖如圖7~圖12:
      
圖7 使用灰度掩膜的紅色提取           圖8 使用灰度掩膜的紅色提取
      
圖9 使用黑色掩膜的藍(lán)色提取         圖10 使用黑色掩膜的品紅色提取
     
圖10 使用白色掩膜的青色提取       圖11 使用白色掩膜的青色提取
五.課程總結(jié)
缺點(diǎn):只能暫時(shí)對(duì)六種基本顏色分離出來,相對(duì)來說仍是比較單一,對(duì)于過渡地帶顏色無法準(zhǔn)確利用判別規(guī)則提取。
展望:作為圖像處理初學(xué)者,自己所研究的方向可能會(huì)用到這方面知識(shí),所涉及的知識(shí)背景尚淺,希望對(duì)同學(xué)們起到拋磚引玉的作用,一起探討,共同努力!
RGB
圖像顏色分離的
MATLAB
實(shí)現(xiàn)
1.理論分析
1.1程序設(shè)計(jì)的初衷
自己的專業(yè)方向會(huì)可能用到圖像處理的知識(shí),作為數(shù)字圖像處理的初學(xué)者,此程序完全是為實(shí)現(xiàn)自己興趣并結(jié)合我們所學(xué)的MATLAB課程及GUI知識(shí)而編寫的,可以實(shí)現(xiàn)對(duì)圖中感興趣物體顏色的提取,從而突出事物。設(shè)計(jì)的知識(shí)背景或許淺,課下希望能向研究Matlab數(shù)字圖像處理的老師,同學(xué)們多多請(qǐng)教,交流。
1.2程序?qū)崿F(xiàn)的理論分析
若想實(shí)現(xiàn)對(duì)RGB圖像顏色提取,最為關(guān)鍵的也最為核心的是對(duì)R/G/B等顏色嚴(yán)格界定的判別規(guī)則。而對(duì)于非目標(biāo)顏色則會(huì)通過掩膜覆蓋,從而突出顯示所要提取到的顏色。
此程序中提到的判別規(guī)則是更具R/G/B中某一顏色分量明顯不小于其它分量時(shí),即判別某像素點(diǎn)為某種顏色,并通過設(shè)置判別閾值,來控制判別條件的顏色與否。
1.2.RGB圖像背景知識(shí)介紹
所謂的RGB圖像,RGB色彩模式是工業(yè)界的一種顏色標(biāo)準(zhǔn),是通過對(duì)紅(R)、綠(G)、藍(lán)(B)三個(gè)顏色通道的變化以及它們相互之間的疊加來得到各式各樣的顏色的,RGB即是代表紅、綠、藍(lán)三個(gè)通道的顏色,這個(gè)標(biāo)準(zhǔn)幾乎包括了人類視力所能感知的所有顏色,是目前運(yùn)用最廣的顏色系統(tǒng)之一。
    RGB圖像原理如下圖1~圖2:
   
圖1 RGB圖像原理               圖2 RGB圖像RGB三色矩陣
所以RGB圖像的顏色分布區(qū)間如圖3:
圖3  RGB圖像的顏色分布圖
因此可得到六種顏色的判別規(guī)則如下:
利用以上判別準(zhǔn)則來作為程序設(shè)計(jì)的核心,通過設(shè)計(jì)判斷語句,對(duì)圖像的不同色域進(jìn)行分離,從而實(shí)現(xiàn)顏色分離。
3.程序設(shè)計(jì)
3.1設(shè)計(jì)流程圖
以下是整體程序的設(shè)計(jì)流程如圖4:
圖4 程序?qū)崿F(xiàn)流程圖
通過此流程圖,可以把握全局思想來完成圖像顏色提取的框架結(jié)構(gòu),這樣可以有益于對(duì)整體的把握。
3.2.主要程序段分析
(1)讀入圖像部分的程序段分析:
%打開圖像
[FileName, FilePath]=uigetfile('*.jpg;*.png;*.tif;*.img;*.gif;','請(qǐng)選擇圖像數(shù)據(jù)');
if  isequal(FilePath,0)        %如果未選擇圖像則返回,防止報(bào)錯(cuò)
    return;
end
str=[FilePath FileName];     %文件的路徑,文件名稱
Image=imread(str);
imshow(Image)            %讀入圖形,顯示圖形
%%掩膜處理方式預(yù)設(shè)置
Gray=rgb2gray(Image);      %灰度處理
Blackk=zeros(size(Gray));     %黑色掩膜處理
Whitee=255*ones(size(Gray)); %白色掩膜處理
R=Image(:,:,1);             %分別分出R分量
G=Image(:,:,2);             %分別分出G分量
B=Image(:,:,3);              %分別分出B分量
aa=0;                     %不做任何處理的原圖標(biāo)志位
此段程序?qū)崿F(xiàn)圖片的讀入并實(shí)現(xiàn)對(duì)掩膜方式的的初始化實(shí)現(xiàn),通過對(duì)三種掩膜方式設(shè)置,后面可以直接選擇。
(2)掩膜方式選擇及判別條件確定主要程序段分析(以紅色提取為例):
function Redbutton_Callback(hObject, eventdata, handles)
global  Image  R  G  B  diff_R   Gray   Blackk Whitee aa
%掩膜方式的選擇:從下拉菜單中選擇掩膜方式
str1=get(handles.popupmenu1,'String');
val=get(handles.popupmenu1,'Value');
switch  str1{val}
case '灰度掩膜'
current_data=Gray;
case '黑色掩膜'
current_data=Blackk;
case '白色掩膜'
current_data=Whitee;
end
%從GUI編輯界面上獲取當(dāng)前所選顏色的  閾值
diffr=get(handles.edit1,'String');
diff_R =str2num(diffr);
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分量差值大于設(shè)定
Mask=current_data(XYR);  % 掩膜方式
RP_R(XYR)=Mask;
RP_G(XYR)=Mask;
RP_B(XYR)=Mask;                % 使得非紅色區(qū)域變?yōu)檫x擇的顏色
Image_R(:,:,1)=RP_R;
Image_R(:,:,2)=RP_G;
Image_R(:,:,3)=RP_B;
imshow(Image_R)
title(strcat(['R分量閾值為',diffr,'時(shí)的圖像']));
aa=1;                          %進(jìn)行紅色處理的標(biāo)志位
其他顏色(綠色,藍(lán)色,黃色,洋紅色,青色)提取主要程序段與之類似。
(3)保存圖片部分的主要程序段分析:
function pushbutton6_Callback(hObject, eventdata, handles)
global aa rrnum ggnum bbnum yynum mmnum ccnum
switch aa
    case 0                            %%%%%0,代表著所摁下按鈕的代號(hào),即原圖
        picname='原圖.jpg';  
        case 1                        %%%%%1,代表著所摁下按鈕的代號(hào),即紅色
        rrname=int2str(rrnum);          %%%%此數(shù)據(jù)代表著當(dāng)前是第幾次保存紅色
        rrrname=get(handles.edit1,'string');%%%%此數(shù)據(jù)代表著當(dāng)前保存時(shí)的閾值
        picname=strcat(['Red',rrname,'-',rrrname,'.jpg']);%%保存的路徑及名字
        rrnum=rrnum+1;                    %%%% 每按下按鈕一次,次數(shù)加1
    case 2                            %%%%%2,代表著所摁下按鈕的代號(hào),即綠色
        ggname=int2str(ggnum);
        gggname=get(handles.edit4,'string');
        picname=strcat(['Green',ggname,'-',gggname,'.jpg']);
        ggnum=ggnum+1;                   %%%% 每按下按鈕一次,次數(shù)加1
    case 3                            %%%%%3,代表著所摁下按鈕的代號(hào),即藍(lán)色
        bbname=int2str(bbnum);
        bbbname=get(handles.edit5,'string');
        picname=strcat(['Blue',bbname,'-',bbbname,'.jpg']);
        bbnum=bbnum+1;                   %%%% 每按下按鈕一次,次數(shù)加1
    case 4                            %%%%%4,代表著所摁下按鈕的代號(hào),即洋色
        yyname=int2str(yynum);
        yyyname=get(handles.edit7,'string');
        picname=strcat(['Yellow',yyname,'-',yyyname,'.jpg']);
        yynum=yynum+1;                     %%%% 每按下按鈕一次,次數(shù)加1
    case 5                             %%%%5,代表著所摁下按鈕的代號(hào),即黃色
        mmname=int2str(mmnum);
        mmmname=get(handles.edit8,'string');
        picname=strcat(['Mag',mmname,'-',mmmname,'.jpg']);
        mmnum=mmnum+1;                %%%% 每按下按鈕一次,次數(shù)加1
    case 6                            %%%%%6,代表著所摁下按鈕的代號(hào),即青色
        ccname=int2str(ccnum);
        cccname=get(handles.edit10,'string');
        picname=strcat(['Cyan',ccname,'-',cccname,'.jpg']);
        ccnum=ccnum+1;                    %%%% 每按下按鈕一次,次數(shù)加1
end
pix=getframe(handles.axes1);             %%%%獲取當(dāng)前的坐標(biāo)軸圖像
%%%%%%生成圖片到設(shè)定路徑
imwrite(pix.cdata,strcat(['C:\Users\Administrator\Desktop\',picname]));
%%%%%%保存成功時(shí)通知框提示
msgbox(strcat(['已成功保存當(dāng)前圖片為',picname,'到默認(rèn)路徑']))
通過此程序,可以實(shí)現(xiàn)對(duì)選取提取顏色的圖像進(jìn)行保存處理,并將適應(yīng)度,顏色序號(hào)等信息以文件名等保存。
4. GUI界面設(shè)計(jì)及程序仿真效果演示
4.1.GUI簡(jiǎn)介及使用優(yōu)點(diǎn)
圖形用戶接口(Graphical  User Interface,簡(jiǎn)稱GUI),其是有窗口,菜單和對(duì)話框等各種圖形元素組成的用戶界面。在這種用戶界面中,可以使操作形象生動(dòng),方便靈活。
對(duì)于圖形顏色分離,由于對(duì)不同的圖片,其對(duì)顏色的閾值要求不同,即對(duì)非指定顏色掩膜要求不同,有時(shí)不可能一次調(diào)整參數(shù)就能達(dá)到滿意結(jié)果,而是需要對(duì)其選擇不同的參數(shù),因此可以做出GUI界面,對(duì)修改參數(shù)方面,且具有實(shí)時(shí)預(yù)覽功能,使交互性更方便,極大滿足用戶體驗(yàn)。
如下圖即為GUI界面的功能區(qū)按鍵如下圖5:
圖5 GUI界面功能
4.2. 程序仿真效果演示
圖片提取效果仿真過程效果如下圖所示演示,圖6:
圖6 GUI界面讀入要處理的圖片
如下圖為掩膜方式分別選擇為:灰度掩膜,黑色掩膜,白色掩膜等三種方式來實(shí)現(xiàn)六種顏色的處理,其中紅色,綠色使用灰度掩膜方式,藍(lán)色,洋紅色使用黑色掩膜,黃色,青色采用白色掩膜,其效果圖如圖7~圖12:
      
圖7 使用灰度掩膜的紅色提取           圖8 使用灰度掩膜的紅色提取
      
圖9 使用黑色掩膜的藍(lán)色提取         圖10 使用黑色掩膜的品紅色提取
     
圖10 使用白色掩膜的青色提取       圖11 使用白色掩膜的青色提取
五.課程總結(jié)
缺點(diǎn):只能暫時(shí)對(duì)六種基本顏色分離出來,相對(duì)來說仍是比較單一,對(duì)于過渡地帶顏色無法準(zhǔn)確利用判別規(guī)則提取。
展望:作為圖像處理初學(xué)者,自己所研究的方向可能會(huì)用到這方面知識(shí),所涉及的知識(shí)背景尚淺,希望對(duì)同學(xué)們起到拋磚引玉的作用,一起探討,共同努力!

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩中文国产一区发布 | 毛片免费在线观看 | 久久夜视频 | 日韩毛片免费看 | 国产在线一区二区 | 在线免费观看成人 | 久久免费观看一级毛片 | 国产精品久久久久久久久 | 亚洲精品久久久久久久久久久 | 中文字幕亚洲视频 | 亚洲一区免费视频 | 久久伊人一区 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 日韩不卡一区二区三区 | 男人的天堂avav | 精品亚洲永久免费精品 | 亚洲永久在线 | 国产日韩一区二区三区 | 午夜精品一区二区三区在线观看 | 日韩一区在线播放 | 视频1区2区| 久久精品1 | 日本在线视频一区二区 | 日韩福利视频 | 中文字幕一区二区三区乱码在线 | 久久福利电影 | h在线| 久久精品超碰 | 一区二区三区小视频 | 偷拍亚洲色图 | 亚洲高清视频一区二区 | 国产日本精品视频 | 欧美日韩在线一区二区三区 | 成人av免费 | 久久蜜桃精品 | 国产sm主人调教女m视频 | 99爱免费 | 国产免费又色又爽又黄在线观看 | 欧美视频免费在线 | 欧美日韩一二区 | 欧美中文视频 |