精华内容
下载资源
问答
  • matlab中 rgb2gray() 函数 具体实现

    万次阅读 多人点赞 2018-06-03 20:13:46
    简介 rgb2graymatlab内部一种处理图像的函数,通过消除图像色调和饱和度信息同时保留亮度实现将将RGB图像或彩色图转换为灰度图像,即灰度化处理的功能,调用这个功能的格式是I = rgb2gray(RGB),意思是将真彩色...

                简介

        rgb2gray是matlab内部一种处理图像的函数,通过消除图像色调和饱和度信息同时保留亮度实现将将RGB图像或彩色图转换为灰度图像,即灰度化处理的功能,调用这个功能的格式是I = rgb2gray(RGB),意思是将真彩色图像RGB转换为灰度强度图像I 。

            调用格式

    I = rgb2gray(RGB)
    newmap= rgb2gray(map)

    函数算法

    灰度化处理有多种处理方式:分量法 最大法 平均法 加权平均法
    Matlab 中采用的是对R、G、B分量进行加权平均的算法:
    0.2989R+ 0.5870G + 0.1140B
    (注意,rgb2ntsc函数也使用相同的权重来计算Y分量)

            具体函数

    function imgray=rgbimage2gray(imrgb)
    [m,n,t]=size(imrgb);
    for i=1:m
        for j=1:n
            for k=1:t
                
                imgray(i,j,k)=0.299*imrgb(i,j,1)+0.587*imrgb(i,j,2)+0.11400*imrgb(i,j,3);%加权实现从真彩到灰度的降维转换
               
            end
               
        end
    end

    展开全文
  • Matlab中imread和rgb2gray的使用

    千次阅读 热门讨论 2020-05-29 14:36:13
    通过以下公式可以将RGB转换成灰度 GRAY=0.2989*R + 0.5870*G+ 0.1140*B 在Matlab中为我们提供了rgb2gray函数,将 RGB 图像或颜色图转换为灰度图,用法为: I = rgb2gray(RGB) newmap = rgb2gray(map) I = rgb2gray...

    imread函数是从图形文件读取图像。它的语法为:

    A = imread(filename)
    
    A = imread(filename,fmt)
    
    A = imread(___,idx)
    
    A = imread(___,Name,Value)
    
    [A,map] = imread(___)
    
    [A,map,transparency] = imread(___)

    对上述语法进行说明:

    A = imread(filename) 从 filename 指定的文件读取图像,并从文件内容推断出其格式。如果 filename 为多图像文件,则 imread 读取该文件中的第一个图像。
    
    A = imread(filename,fmt) 另外还指定具有 fmt 指示的标准文件扩展名的文件的格式。如果 imread 找不到具有 filename 指定的名称的文件,则会查找名为 filename.fmt 的文件。
    
    A = imread(___,idx) 从多图像文件读取指定的图像。此语法仅适用于 GIF、PGM、PBM、PPM、CUR、ICO、TIF 和 HDF4 文件。您必须指定 filename 输入,也可以指定 fmt。
    
    A = imread(___,Name,Value) 使用一个或多个名称-值对组参数以及先前语法中的任何输入参数来指定格式特定的选项。
    
    [A,map] = imread(___) 将 filename 中的索引图像读入 A,并将其关联的颜色图读入 map。图像文件中的颜色图值会自动重新调整到范围 [0,1] 中。
    
    [A,map,transparency] = imread(___) 另外还返回图像透明度。此语法仅适用于 PNG、CUR 和 ICO 文件。对于 PNG 文件,如果存在 alpha 通道,transparency 会返回该 alpha 通道。对于 CUR 和 ICO 文件,它为 AND(不透明度)掩码。

    1.读取和显示图像

    A = imread('Lina.tiff');

       imread 返回512×512×3 数组 A。        

    显示图像

    image(A)

                          

    2.将索引图像转换成 RGB

    读取索引图像示例文件 corn.tif 中的第一幅图像。

    [X,cmap] = imread('corn.tif');

    索引图像 X 是 uint8 类型的 415×312 数组。颜色图 cmap 是 double 类型的 256×3 矩阵,因此索引图像中有 256 种颜色。显示图像。

    imshow(X,cmap)

                                               

    将索引图像转换为 RGB 图像。结果为一个 double 类型的 415×312×3 数组。

    RGB = ind2rgb(X,cmap);

    3.读取多页 TIFF 文件中的特定图像

    例如读取示例文件 corn.tif 中的第三幅图像。

    [X,map] = imread('corn.tif',3);

                                              

    4.读取 TIFF 图像的指定区域

    读取示例图 corn.tif 像素的特定区域。

    用表示要读取的区域边界的向量元胞数组指定 'PixelRegion' 参数。第一向量指定要读取的行范围,第二向量指定要读取的列范围。

    A = imread('corn.tif','PixelRegion',{[1,2],[2,5]});

    imread 读取 corn.tif 中 1–2 行和 2–5 列的图像数据,并返回 2×4 数组 A

                                                           

    5.将索引图像转换成 RGB

    在计算机中看到的大多数彩色图片是基于RGB三通道的图片,红绿蓝三种颜色,每一种取值均为[0~255]。通过255*255*255,可以构成庞大的颜色群。而灰度图像只有256个灰度级。通过以下公式可以将RGB转换成灰度
                                                            GRAY=0.2989*R + 0.5870*G+ 0.1140*B

    在Matlab中为我们提供了rgb2gray函数,将 RGB 图像或颜色图转换为灰度图,用法为:

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

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

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

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

                          

    将 RGB 图像转换为灰度图像并显示图像。

    B = rgb2gray(RGB);
    figure
    imshow(B)

                            

    6.将 RGB 颜色图转换为灰度颜色图

    读取具有 RGB 颜色图的索引图像。然后将颜色图转换为灰度。

    读取示例文件 corn.tif,该文件为具有 RGB 颜色图的索引图像。

    [X,map] = imread('corn.tif');
    imshow(X,map)

                                            

    将 RGB 颜色图转换为灰度颜色图并重新显示图像。

    A = rgb2gray(map);
    imshow(X,A)

                                                 

     

    展开全文
  • 图像是怎样构成的?像素对于我们来说并不陌生,在我们购买手机的时候像素的高低是我们参考的重要标准之一。其实任意一幅图像都是由非常多个像素点...在RGB彩色模型表示的图像由三个分量图像组成,每种原色一幅分...

    bba3e86d0da8974a475342b9cbe35148.png

    图像是怎样构成的?

    像素对于我们来说并不陌生,在我们购买手机的时候像素的高低是我们参考的重要标准之一。其实任意一幅图像都是由非常多个像素点构成,而每一个像素点都能表示任意一种颜色,我们可以将像素点理解成最小的图像单位。在初中物理中我们曾学习到任意一种颜色都可以由三原色(红绿蓝)组合而成,事实上每一个像素点也是由R、G、B值的不同组合而成。

    25fbae3974e5117b8503e270ecca60a0.png

    在RGB彩色模型中表示的图像由三个分量图像组成,每种原色一幅分量图像。利用MATLAB对图像进行读取,我们可以看到该图像RGB的数据为256*256*3 uint8,其中256*256表示长和宽的像素个数,3表示红绿蓝三个分量图像,uint8,表示每个分量图像(R、G、B)的像素点值的位宽为8比特,即可表示0-255的范围。

    9803c61db2375cae6b232ad0a7806961.png

    彩色图像是如何转换为灰度图像的?

    灰度数字图像是每个像素只有一个采样颜色的图像,通常显示为从最暗黑色到最亮的白色的灰度。前面我们已经知道了每个分量图的像素点为8bit,可表示0-255的范围,其中0表示黑色,255表示白色。因而我们可以通过RGB模型到YUV模型(亮度-色度模型,“Y”表示明亮度,“U”和“V”则是色度、浓度)的转换,利用数学计算,将RGB三通道转化为YUV模型中的Y通道(亮度)从而将彩色图像转换成灰度图像。转换公式如下

    b6dac5304eee1b63d2e11897562353b0.png

    MATLAB代码实现

    通常我们可以使用两种方法将彩色图像转化为灰度图像,一种是使用MATLAB自带的rgb转灰度指令rgb2gray,另一种则是利用转换公式进行计算,以下是源代码。

    050b0b37ceab69e4446fb1848d5003ac.png

    我们来看看代码运行后的效果图

    c5e586a3b2e8c21427faba925ff706f2.png

    现在我们可以知道如美图秀秀等修图软件添加滤镜的效果其实就是在对图像的RGB值进行处理,而这一点MATLAB也能够做到。

    参考资料:

    数字图像处理_第三版_中_冈萨雷斯

    展开全文
  • Matlab文件夹批量操作文件实例-new_rgb2gray.m 看了帖子“https://www.ilovematlab.cn/thread-46154-1-1.html”首先感谢goodlucklars 对文件夹操作有了新的认识,结合以前hehaihuiwang的一个gui代码对文件夹...
  • filepath_save='C:\Users\Desktop\test2';% 保存路径 img_path_list=dir(strcat(file_path,''));%获取该文件夹所有格式的图像 img_num = length(img_path_list);%获取图像总数量 for j = 3:img_num%逐一读取图像

    仅为学习交流,侵删!转载请注明出处!
    目录

    clc;clear;close all;
    
    file_path ='C:\Users\Desktop\test1';
    filepath_save='C:\Users\Desktop\test2';% 保存路径
    img_path_list=dir(strcat(file_path,''));%获取该文件夹中所有格式的图像 
    img_num = length(img_path_list);%获取图像总数量  
    for j = 3:img_num%逐一读取图像  
            image_name = img_path_list(j).name;% 图像名  
            imgName  = [file_path ,'\', image_name];
            rgb = imread(imgName);
            gray = rgb2gray(rgb);
            % subplot(1,2,1)
            % imshow(rgb); 
            % title('rgb');
            % subplot(1,2,2)
            % imshow(gray); 
            % title('gray');
            an = strsplit(image_name,'.');
            str = char(an(1)); 
            image_out_name = strcat(str,'.png');
            imgOut  = [filepath_save ,'\', image_out_name];
            imwrite(gray,imgOut)
    end 
    
    展开全文
  • 我和他有同样的问题,我有一个彩色的画面,我用MATLAB读取图片:Input = imread('input1.jpg');,和格式的图像是612x612x3 UINT8,我打印5x5x1像素在画面如下:Input(1:5,1:5,1)201 201 201 201 201201 201 201 201 ...
  • 问题:Octave找不到类似在matlab中图像处理相关的函数,例如rgb2gray 解决办法:在使用前加载相应的图像包 在Octave命令行输入如下命令 pkg load image  下面的命令可以用来查看已安装的包 pkg list ...
  • 图像处理:rgb2gray

    千次阅读 2019-06-13 10:04:25
    这个函数比较简单,matlab 网站上给出的大约是这个样子, 0.2989R+ 0.5870G + 0.1140B 注意,如果程序直接写成浮点乘法,相对比较消耗时间,一般我会写成整数乘法的形式, gray = (R*77 + G*150 + B*29) >&...
  • 1、练习以下函数imread()、imshow()、subplot()、rgb2gray()、imresize() 2、读取lena.bmp图像并显示,将其反色处理后再显示 二、函数分析: 1、imread() 定义:从图形文件读取图像 形式:A = imread...
  • Matlab实现RGB图像批量转换热图

    千次阅读 2019-04-24 16:15:50
    转换方法要求原图为单通道图像,所以首先使用了rgb2gray的方法。 转换原理为原图像像素值越大,在热图就越红,反之在热图就越蓝。 colormap(jet);使用的jet色图如下: 整个代码如下: ...
  • 使用MATLAB进行图片的处理十分... MATLAB对于图像处理有丰富的函数,最简单的RGB转Gray只需要一个函数rgb2gray()即可完成。但是如果光是这样学习图像处理,是没有多大意义的,所以博主决定自己根据原理用MATLA...
  • Matlab图像处理rgb2ind函数

    千次阅读 2020-06-12 16:56:31
    该函数将真彩色图像转换为索引图像, 由于RGB图像一个像素占用三个字节, 分别存储R、G、B分量的值,而索引图像一个像素占用一个字节。在将灰度图像转换为索引图像时, 是从3个字节映射到一个字节的关系。 通常有...
  • 转换方法要求原图为单通道图像,所以首先使用了rgb2gray的方法。 转换原理为原图像像素值越大,在热图就越红,反之在热图就越蓝。 colormap(jet);使用的jet色图如下: 代码: 结果: 原reference:...
  • 这个YCbCr是从YUV派生出来的,比较适合处理数字图像,JPEG压缩就是在这个彩色空间处理的。变换公式。...%img=mat2gray(img); %任意区间映射到[0,1]; [m n dim]=size(img); imshow(img); %%图像...
  • MATLAB使用im2bw函数后,将一个32*16*3 unit的数组变成了31*10 的数组,。graythresh函数用法:使用最大类间方差法找到图片的一个合适的阈值(threshold)。...先用A=rgb2gray(I)再用BW1=im2bw(A,0.9...
  •  matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点double(64位,8个字节),自然可以节省很大一部分存储空间。...
  • MATLAB中roipoly函数用法

    千次阅读 2019-01-08 21:36:27
    下面来介绍一下MATLAB中roipoly函数的用法,具体步骤如下: 1、打开MATLAB软件,在其主界面的编辑器中写入下列...B = rgb2gray(I); %彩色图灰度化 g=[229 272 300 222 272 300]; %设置区域像素 f=[21 21 75 121 ...
  • MATLAB中图像邻域处理

    千次阅读 2019-01-08 19:02:10
    下面来介绍一下MATLAB中如何进行图像的邻域处理,具体步骤如下: 1、首先打开MATLAB,在其主界面的编辑器中写入...I = rgb2gray(M); %变为灰度图 g=inline('max(x(:))'); B=nlfilter(I,[3 3],g); %邻域处理 figur...
  • MATLAB中log算子处理图像

    千次阅读 2018-11-22 08:37:01
    下面来介绍一下MATLAB中如何用log算子处理图像: 1、打开MATLAB软件,在其主界面中写入下列代码: I=imread('G:\MATLAB\bm.bmp'); %读取当前路径下的图片...I1=rgb2gray(I); subplot(2,2,2); imshow(I1); title('...
  • 1、图像在matlab中的保存 matlab读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,比double型(64位,8个字节),节省了存储空间。 **imread()**是将灰度图像存入一个...
  • 已知一副RGB图像的的像素值,利用matlab将其分割出来并以二进制图像形式显示:%extract.mclear all;I=imread('new_original.png');figure,imshow(I),title('Original Image');bw=im2bw(I,0.3);%figure,imshow(bw),...
  • Read an image into the workspace, then convert the image to grayscale.RGB = imread('autumn.tif...I = im2gray(RGB);Perform a 2-D DCT of the grayscale image using the dct2 function.J = dct2(I);Display t...
  • 已知一副RGB图像的的像素值,利用matlab将其分割出来并以二进制图像形式显示: %extract.m clear all; I=imread('new_original.png'); figure,imshow(I),title('Original Image'); bw=im2bw(I,0.3); %figure,...
  •  matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点double(64位,8个字节),自然可以节省很大一部分存储空间。...
  • https://ww2.mathworks.cn/help/matlab/ref/rgb2gray.html#buiz8mj-1-I 命令 I=rgb2gray(RGB) I= rgb2gray(RGB)将真彩色图像RGB转换为灰度强度图像I。rgb2gray函数通过消除色调和饱和度信息,同时保留亮度,来将 ...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 370
精华内容 148
关键字:

matlab中rgb2gray

matlab 订阅