精华内容
下载资源
问答
  • matlab 将rgb图像转化为灰度图像

    千次阅读 2019-09-17 14:49:06
    源码: close all; %关闭当前所有图形窗口 clear all; %清空工作空间变量 clc; %清屏 x = imread('D:\timg.jpg');... %将rgb图像转化为灰度图像 set(0,'defaultFigurePosition',[100,100,1000,500]);...

    源码:


    close all;  %关闭当前所有图形窗口
    clear all;  %清空工作空间变量
    clc;        %清屏
    x = imread('D:\timg.jpg');  %读取rgb图片信息
    I = rgb2gray(x);            %将rgb图像转化为灰度图像
    set(0,'defaultFigurePosition',[100,100,1000,500]);  %修改图像位置的默认设置 [距离左上角的宽,距离左上角的高,窗口宽,窗口高]
    set(0,'defaultFigureColor',[1 0 1]);                %修改图形背景颜色的设置 [1 1 1]是白色
    subplot(121),imshow(x);                             %显示原图像   121指一行两列第一个位置
    subplot(122),imshow(I);                             %显示转换后的灰度图像 122指一行两列第二个位置

    运行结果:

     

    展开全文
  • matlab中将RGB图像转化为灰度图像

    万次阅读 2018-11-06 15:02:43
    MyYuanLaiPic = imread('e:/image/matlab/darkMouse.jpg');%读取RGB格式的图像 ...%用已有的函数进行RGB灰度图像的转换 [rows , cols , colors] = size(MyYuanLaiPic);%得到原来图像的矩阵的参数 MidGr...
    MyYuanLaiPic = imread('e:/image/matlab/Cluo.jpg');%读取RGB格式的图像  
    MyFirstGrayPic = rgb2gray(MyYuanLaiPic);%用已有的函数进行RGB到灰度图像的转换  
      
    [rows , cols , colors] = size(MyYuanLaiPic);%得到原来图像的矩阵的参数  
    MidGrayPic = zeros(rows , cols);%用得到的参数创建一个全零的矩阵,这个矩阵用来存储用下面的方法产生的灰度图像  
    MidGrayPic = uint8(MidGrayPic);%将创建的全零矩阵转化为uint8格式,因为用上面的语句创建之后图像是double型的  
      
    for i = 1:rows  
        for j = 1:cols  
            sum = 0;  
            for k = 1:colors  
                sum = sum + MyYuanLaiPic(i , j , k) / 3;%进行转化的关键公式,sum每次都因为后面的数字而不能超过255  
            end  
            MidGrayPic(i , j) = sum;  
        end  
    end  
    imwrite(MidGrayPic , 'E:/image/matlab/Cluo.png' , 'png');  
      
    %显示原来的RGB图像  
    figure(1);  
    imshow(MyYuanLaiPic);  
      
    %显示经过系统函数运算过的灰度图像  
    figure(2);  
    imshow(MyFirstGrayPic);  
      
    %显示转化之后的灰度图像  
    figure(3);  
    imshow(MidGrayPic);  
    
    

    运行结果:
    在这里插入图片描述
    参考原文:[MATLAB中将彩色的图像转化为灰度图像]
    (https://blog.csdn.net/wsywl/article/details/4749279)

    展开全文
  • 转载于:...Grayscale to RGB 很多时候,当我们在研究彩色图像的时候,我们从灰度空间,也就是亮度空间就能完成。也就是说,通过灰度表示,我们就可以获取图像的大部...

    Grayscale to RGB
    很多时候,当我们在研究彩色图像的时候,我们从灰度空间,也就是亮度空间就能完成。也就是说,通过灰度表示,我们就可以获取图像的大部分信息。将彩色通道进行线性组合形成灰度通道,这是图像处理里面一个很常规的做法,在matlab工具箱中有rgb2gray这个函数可以完成。最近,在matlab的文件分享网站,有人发布了一个代码可以反过来变换图像。
    文件要求提供一个灰度图像,以及一个作为调色板的任意彩色图像,然后,这个名为 gray2rgb的函数就可以创建提供的灰度图像的彩色版本,这个彩图用到第二幅图像的颜色。看看效果:

     figure
     subplot(2,2,1)
     imshow('liftingbody.png');
     subplot(2,2,2)
     imshow('gantrycrane.png');
     colorIm = gray2rgb('liftingbody.png','gantrycrane.png');
     subplot(2,2,3.5)
     imshow(colorIm) 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这里写图片描述

    很明显,gray2rgb这个文件对于很多人是有用的,因为它已经在文件分享里面存在好几年了,而且每个月都有接近100次下载。而且评价也不错。这个函数的缺点就是比较费时间。
    至于这个函数的实现原理,从代码看,首先函数将灰度图像扩展到三通道(复制通道),然后将两张图像转为yCbCr空间。最后,通过一个二重循环来逐像素生成结果图。这显然是很耗时间的。我觉得应该可以找到更快的实现方法。

    这里写图片描述

    function R=gray2rgb(img1,img2)
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % This Program converts a gray image ro RGB image based on the colors of the destination image. The better the destination image match with the source gray image, the better the coloring will be. The program takes some time  as the searching time is high. You can decrease the searching time by taking only samples from the used color image but quality may decrease. U can use jittered sampling for improving running speed. % 
    %  You can use also use the attahed test images, Use the following combinations for better result nature1.jpg(as img1) and nature2.jpg(as img2) or test1.jpg(as img1) and test2.jpg (as img2) %
    % Usage: gray2rgb('nature1.jpg','nature2.jpg');  %
    
    %  Authors : Jeny Rajan , Chandrashekar P.S %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % img1 - Source Image  (gray image)   
    % img2 - Selected color image for coloring the gray image. 
    tic
     clc;
     warning off;
     imt=imread(img1);
     ims=imread(img2);
     [sx sy sz]=size(imt);
     [tx ty tz]=size(ims);
     if sz~=1
         imt=rgb2gray(imt);
     end
     if tz~=3
         disp ('img2 must be a color image (not indexed)');
     else
         imt(:,:,2)=imt(:,:,1);
         imt(:,:,3)=imt(:,:,1);
    
     % Converting to ycbcr color space
         nspace1=rgb2ycbcr(ims);
         nspace2= rgb2ycbcr(imt);
    
        ms=double(nspace1(:,:,1));
         mt=double(nspace2(:,:,1));
         m1=max(max(ms));
         m2=min(min(ms));
         m3=max(max(mt));
         m4=min(min(mt));
         d1=m1-m2;
         d2=m3-m4;
     % Normalization
         dx1=ms;
         dx2=mt;
         dx1=(dx1*255)/(255-d1);
         dx2=(dx2*255)/(255-d2);
         [mx,my,mz]=size(dx2);
     %Luminance Comparison
         disp('Please wait..................');
         for i=1:mx
             for j=1:my
                  iy=dx2(i,j);
                  tmp=abs(dx1-iy);
                  ck=min(min(tmp));
                  [r,c] = find(tmp==ck);
                  ck=isempty(r);
                  if (ck~=1)            
                      nimage(i,j,2)=nspace1(r(1),c(1),2);
                      nimage(i,j,3)=nspace1(r(1),c(1),3);
                      nimage(i,j,1)=nspace2(i,j,1);           
                 end
              end
          end
         rslt=ycbcr2rgb(nimage)
         figure,imshow(uint8(imt));
         figure,imshow(uint8(rslt));
         R=uint8(rslt);
         toc
     end  
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    					<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet">
                </div>
    
    展开全文
  • 看了很多书发现,很独例子都可以在mathworks里面找到 ... 命令 I=rgb2gray(RGB) ...I= rgb2gray(RGB)真彩色图像RGB转换为灰度强度图像I。rgb2gray函数通过消除色调和饱和度信息,同时保留亮度,来 RGB ...

    看了很多书发现,很独例子都可以在mathworks里面找到

    https://ww2.mathworks.cn/help/matlab/ref/rgb2gray.html#buiz8mj-1-I

    命令

    I=rgb2gray(RGB)

    I = rgb2gray(RGB) 将真彩色图像 RGB 转换为灰度强度图像 Irgb2gray 函数通过消除色调和饱和度信息,同时保留亮度,来将 RGB 图像转换为灰度图。如果已安装 Parallel Computing Toolbox™,则 rgb2gray 可以在 GPU 上执行此转换

     

    将 RGB 图像转换为灰度图像

    Try This Example 

    读取并显示 RGB 图像,然后将其转换为灰度图。

    读取示例文件 peppers.png 并显示 RGB 图像。

    RGB = imread('peppers.png');
    imshow(RGB)

    关于算法权重

     

    函数算法

    灰度化处理有多种处理方式:分量法 最大法 平均法 加权平均法

    Matlab 中采用的是对R、G、B分量进行加权平均的算法:

    0.2989R+ 0.5870G + 0.1140B

    代码如下

    A=imread('path...test.jpg');

    imshow(A);

    B=rgb2gray(A);

    imshow(B);

    错误提示:map must be a m x 3 array这是因为要求rgb必须为3维矩阵。而我最开始写代码忘了加上imread,直接采用了A=('1,jpg'),相当于个变量A一个字符串,字符串是1维的,因此在后面使用转灰度的时候,命令无法执行。加上imread之后,matlab 自动将rgb图片转化为3维矩阵,命令得以执行。

     

    二值化的代码

    该方法有很多综述性的文章

    https://www.cnblogs.com/dawnminghuang/p/3849905.html

    第一种是matlab自带的

    先设置thresh阈值,然后将矩阵分割维二元色彩。

    thresh=graythresh(B)  //此时B为灰度图矩阵,该命令是自动计算与阈值.

    C=im2bw(B,thresh)

    imshow(C)

     

    注意:1-rgb图片也可以采用graythresh命令

    2-通过对比,rgb转gray之后再二值化,与rgb直接通过graystresh得到的二值化矩阵相同。

    3-但是他们的thresh并不一致。ps  thresh是matlab 自己计算的。

    第二种二值化方法 迭代法转自博客园

    主函数读取图片部分:

    clc;          //https://blog.csdn.net/joyzhaonan/article/details/45602169  清除命令窗口

    clear all;  //清楚工作空间workspace
    [fn pn fi]=uigetfile('*.*','choose a picture');  //ui界面读取图片
    Img=imread([pn fn]);
    Img_gray=rgb2gray(Img);
    Img_bw=binary_bernsen(Img_gray);%这里修改对应的函数
    figure;
    imshow(Img_bw); 
    imwrite(Img_bw,'bw.jpg')

     

     

    展开全文
  • 如truecolor转化为灰度图,可用函数rgb2gray即可实现,语法也比较简单。如下: grayImage=rgb2gray(srcImage); 加载完图片后可使用imfinfo()函数查看图像信息,通过colorType判断图像是什么类型,如为indexed即...
  • 利用Matlab软件将RGB图像转化为灰度图像
  • 问题:我正尝试使用matplotlib读取RGB图像并其转换为灰度。在matlab中,我使用这个:1img= rgb2gray(imread('image.png'));在matplotlib tutorial中他们没有覆盖它。他们只是在图像中阅读12import matplotlib....
  • MyYuanLaiPic = imread('e:/image/matlab/darkMouse.jpg');%读取RGB格式的图像 ...%用已有的函数进行RGB灰度图像的转换 [rows , cols , colors] = size(MyYuanLaiPic);%得到原来图像的矩阵的参数 MidGrayPic =
  • 我正在尝试使用matplotlib读取RGB图像并其转换为灰度图像。在matlab中,我使用这个:img = rgb2gray(imread('image.png'));在matplotlib tutorial中,并没有这个功能。这里只能读取图像import matplotlib.image as...
  • RGB图像转化为灰度图原理以及MATLAB实现 1 原理 在RGB彩色模型中表示的图像由三个分量图像组成,每种原色一幅分量图像。利用MATLAB对图像进行读取,可以知道存储RGB图像数据为2562563 uint8,其中256*256表示长和宽...
  • 利用rgb2gray彩色图像转化为灰度图像3.利用color函数对不同的灰度值进行着色clc;clearzd=imread('zd2.jpg');zd=double(rgb2gray(zd));figure;subplot(1,2,1)imshow(zd,[])B=color(zd);subplot(1,2,2)imshow(B,[])...
  • MyYuanLaiPic = imread('e:/image/matlab/darkMouse.jpg');%读取RGB格式的图像 ...%用已有的函数进行RGB灰度图像的转换 [rows , cols , colors] = size(MyYuanLaiPic);%得到原来图像的矩阵的参数 MidGray
  • 2.利用rgb2gray彩色图像转化为灰度图像 3.利用color函数对不同的灰度值进行着色 clc;clear zd=imread('zd2.jpg'); zd=double(rgb2gray(zd)); figure; subplot(1,2,1) imshow(zd,[]) B=color(zd); subplot(1,2,2) ...
  • 1,则彩色图像转化为灰度图rgb2gray 计算图像F的灰度直方图h(imhist函数;或者通过两重循环遍历每个像素点从而得到每个灰度值的累计像素点个数)。 计算计算原图的灰度分布概率hs。hs=h/(M*N) (i=0,1,…,255)
  • python实现RGB转化为灰度图像

    千次阅读 2018-03-09 16:54:00
    我正尝试使用matplotlib读取RGB图像并其转换为灰度。在matlab中,我使用这个: 1 img = rgb2gray(imread('image.png')); 在...
  • 作用 直方图均衡化的作用是图像增强。 原理 参考这篇文章 实验步骤 ...function [J] = imhisteq(I) ... %获得输入图像尺寸M、N、C(size...1,则彩色图像转化为灰度图rgb2gray end %计算图像F的灰度直方图h(imhist.
  • 问题1、文件夹当中的多张图片进行灰度处理这里以 'C:\Users\苟辉朋\Desktop\视频\图片\'为例来处理文件夹当中的多张图片,采用...程序如下:% 图片批量转化为灰度图% 首先需要创建灰度图保存的文件夹% 读取图...
  • 问题1、文件夹当中的多张图片进行灰度处理这里以 'C:Users苟辉朋Desktop视频图片'为例来处理文件夹当中的多张图片,...程序如下:% 图片批量转化为灰度图% 首先需要创建灰度图保存的文件夹% 读取图片的路径格式...
  • 灰度图像/MATLAB/数字图像处理入门

    千次阅读 2019-11-29 11:45:17
    灰度图像灰度图像转化rgb2gray灰度图像转化rgb2ind灰度图像向索引图像的转换gray2ind将灰度图像转换索引图像grayslice索引图像转换灰度图像ind2gray索引图像转换真彩色图像ind2rgb灰度图像转换二值图像im2bw...
  • C++ RGB灰度图像

    千次阅读 2016-10-04 14:17:33
    RGB灰度,通常会使用下面的一个心理学公式:(opencv和matlab中使用的也是该公式)Gray = 0.2989*R + 0.5870*G + 0.1140*B抛却指令优化不谈,优化转化速度的最直接方法就是浮点运算转化为整数运算:比如我们可以...
  • 提取图像的灰度直方matlab实现

    千次阅读 2019-04-22 16:38:17
    灰度直方图反应了该图像中不同灰度值出现的次数,用来判断一幅图像是否合理的利用全部被允许的灰度级范围。 ...%图转化为灰度图 figure,imshow(image);%显示图片 [row,col] = size(image);...
  • 问题1、文件夹当中的多张图片进行灰度处理这里以 'C:Users苟辉朋Desktop视频图片'为例来处理文件夹当中的多张图片,...程序如下:% 图片批量转化为灰度图% 首先需要创建灰度图保存的文件夹% 读取图片的路径格式...
  • 图片转化为txt文本文件 a=imread('picture.bmp'); //读取picture.bmp图片 ... //由rgb图片转化为灰度图 c=b'; //matlab由图片转换为矩阵是一列一列转的,txt文件数据读入矩阵也是一列一列读入的,后文以...
  • 彩色图像转化为灰度图像的过程称为图像灰度化。彩色图像中的像素值由RGB三个分量决定,每个分量都有0-255(256种)选择,这样一个像素点的像素值可以有1600万种可能(256256256),而灰度图的像素点的像素值是RGB...
  • 彩色图像转化为灰度图像的过程称为图像灰度化。彩色图像中的像素值由RGB三个分量决定,每个分量都有0-255(256种)选择,这样一个像素点的像素值可以有1600万种可能(256256256),而灰度图的像素点的像素值是RGB...

空空如也

空空如也

1 2 3 4 5
收藏数 84
精华内容 33
关键字:

matlab将灰度图转化为rgb

matlab 订阅