精华内容
下载资源
问答
  • matlab提取rgb
    千次阅读 多人点赞
    2021-01-15 17:02:02

    1、问题提出

    读取RGB彩色图像,将红色分量,绿色分量。蓝色分量提取出来,分别进行如下变化:像素值小于100的改为0,像素值大于200的改成255,其他像素值乘以2再减去60,然后进行各分量的组合得到新的图像。


    2、程序编写:

    本程序主要运用for循环语句,和一些基本的函数库:imread(读取图片)、cat(进行RGB各分量的组合)、imshow(绘制图像)。采用的图片为RGB彩色图片,像素大小为512×480,文件命名frutis.jpg,如下:
    在这里插入图片描述
    (1)RGB分量的读取

    %读取分量
    rgb_image=imread('fruits.jpg');%读取图片
    fR=rgb_image(:, :, 1);%读取红色分量
    fG=rgb_image(:, :, 2);%读取绿色分量
    fB=rgb_image(:, :, 3);%读取蓝色分量
    

    (2)RGB分量的变换

    %对红色分量进行变换
    fR2=double(fR);%转换为双精度浮点类型
    for i=1:1:480
        for j=1:1:512  %遍历
            if(fR2(i,j)<100)
                fR2(i,j)=0;  %像素小于100的等于0
            elseif(fR2(i,j)>200)
                fR2(i,j)=255;  %像素大于200的等于255
            else
                fR2(i,j)=2.*fR2(i,j)-60;%其他的像素点乘以2倍再减60
            end
        end
    end
    fR2=uint8(fR2);%强制将数据转换为8位无符号整数
    
    %对绿色分量进行变换
    fG2=double(fG);%转换为双精度浮点类型
    for i=1:1:480
        for j=1:1:512  %遍历
            if(fG2(i,j)<100)
                fG2(i,j)=0;  %小于100的等于0
            elseif(fG2(i,j)>200)
                fG2(i,j)=255;  %大于200的等于255
            else
                fG2(i,j)=2.*fG2(i,j)-60;%其他的像素点乘以2倍再减60
            end
        end
    end
    fG2=uint8(fG2);%强制将数据转换为8位无符号整数
    
    %对蓝色分量进行变换
    fB2=double(fB);%转换为双精度浮点类型
    for i=1:1:480
        for j=1:1:512  %遍历
            if(fB2(i,j)<100)
                fB2(i,j)=0;  %像素小于100的等于0
            elseif(fB2(i,j)>200)
                fRB2(i,j)=255;  %像素大于200的等于255
            else
                fB2(i,j)=2.*fB2(i,j)-60;%其他的像素点乘以2倍再减60
            end
        end
    end
    fR2=uint8(fR2);%强制将数据转换为8位无符号整数
    

    (3)RGB分量的组合

    %组合变换后的图像
    rgb_1=cat(3,fR2,fG2,fB2);%利用变换后的各分量进行图像的组合
    

    (4)绘制命令

    %显示图像
    figure(1)
    subplot(231);imshow(fR);title('原始红色分量');
    subplot(234);imshow(fR2);title('变换后红色分量');
    subplot(232);imshow(fG);title('原始绿色分量');
    subplot(235);imshow(fG2);title('变换后绿色分量');
    subplot(233);imshow(fB);title('原始蓝色分量');
    subplot(236);imshow(fB2);title('变换后蓝色分量');
    figure(2)
    subplot(121);imshow(rgb_image);title('原始图像');
    subplot(122);imshow(rgb_1);title('重新组合后图像');
    

    3、运行结果

    在这里插入图片描述在这里插入图片描述


    最后:

    不定期发布一些matlab设计内容,敬请期待。包括但不限于如下内容:信号处理、通信仿真、gui设计、matlab appdesigner,simulink仿真。有任何有关MATLAB的问题可加QQ:2802009708进行咨询。或扫码进行添加。
    在这里插入图片描述

    更多相关内容
  • 利用matlab提取图片像素点的RGB
  • rgb_RGB提取_matlab提取RGB值.zip
  • rgb_RGB提取_matlab提取RGB值_源码.rar
  • 这包含一个 Matlab 程序,您可以在其中将像素值提取到文本文件和另一个程序以从文本文件中提取 rgb 值并重新生成图像
  • Matlab 提取RGB值程序

    2011-05-30 07:14:53
    Matlab 提取RGB值 人的眼睛通过红、绿、蓝三种可见光对视网膜的锥状细胞的刺激感受颜色,这些光在波长为580mm(红色)、545mm(绿色)和440mm(蓝色)时的刺激达到高峰。通过光源中的强度比较,我们感受光的颜色。这种视觉...
  • MATLAB代码如下 clc clear Image=imread('红绿圆.png'); R=Image(:,:,1); G=Image(:,:,2); B=Image(:,:,3); figure(1); subplot(2,2,1),imshow(Image),title('image') subplot(2,2,2),imshow(R),title('r')%有红则...

    三种图形如下

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    MATLAB代码如下

    clc
    clear
    Image=imread('红绿圆.png');
    R=Image(:,:,1); G=Image(:,:,2); B=Image(:,:,3);
    figure(1);
    subplot(2,2,1),imshow(Image),title('image')
    subplot(2,2,2),imshow(R),title('r')%有红则显示白,没有则黑
    subplot(2,2,3),imshow(G),title('g')%有绿则白,无则黑
    subplot(2,2,4),imshow(B),title('b')%有蓝则白,无则黑
    XYR=((R-G)>80&(R-B)>80);
    XYG=((G-R)>80&(G-B)>80);
    XYB=((B-R)>80&(B-G)>80);
    XYY=((R-B)>200&(G-B)>200&(R-B)&(R-G)<30);
    
    sumG=sum(sum(XYG));
    sumR=sum(sum(XYR));
    sumB=sum(sum(XYB));
    sumY=sum(sum(XYY));
    if(sumR>sumG&sumR>sumB)
        disp('It is red!');
        MY_Bit_img=XYR;
    end
    if(sumG>sumR&sumG>sumB)
        disp('It is green!');
        MY_Bit_img=XYG;
    end
    if(sumB>sumG&sumB>sumR)
        disp('It is blue!');
        MY_Bit_img=XYB;
    end
    if(sumY>sumR&sumY>sumB&sumY>sumG)
        disp('It is yellow!');
        MY_Bit_img=XYY;
    end
    sum_l=sum(MY_Bit_img);
    sum_r=sum(MY_Bit_img,2);
    len_l=max(sum_l);
    len_r=max(sum_r);
    len=(len_r+len_l)/2;
    area=sum(sum_l); 
    circle=(3.14*len^2)/4;
    square=len_l*len_r;
    triangle=1.732*len_l*len_r/4;
    a=[circle/area,square/area,triangle/area];
    b=[1,1,1];
    [value,pos]=min(abs(a-b));
    if(pos==1)
        disp('It is circle!');
    elseif(pos==2)
        disp('It is square!');
    else
        disp('It is triangle!');
    end
    
    

    效果图

    红圆
    在这里插入图片描述

    蓝三角
    在这里插入图片描述

    绿方
    在这里插入图片描述

    展开全文
  • matlab 图片RGB颜色提取

    万次阅读 多人点赞 2019-10-12 22:32:47
    APP designer版本链接:MATLAB App Designer 特别篇:RGB颜色提取器 新版本链接:matlab图片RGB颜色提取第二版 写了一个程序能实现导入图片识别颜色 支持屏幕截图和从电脑倒入图片 鼠标移动到想要取色的地方点击可以...

    APP designer版本链接:MATLAB App Designer 特别篇:RGB颜色提取器
    新版本链接:matlab图片RGB颜色提取第二版


    写了一个程序能实现导入图片识别颜色
    在这里插入图片描述
    支持屏幕截图和从电脑倒入图片
    在这里插入图片描述
    鼠标移动到想要取色的地方点击可以获取颜色
    在这里插入图片描述
    可以将颜色暂时保存在右边
    在这里插入图片描述
    目前导出颜色数据是从命令行窗口输出
    在这里插入图片描述

    完整代码

    function getcolor
    clc;clear;              %清空工作区数据
    %设置全局变量==============================================================
    global selected;        %是否选中颜色,值为1时选中颜色,方形颜色展示框内颜色不随鼠标移动而变化
                            %              值为0时选未中颜色,方形颜色展示框内颜色随鼠标移动而改变
                            
    global ima;             %图片展示区要展示的图片
    global GUI;             %绘制GUI的类
    global x_limit;         %展示区图片x坐标范围
    global y_limit;         %展示区图片y坐标范围
    global color;           %当前鼠标选中的颜色
    global IMA;             %ima图像的绘制函数
    
    global color_list;      %存储的颜色(列表形式)
    global color_number;    %下一次存储颜色会存储到颜色列表的第几行
    color_number=1;         %第一次存储颜色会存储到颜色列表第一行
    color_list=[];
    
    %GUI绘制===================================================================
    GUI.fig=figure('units','pixels',...    %绘制背景
        'position',[350 100 800 500],...
        'Numbertitle','off',...
        'menubar','none',...
        'resize','off',...
        'name','getcolor',...
        'color',[0.95 0.95 0.95]);
    %图像及颜色展示部分的文本和画框--------------------------------------------
    GUI.axes=axes('Units','pixels',...         %绘制图片展示框
          'PlotBoxAspectRatio',[1 1 1],...
          'Position',[50 30 400 400],...
          'Color',[0.98 0.98 0.98],...
          'Box','on', ...
          'XLim',[0 500],...
          'YLim',[0 500], ...
          'XColor','w','YColor','w',...
          'YDir','reverse', ...
          'Tag','imageaxes',...
          'xtick',[],'ytick',[]);
      
    GUI.title=uicontrol('parent',GUI.fig,...  %绘制小标题
        'style','text',...
        'string','色彩识别',...
        'horizontalalign','center',...
        'position',[50 440 400 30],...
        'backgroundcolor',[0.85 0.89 0.85],...
        'foregroundcolor','k',...
        'fontsize',15);
    
    GUI.colordisplaybox=...                  %绘制方形颜色展示框
        uicontrol('parent',GUI.fig,...
        'style','text',...
        'string','',...
        'horizontalalign','left',...
        'position',[460 330 100 100],...
        'backgroundcolor',[1 1 1],...
        'foregroundcolor','k',...
        'fontsize',10);
    
    GUI.rgbdisplaybox=...                    %绘制rgb数据展示框
        uicontrol('parent',GUI.fig,...
        'style','text',...
        'string','',...
        'horizontalalign','center',...
        'position',[350 440 210 30],...
        'backgroundcolor',[1 1 1],...
        'foregroundcolor','k',...
        'fontsize',10);
    %功能性按钮生成------------------------------------------------------------
    %该部分每个按钮的基础设置几乎相同,最大的区别就是不同的按钮有不同的回调函数
    GUI.savecolorbutton=...                    %颜色储存按钮
        uicontrol('parent',GUI.fig,...
        'style','pushbutton',...
        'string','储存颜色',...
        'position',[460 290 100 30],...
        'backgroundcolor',[0.85 0.89 0.85],...
        'foregroundcolor','k',...
        'fontsize',15,...
        'callback',@save_color);               
    
    GUI.deletedatabutton=...                   %清空数据按钮
        uicontrol('parent',GUI.fig,...
        'style','pushbutton',...
        'string','清空数据',...
        'position',[460 230 100 30],...
        'backgroundcolor',[0.8 0.9 0.9],...
        'foregroundcolor','k',...
        'fontsize',15,...
        'callback',@clear_data);
    
    GUI.deletepicbutton=...                   %删除图片按钮
        uicontrol('parent',GUI.fig,...
        'style','pushbutton',...
        'string','删除图片',...
        'position',[460 180 100 30],...
        'backgroundcolor',[0.8 0.9 0.9],...
        'foregroundcolor','k',...
        'fontsize',15,...
        'callback',@delete_pic);
    GUI.getcapbutton=...                      %屏幕截图按钮
        uicontrol('parent',GUI.fig,...
        'style','pushbutton',...
        'string','屏幕截图',...
        'position',[460 130 100 30],...
        'backgroundcolor',[0.8 0.9 0.9],...
        'foregroundcolor','k',...
        'fontsize',15,...
        'callback',@get_capture);
    
    GUI.getpicbutton=...                      %读取图片按钮
        uicontrol('parent',GUI.fig,...
        'style','pushbutton',...
        'string','读取图片',...
        'position',[460 80 100 30],...
        'backgroundcolor',[0.8 0.9 0.9],...
        'foregroundcolor','k',...
        'fontsize',15,...
        'callback',@get_image);
    
    GUI.getcolorbutton=...                     %获取颜色按钮
        uicontrol('parent',GUI.fig,...
        'style','pushbutton',...
        'string','获取颜色',...                %该按钮的文本会在'获取颜色''继续取色'之间切换
        ...                                    %主要取决于selected的数值
        'position',[460 30 100 30],...
        'backgroundcolor',[0.8 0.9 0.9],...
        'foregroundcolor','k',...
        'fontsize',15,...
        'callback',@get_color);
    
    GUI.inputbutton=uicontrol('parent',GUI.fig,...
        'style','pushbutton',...
        'string','清除最后一个颜色',...
        'position',[600 80 190 30],...
        'backgroundcolor',[0.85 0.89 0.85],...
        'foregroundcolor','k',...
        'fontsize',15,...
        'callback',@delete_last);
    GUI.inputbutton=uicontrol('parent',GUI.fig,...
        'style','pushbutton',...
        'string','导出数据',...
        'position',[600 30 190 30],...
        'backgroundcolor',[0.85 0.89 0.85],...
        'foregroundcolor','k',...
        'fontsize',15,...
        'callback',@output_data);
    %颜色储存区生成------------------------------------------------------------
    for i=1:9
        GUI.colorstore(i)=...                  %颜色储存区那九个小方框
        uicontrol('parent',GUI.fig,...
        'style','text',...
        'string','',...
        'horizontalalign','left',...
        'position',[600 440-40*(i-1) 30 30],...
        'backgroundcolor',[1 1 1],...
        'foregroundcolor','k',...
        'fontsize',10);    
    end
    
    for i=1:9                                  %颜色储存区存储数据的九个长方形框
        GUI.rgbstore(i)=...
        uicontrol('parent',GUI.fig,...
        'style','text',...
        'string','',...
        'horizontalalign','center',...
        'position',[640 440-40*(i-1) 150 30],...
        'backgroundcolor',[1 1 1],...
        'foregroundcolor','k',...
        'fontsize',8);    
    end
    %回调函数部分==============================================================
        function get_image(~,~) %图像选择函数
            
            warning off;        %当你未选择图片直接关闭图库时,命令窗口会有报错,
                                %但是并不会影响程序运行,不妨使用warning off隐藏报错
            try
            [filename, pathname] = uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...
                '*.*','All Files' });              %获得选择图片的存储位置
            ima = imread([ pathname,filename]);    %读取该存储位置下的图片
            [x,y,~]=size(ima);                     %获取图片大小
            x_limit=x;y_limit=y;
            leng=max([x_limit,y_limit]);
            set(GUI.axes,...                       %调整图片展示框横纵轴范围
            'XLim',[0 leng],...
            'YLim',[0 leng]);
            delete(IMA);
            IMA=imshow(ima);                       %展示图片
            catch
            end
        end
    
        function get_capture(~,~) %截图获取函数
            %该部分源于CSDN上某篇屏幕截图文章,不做过多解释
            screensize=get(0,'screensize');
            screensize=1.5*screensize;
            robot=java.awt.Robot();
            rectangle=java.awt.Rectangle();
            rectangle.x=0;
            rectangle.y=0;
            rectangle.width=screensize(3);
            rectangle.height=screensize(4);
            image=robot.createScreenCapture(rectangle);
            data=image.getData(); 
            temp=zeros(screensize(3)*screensize(4)*3,1);
            temp=data.getPixels(0,0,screensize(3),screensize(4),temp);  
            temp=uint8(temp);
            R=temp(1:3:end); 
            G=temp(2:3:end); 
            B=temp(3:3:end);
            R=reshape(R,[screensize(3),screensize(4)]); 
            G=reshape(G,[screensize(3),screensize(4)]); 
            B=reshape(B,[screensize(3),screensize(4)]);
            R=R';
            G=G';
            B=B';
            
            x_limit=screensize(4); 
            y_limit=screensize(3);
            leng=max([x_limit,y_limit]);
            set(GUI.axes,...
            'XLim',[0 leng],...
            'YLim',[0 leng]);
            ima=cat(3,R,G,B);
            delete(IMA);
            IMA=imshow(ima);
        end
    
        function delete_pic(~,~) %图像删除函数
            %参考下面clear_data函数的注释
            selected=1;          
            set(GUI.axes,...
            'XLim',[0 500],...
            'YLim',[0 500],...
            'Position',[50 30 400 400],...
            'Color',[0.98 0.98 0.98]);
            delete(IMA);
        end
    
        function clear_data(~,~) %清除数据函数
            selected=1;          %设置当前只有按下'获取颜色'按钮才能开始取色
            set(GUI.colordisplaybox,'backgroundcolor',[1 1 1]); %设置方形颜色展示框颜色为白色
            set(GUI.rgbdisplaybox,'string','');                 %设置rgb数据展示框数据为空
            set(GUI.axes,...
            'XLim',[0 500],...
            'YLim',[0 500],...
            'Position',[50 30 400 400],...
            'Color',[0.98 0.98 0.98]);
            set(GUI.getcolorbutton,'string','获取颜色');        %将getcolorbutton按钮的文本改为'获取颜色'
            delete(IMA);                                        %取消图片展示
        end
    
        function get_color(~,~) %颜色获取函数
            if selected==1 
                set(GUI.colordisplaybox,'backgroundcolor',[1 1 1]);
                set(GUI.rgbdisplaybox,'string','');       
            end
            selected=0;
            %设置鼠标移动的回调函数和鼠标点击的回调函数
            set(gcf,'WindowButtonMotionFcn',@whilemovefcn)  
            set(gcf,'WindowButtonDownFcn',@whileclickfcn)
        end
    
        function whilemovefcn(~,~) %鼠标移动的回调函数
            xy=get(gca,'CurrentPoint'); %获取鼠标坐标
            x=xy(1,2);y=xy(1,1);
            if x<=x_limit&&y<=y_limit&&x>=0&&y>=0  
                %鼠标超出方形图像展示框外时,设置鼠标位置为图像的边缘位置
                x(x>x_limit)=x_limit;   
                y(y>y_limit)=y_limit;
                x(x<1)=1;
                y(y<1)=1;
                %由于图像是以矩阵的形式储存的,我们要将鼠标坐标转化为矩阵中的行和列需要进行取整
                x=round(x);
                y=round(y);
                if selected==0
                    color=double([ima(x,y,1),ima(x,y,2),ima(x,y,3)]);
                    set(GUI.colordisplaybox,'backgroundcolor',color/255);
                    set(GUI.rgbdisplaybox,'string',['[',num2str(color(1)/255),'   ',num2str(color(2)/255),'   ',num2str(color(3)/255),']']);
                end
            else
                if selected==0
                    set(GUI.colordisplaybox,'backgroundcolor',[1 1 1]);
                    set(GUI.rgbdisplaybox,'string','');    
                end
            end
        end
    
        function whileclickfcn(~,~) %鼠标点击的回调函数         
                xy=get(gca,'CurrentPoint');
                x=xy(1,2);y=xy(1,1);
                if x<=x_limit&&y<=y_limit&&x>=0&&y>=0
                    selected=1;
                    set(GUI.colordisplaybox,'backgroundcolor',color/255);
                    set(GUI.rgbdisplaybox,'string',['[',num2str(color(1)/255),'   ',num2str(color(2)/255),'   ',num2str(color(3)/255),']']);
                    set(GUI.getcolorbutton,'string','继续取色');
                    %disp(color/255)
                end
        end
    
        function save_color(~,~) %储存颜色函数
            if (~isempty(get(GUI.rgbdisplaybox,'string')))&&color_number<10  %如果rgb数据展示区不为空并且已储存颜色数量小于10 
                set(GUI.colorstore(color_number),'backgroundcolor',color/255)
                set(GUI.rgbstore(color_number),'string',['[',num2str(color(1)/255),'   ',num2str(color(2)/255),'   ',num2str(color(3)/255),']'])
                color_list(color_number,:)=color;
                color_number=color_number+1;
            end
        end
    
        function delete_last(~,~) %清除最后一种颜色
            if color_number>1
                set(GUI.colorstore(color_number-1),'backgroundcolor',[1 1 1])
                set(GUI.rgbstore(color_number-1),'string','')
                color_list(end,:)=[];         %将储存的颜色列表最后一行删除
                color_number=color_number-1;  %下一次添加颜色的行前移
            end
        end
    
        function output_data(~,~) %命令行窗口输出函数
            if color_number>1
                disp(color_list/255)
            end
        end
    end
    
    展开全文
  • Matlab提取图像的RGB分量以及RGB的阈值分割

    万次阅读 多人点赞 2019-05-09 13:50:06
    Matlab提取RGB颜色分量: 我们知道,一张RGB图像,对应着一个M xN x3 的三维图像。这里的3代表着R,G,B三个分量。其数据类型为uint8类型。数值大小在[0,255]之间。 例如:我们在Matlab中读入本次测试的图像。I=...

    本教程讲解如何将一副RGB图像,提取出图像的R,G,B分量的图像。如何将图像进行颜色的阈值分割。

    原图像

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    Matlab提取RGB颜色分量:

    我们知道,一张RGB图像,对应着一个M x N x 3 的三维图像。这里的3代表着R,G,B三个分量。其数据类型为uint8类型。数值大小在[0,255]之间。

    例如:我们在Matlab中读入本次测试的图像。I=imread(‘test.bmp’);

    在工作区中可以看到其数值。

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    PR=I(:,:,1);%提取红色分量 PG=I(:,:,2);%提取绿色分量 PB=I(:,:,3);%提取蓝色分量

    运行代码:

    
    clc; 
    close all; 
    clear all; 
    I=imread('test.bmp');%要求你.m文件下有test.bmp这个图像文件 
    PR=I(:,:,1);%提取红色分量 
    PG=I(:,:,2);%提取绿色分量 
    PB=I(:,:,3);%提取蓝色分量 
    
    figure; 
    subplot(2,2,1);imshow(I);title('原图像'); 
    subplot(2,2,2);imshow(PR);title('提取红分量后'); 
    subplot(2,2,3);imshow(PG);title('提取绿色分量后'); 
    subplot(2,2,4);imshow(PB);title('提取蓝色分量后');
    
    
    

    运行的效果图:

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    RGB阈值分割

    上面这种RGB通道分量的提取的效果,并不是我想要的结果。我想要的结果是下图这样的。

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    因此,我们使用图像的阈值分割。

    阈值分割的基本思想是确定一个阈值,然后把每个像素点的灰度值和阈 值相比较,根据比较的结果把该像素划分为两类——前景或背景。

    源自参考文档:
    图像阈值化分割是一种传统的最常用的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术。它特别适用于目标和背景占据不同灰度级范围的图像。它不仅可以极大的压缩数据量,而且也大大简化了分析和处理步骤,因此在很多情况下,是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。图像阈值化的目的是要按照灰度级,对像素集合进行一个划分,得到的每个子集形成一个与现实景物相对应的区域,各个区域内部具有一致的属性,而相邻区域布局有这种一致属性。这样的划分可以通过从灰度级出发选取一个或多个阈值来实现。

    基本原理是:通过设定不同的特征阈值,把图像象素点分为若干类。

    常用的特征包括:直接来自原始图像的灰度或彩色特征;由原始灰度或彩色值变换得到的特征。

    实现代码:

    
    clc; 
    close all; 
    clear all; 
    I=imread('test.bmp'); 
    [m,n,d]=size(I); 
    
    level=15;%设置阈值 
    level2=70;%设置阈值 
    
    for i=1:m 
        for j=1:n 
            if((I(i,j,1)-I(i,j,2)>level2)&&(I(i,j,1)-I(i,j,3)>level2)) 
                r(i,j,1)=I(i,j,1); 
                r(i,j,2)=I(i,j,2); 
                r(i,j,3)=I(i,j,3); 
           else  
                r(i,j,1)=255; 
                r(i,j,2)=255; 
                r(i,j,3)=255; 
            end 
        end 
    end 
    
    figure; 
    subplot(2,2,1);imshow(I);title('原图像'); 
    subplot(2,2,2);imshow(r);title('提取红分量后');%显示提取红分量后的图 
    
    
    %提取绿分量,不满足阈值的变为白色 
    for i=1:m 
        for j=1:n 
            if((I(i,j,2)-I(i,j,1)>level)&&(I(i,j,2)-I(i,j,3)>level)) 
                g(i,j,1)=I(i,j,1); 
                g(i,j,2)=I(i,j,2); 
                g(i,j,3)=I(i,j,3); 
            else 
                g(i,j,1)=255; 
                g(i,j,2)=255; 
                g(i,j,3)=255; 
            end 
        end 
    end 
    
    subplot(2,2,3);imshow(g);title('提取绿分量后'); 
    
    
    %提取蓝色分量 
    for i=1:m 
        for j=1:n 
            if((I(i,j,3)-I(i,j,1)>level)&&(I(i,j,3)-I(i,j,2)>level)) 
                        b(i,j,1)=I(i,j,1); 
                        b(i,j,2)=I(i,j,2); 
                        b(i,j,3)=I(i,j,3); 
            else 
                b(i,j,1)=255; 
                b(i,j,2)=255; 
                b(i,j,3)=255; 
            end 
        end 
    end 
    
    subplot(2,2,4);imshow(b);title('提取蓝色分量后');
    
    
    

    运行结果图:

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    图像中去除某一个区域

    比如,我想去除红色分量的矩形。但是这两个红色分量数值非常的相近,不好通过阈值来分割。那我们要如何将红色矩形去除呢?(本篇文章使用最简单的去除方法,下一篇文章则会讲解如何使用形状识别来提取某个图形。)

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    解决方法:

    这里解决方法很简单,先将原图像,那一块区域赋值成白色,再通过阈值分割就可以将其区分开。

    代码实现:

    
    copy_image = I; 
    r = 50:100;%要赋值的行坐标 
    c = 20:300;%要赋值的列坐标 
    copy_image(r,c,1:3) = 255; 
    
    figure; 
    imshow(copy_image);
    
    
    
    

    运行结果:

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    在将其进行图像分割,即可将原来的矩形去除:

    参考文档:

    RGB图像中特定颜色的提取

    展开全文
  • Matlab对图片的RGB三种颜色进行提取

    千次阅读 2021-03-20 22:29:02
    使用MATLAB对图片的RGB三种颜色进行提取 说明:转载,感谢分享,链接如下: https://zhidao.baidu.com/question/203902913.html
  • matlab图像融合,对一幅图像的RGB三通道分别做不同的处理,然后重新融合
  • 在拿到一张图片时,想使用matla读取图片并做相应分析时,比如提取CCD获得的光强信息时,可以从bmp、tif或png图片格式中分解出RGB红绿蓝分量的图片,分别进行分析,把分解出的R值图,导入matlab中作三维或者二维图像...
  • 基于MATLAB APP designer的RGB颜色提取器,可以提取图片任意处的RGV,#16,HSV数据
  • MATLAB图像提取RGB各个分量图像
  • 用svm实现图片中目标的提取。ColorPix.exe为图片rgb值读取小软件,littleduck.jpg为目标图像。DuckLakeSegmentation_SVM.m为主程序,使用时可以选取图片处于目标位置像素点的rgb值作为特征训练svm。可以使用任意图片...
  • matlab 图片RGB颜色提取(第二版)

    万次阅读 多人点赞 2020-01-04 14:47:27
    之前使用matlab写了一个程序能实现导入图片识别颜色 为其增添了一些新的功能,包括:RGB格式设置,各类储存 并扩展了展示框颜色的存放量
  • 对图片的RGB三种颜色进行提取:分量提取以及相应的基础形式的变换。 代码如下: clear all;clc;close all; I001=imread('sfrggtth.jpg'); % flag001=imisrgb(I001);%判断是否是RGB图像 J001=rgb2gray(I001);%转换为...
  • 提取图像的颜色特征 matlab

    热门讨论 2012-05-15 16:32:56
    matlab提取图像的颜色特征 边界特征
  • Matlab-数字图像处理基础实验-获取图片rgb颜色分量及截取子图 Problem Statement 问题描述 1.Proficient in Matlab tools and complete two Matlab functions GetColorCom() & GetSubImage(). 2.Write a Matlab...
  • Matlab图像处理-RGB色彩提取原理方法. 本文中提到的RGB色彩提取方法最为关键的也最为难以严格界定的地方是对于R/G/B三种颜色的判别规则,本文中提到的判别规则是更具R/G/B中某一颜色分量明显不小于其它分量时,即...
  • 原创Matlab提取圆点中心坐标-circle.rar 首先感谢论坛的资料,让我少走了弯路。 circle.rar 名称:提取圆点中心坐标 测试图像:背景为黑色,圆点为白色。测试图像有五个圆点。 功能:提取...
  • rgb空间变换到hsi空间,并提取其中的浅绿到深绿
  • 基于matlab植物图像处理提取RGBHSI均值
  • 入门–分别提取图像三通道(RGB)灰度图 原图 输入下面代码后: t=imread('t1.jpg') imshow(t) 得到的图像和原图一样 但,执行下面代码后: t=imread('t1.jpg') t1=t(1:8:end,1:8:end) imshow(t1) 出现了三张图片...
  • 直接运行main.m即可,自动输出数据到excel,操作简单,之前想下载别人的发现老被骗,现在自己弄了一下,亲测绝对可用
  • Matlab实现鼠标点击获取该点RGB
  • matlab植物背景分离RGB和HSV特征提取案例,包括详细的代码资料和讲解注释
  • matlabrgb2gray函数代码MATLAB 上的 SIFT 的实现,由 . 这是中东技术大学“医学图像分析高级主题”课程的学期项目。 用法 在 Matlab 中读取图像并将其转换为灰度图像,然后将其用作SIFT函数的输入。 SIFT(Image, ...
  • 本程序可对论文/产品手册等资料中的各类曲线图片实现数据的提取与复原。不仅使用于包含单色单曲线的图片,亦可提取多色多曲线图片中任意曲线上的数据。 使用时,首先对图片坐标轴四点进行定位,随后按照提示进行操作...
  • 是对我发布的另一个资源的改进,加了一个批量功能,同样是数据直接输出在excel里,用起来很方便。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,473
精华内容 3,389
关键字:

matlab提取rgb

matlab 订阅