精华内容
下载资源
问答
  • 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
    imread函数是从图形文件读取图像。它的语法为: A = imread(filename) A = imread(filename,fmt) A = imread(___,idx) A = imread(___,Name,Value) [A,map] = imread(___) [A,map,transparency] = imread(___...

    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)

                                                 

     

    展开全文
  • Matlab图像处理rgb2ind函数

    千次阅读 2020-06-12 16:56:31
    函数将真彩色图像转换为索引图像, 由于RGB图像一个像素占用三个字节, 分别存储R、G、B分量的值,而索引图像一个像素占用一个字节。在将灰度图像转换为索引图像时, 是从3个字节映射到一个字节的关系。 通常有...

    该函数将真彩色图像转换为索引图像, 由于RGB图像一个像素占用三个字节, 分别存储R、G、B分量的值,而索引图像一个像素占用一个字节。在将灰度图像转换为索引图像时, 是从3个字节映射到一个字节的关系。 通常有以下两种算法:

     

    • Gray = (R + G + B) / 3,即求得R、G、B三个分量平均值作为索引图像中对应像素点的像素值。
    • Gray = min(R, G, B),即以R、G、B三个中最小分量作为索引图像对应像素点的像素值。

     

    但是,这个方法对于Gamma校正的图片(平常所见到的24位真彩色图片均为Gamma校正的图片)并不适用,因为Gamma校正后的分量值不是物理上的功率,不能直接相加,因此,提出一种改进的算法来纠正这一问题。

    注意这里的2.2次方和2.2次方根,RGB颜色值不能简单直接相加,而是必须用2.2次方换算成物理光功率。因为RGB值与功率并非简单的线性关系,而是幂函数关系,这个函数的指数称为Gamma值,一般为2.2,而这个换算过程,称为Gamma校正。


    真彩色

    16位一般叫高彩色,一般称之64K色, 一共有baidu2^16 = 64*1024 = 65536种色彩

    24位真彩色:一共有2^24= 16 777 216,种色彩,也就是1600万色.

    32位真彩色,并不是2^32种颜色,而是24位真彩色(1600万色)加上8位的透明度,让显示更好,更接近自然的色彩.


    调用格式:

    • [X,map] = rgb2ind(RGB, n)

    使用第二种算法把真彩色图像转换为索引图像,其中n指定map中颜色项数(表示有几种颜色,比如n=2,那就只有两种颜色构成了一张图片,但并非二值图像), n最大不能超过65536。返回值中map即索引图像的调色板,map里储存的是颜色索引,是一张各个数字对应颜色的表格。如果bmp文件是真彩色或灰度的,就不需要色表,得到的X是二维或三维的矩阵,数值介于0到255之间。如果是索引格式的(如256色、16色等等)就有这样一张表格,X是一个二维矩阵,数值介于0-255或0-15之间,显示图像时需要色表才能正确对应颜色。

    • X = rgb2ind(RGB, map)

    使用调色板map将真彩色图像转换为索引图像,即在调色板中找到与真彩色图像颜色值最接近的颜色作为转换后的索引图像的像素值。map中颜色项数(即size(map, 1))不能超过65536。

    • [X,map] = rgb2ind(RGB, tol)

    利用第一种算法把真彩色图像转换为索引图像, map中最多包含(floor(1/tol)+1)^3种颜色, tol必须是介于0.0和1.0之间的数。

    • [...] = rgb2ind(..., dither_option)

    其中dither_option用于开启/关闭dither, dither_option可以是'dither'(默认值)或'nodither'。

    相关函数: ind2gray, mat2gray, ntsc2rgb, rgb2ind, rgb2ntsc

    程序示例

    % 1. 显示RGB真彩色

    imgrgb = imread('flower.jpg');

    figure('Name', '显示真彩色图像')

    imshow(imgrgb)

    % 2. 显示灰度图像

    imggray = rgb2gray(imgrgb);

    figure('Name', '显示灰度图像')

    imshow(imggray)

    % 3. 显示索引图像

    [imgind, map] = rgb2ind(imgrgb, 10);

    figure('Name', '显示索引图像')

    imshow(imgind, map)

     

    RGB=imread('football.jpg');
    [X1,map1]=rgb2ind(RGB,64);   
    [X2,map2]=rgb2ind(RGB,0.2);
    map3=colorcube(256);
    X3=rgb2ind(RGB,map3);
    figure;
    subplot(131);imshow(X1,map1);
    subplot(132);imshow(X2,map2);
    subplot(133);imshow(X3,map3);

     

     

    展开全文
  • 1、练习以下函数imread()、imshow()、subplot()、rgb2gray()、imresize() 2、读取lena.bmp图像并显示,将其反色处理后再显示 二、函数分析: 1、imread() 定义:从图形文件读取图像 形式:A = imread...

    一、目标:

           1、练习以下函数imread()、imshow()、subplot()、rgb2gray()、imresize()

            2、读取lena.bmp图像并显示,将其反色处理后再显示

     

    二、函数分析:

    1、imread()

           定义:从图形文件读取图像

           形式:A = imread(filename)

           描述:从filename指定的文件中读取图像,从其内容推断文件的格式。如果文件名是多图像文件,则imread将读取文件中的第一个图像。

     

    2、imshow()

        定义:显示图像

        形式:imshow(I)

        描述:imshow(I)在图形中显示灰度图像I。imshow使用图像数据类型的默认显示范围,并优化图像显示的图形、轴和图像对象属性。

     

    3、subplot()

           定义:在平铺位置创建轴

           形式:subplot(m,n,p)

           描述:将当前图形划分为m乘n的网格,并在p指定的位置创建轴。MATLAB按行对子图位置进行编号。第一个子批次是第一行的第一列,第二个子批次是第一行的第二列,依此类推。如果轴存在于指定位置,则此命令将使这些轴成为当前轴。

     

    4、rgb2gray()

           定义:将RGB图像或颜色贴图转换为灰度

           形式:I = rgb2gray(RGB)

           描述:将真彩色图像RGB转换为灰度图像I。rgb2gray函数通过在保持亮度的同时消除色调和饱和度信息,将RGB图像转换为灰度图像。如果你有并行计算工具箱™已安装,rgb2gray可以在GPU上执行此转换。

     

    5、imresize()

           定义:调整图像大小

           形式:B = imresize(A,scale)

           描述:返回图像B,该图像的比例乘以A的大小。输入图像A可以是灰度、RGB或二进制图像。如果A有两个以上的维度,imresize只调整前两个维度的大小。如果“缩放”在[0,1]范围内,则B小于A。如果“缩放”大于1,则B大于A。默认情况下,imresize使用双三次插值。

     

    三、代码展示:

    具体代码如下:

    % 1、练习imread()、imshow()、subplot()、rgb2gray()、imresize()函数
    %    imread()读取图像到MATLAB空间
    %    imshow()显示图像
    %    subplot()对图像窗分区显示
    %    rgb2gray()将rgb图像换成灰度图像
    %    imresize()图像尺度变换
    %
    % 2、读取lena.bmp图像并显示,将其反色处理后再显示
    %
    % @author: jackma
    % @time:   2020-9-16 17:04
    % @URL:   www.jackrma.com
    % @Copyright:博客所有权归本人和CSDN所有,如有转载请在显著位置给出博文
    %            链接和作者姓名,否则本人将付诸法律。
    % @edit:   
    
    % 1. 显示lena小姐姐真彩色图像
    imgrgb = imread('lena512color.BMP'); %读取图像
    figure('Name', '显示lena小姐姐真彩色和灰度图像'); %设置标题
    subplot(121); %图像分成1行2列,rgb图在第1个
    imshow(imgrgb); %显示rgb彩色图像
    title('原始彩色图像');
    
    % 2.显示lena小姐姐灰度图像
    imggray = rgb2gray(imgrgb); %将rgb图像转换成灰度图像
    subplot(122);
    imshow(imggray)%显示灰度图像
    title('原始灰度图像');
    
    % 3.图像尺度变换
    imgchange = imresize(imggray, 2); %对图像做缩放处理
    figure('Name', 'lena小姐姐图像尺度变换');
    imshow(imgchange);
    title('lena小姐姐图像尺度变换');
    
    % 3.图像色彩反转
    imgreverse = imcomplement(imgrgb);
    figure('Name', 'lena小姐姐图像色彩反转');
    imshow(imgreverse);
    title('lena小姐姐图像色彩反转');
    

    四、结果展示:

     

    图2 显示原视彩色Lena图像、灰度图像                                                                               图3图像尺度变换

                                                                                                            (因为B = imresize(A,scale)中scale是2,即为放大两倍)

     

                                                                                    图4 图像色彩反转

    附录:

    注:我是用VScode 编写和编译 matlab代码的,用VScode插件即可实现。具体操作请看https://blog.csdn.net/qq_37930244/article/details/82563152

    还有Lena小姐姐原版图像,我分享下资源(包括原版未裁剪的图片和另外一张Lena小姐姐照片 嘿嘿嘿!)

    https://pan.baidu.com/s/1LMsC3cQpF4WSO15aMZvNTA

    提取码  uwhz

    展开全文
  • 问题:Octave找不到类似在matlab中图像处理相关的函数,例如rgb2gray 解决办法:在使用前加载相应的图像包 在Octave命令行输入如下命令 pkg load image  下面的命令可以用来查看已安装的包 pkg list ...
  • OpenCV中与matlab中相对应的函数

    千次阅读 2012-04-22 08:57:06
    OpenCV中与matlab中相对应的函数 1、matlab中的imread相当于OpenCV中的cvLoadImage(imageName, CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR):读出的图像信息...rgb2gray相当于cvLoadImage(imageName, CV
  • 图像处理:rgb2gray

    千次阅读 2019-06-13 10:04:25
    这个函数比较简单,matlab 网站上给出的大约是这个样子, 0.2989R+ 0.5870G + 0.1140B 注意,如果程序直接写成浮点乘法,相对比较消耗时间,一般我会写成整数乘法的形式, gray = (R*77 + G*150 + B*29) >&...
  • MATLAB使用im2bw函数后,将一个32*16*3 unit的数组变成了31*10 的数组,。graythresh函数用法:使用最大类间方差法找到图片的一个合适的阈值(threshold)。...先用A=rgb2gray(I)再用BW1=im2bw(A,0.9...
  • 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 ...
  • 1、matlab中的imread相当于OpenCV中的cvLoadImage(imageName, CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR):读出的...rgb2gray相当于cvLoadImage(imageName, CV_LOAD_IMAGE_GRAYSCALE):单通道灰度图;或用cv...
  • aa=imread('timg.jpg'); aa=rgb2gray(aa); imshow(aa); title('原图'); g=imnoise(aa,'salt & pepper'); figure(); imshow(g); title('salt noise'...
  • 1.imread 读取图像,用imread函数读取图像文件,文件格式可以...若图片是彩色的,可以用rgb2gray函数将其转换成灰度图: BW = rgb2gray(BW); 2.size 可以用size函数看图像的大小:size(BW) 若BW是灰度图像,则可以...
  • 原文:http://blog.csdn.net/fengbingchun/article/details/58804531、matlab中的imread相当于OpenCV中的cvLoadImage(imageName, CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR):读出的图像信息...rgb2gray相当
  • matlab中滤波函数

    2014-06-25 19:47:00
    matlab自带滤波器函数小结(图像处理) 1 线性平滑滤波器 用MATLAB实现领域平均法抑制噪声程序: I=imread(' c4.jpg '); subplot(231) imshow(I) title('原始图像') ... I=rgb2gray(I); else I=I; ...
  • 使用MATLAB进行图片的处理十分... MATLAB对于图像处理有丰富的函数,最简单的RGB转Gray只需要一个函数rgb2gray()即可完成。但是如果光是这样学习图像处理,是没有多大意义的,所以博主决定自己根据原理用MATLA...
  • (1)、type 函数名(如 type rgb2gray 或者 type rgb2gray.m):即可在命令窗口显示此函数的源代码; (2)、open 函数名(如 open rgb2gray 或者open rgb2gray.m):即可打开rgb2gray.m文件; (3)、edit 函数名(如...
  • 图像矩阵g有些为double类型,有些为uint8类型,揪心。 公式:g(x,y)=low_g + (high_g - low_g) / (high_f - low_f)*(f(x,y) - low_f) ...I=rgb2gray(I);%将彩色图像转换为灰度图像 imshow(I); J=imadjus...
  • Matlab 到 OpenCv 的常见函数转换

    千次阅读 2012-01-25 20:03:30
    1、 matlab中的imread相当于OpenCV中的cvLoadImage(imageName, CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR):读出的图像信息保持了原有...rgb2gray相当于cvLoadImage(imageName, CV_LOAD_IMAGE_GRAYSCALE):单通
  • matlab中graythresh函数的使用介绍

    千次阅读 2018-12-08 19:56:28
    1.功能:使用最大类间方差法找到图片的一个合适的阈值(threshold)。 2.调用格式: level = graythresh(I) 在使用im2bw函数将灰度图像转换为二值图像时,...gray = rgb2gray(imge) ; %将彩图imge转化为灰度图...
  • matlab中函数与opencv中对应

    千次阅读 2012-08-15 14:28:06
    1、 matlab中的imread相当于OpenCV中的cvLoadImage(imageName, CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR):读出的图像...rgb2gray相当于cvLoadImage(imageName, CV_LOAD_IMAGE_GRAYSCALE):单通道灰度图;

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 170
精华内容 68
关键字:

matlab中rgb2gray函数

matlab 订阅