Matlab图像处理基础(一)图像类型的转换 您所在的位置:网站首页 灰度变换的基本方法有哪些 Matlab图像处理基础(一)图像类型的转换

Matlab图像处理基础(一)图像类型的转换

2024-06-09 16:31| 来源: 网络整理| 查看: 265

图像类型转换

首先我们需要知道图像类型有哪几种:二值图像,灰度图像,真彩色图像,索引色图像 四种。

一. RGB图像转换为灰度图像

需要调用 rgb2gray() 函数,调用格式为:

X =rgb2gray(I): 该函数将RGB图像I转换为灰度图像X. %彩色转gray I =imread('E:\matlab\bin\图像处理\图片\2.jpg'); X =rgb2gray(I); figure, subplot(121),imshow(I); subplot(122),imshow(X); newmap =rgb2gray(map):将彩色颜色映射表map转化为灰度颜色映射表。

注:如果输入的是真彩色图像,则可以是uint8或者是double类型,输出图像与输入图像类型相同。如果输入的是颜色映射表,则输入和输出都是double类型。、

对于map值,只有图像类型是索引图像,才有值,否则为空。先将彩色图像转化为索引图像,然后获取map1,然后对map1灰度,最后显示。

clear all; RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg'); [X1,map1]=rgb2ind(RGB,64); newmap =rgb2gray(map1); imshow(X1,newmap); 二. RGB图像转换为索引图像

在上个例子中,已经使用了将RGB图像转化为索引图像的函数rgb2ind()函数 1.[X,map] =rgb2ind(I,tol); 该函数是利用均匀量化的方法将RGB图像转换为索引图像。I为原始图像,tol的范围是从0.0至1.0,[X,map]对应生成的索引图像,map包括至少(floor(1/tol)+1)^3个颜色。 2.[X,map] =rgb2ind(I,N); 该函数是利用最小方差量化的方法,将RGB图像转化为索引图像,其中,I是原始RGB图像,[X,map]对应生成的索引图像,map包括至少N个颜色。 3.X =rgb2ind(I,map); 该函数是通过与RGB中最相近的颜色进行匹配生成颜色映射表map,将RGB图像转化为索引图像。其中,I原始RGB图像,[X,map]对应生成的索引图像,map中的颜色是与RGB图像中颜色匹配最相近的颜色。 4. […] =rgb2ind(…,dither_option); 该函数是通过参数dither_option来设置图像转换是否进行呀是谁呢抖动,dither_option取值为dither则表示抖动,从而可以达到更好的颜色效果;该参数项默认取值为nodither,表示不抖动。该格式中"…"表示根据显示任务的不同可以采用上面介绍的某种格式。 那么,代码如下,进行比较一下前三种的区别

clear all; RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg'); [X1,map1] =rgb2ind(RGB,64);%颜色总数N至少64种 [X2,map2] =rgb2ind(RGB,0.2);%颜色总数N至少216种 map3 =colorcube(128);%创建一个指定颜色数目的RGB颜色映色表 X3 =rgb2ind(RGB,map3); figure; subplot(131);imshow(X1,map1);%显示用最小方差法转换后的索引图像 subplot(132);imshow(X2,map2);%显示用均匀量化法转换后的索引图像 subplot(133);imshow(X3,map3);%显示用颜色近似法转换后的索引图像

显示图像在这里插入图片描述

三. 灰度图像转换为索引图像 在MATLAB中国,灰度图像是一个二维数组矩阵,而索引图像不仅包括一个二维的数组矩阵,还包括一个M x 3的颜色映射表。所以要想将灰度图像转换成索引图像,则必须生成对应的颜色映射表.

用函数 gray2ind(); 实现图像的转化,其调用格式如下: 1.[X,map] =gray2ind(I,N): 该函数是将二值图像转换为索引图像,其中I指的是原灰度图像,n是灰度级数,默认值为64。[X,map]为对应转换后的索引图像mapd中对应的颜色值为gray(n)中的颜色值。 2.[X,map] =gray2ind(BW,n); 该函数是将二值图像BW转换为索引图像。其中BW指的二值图像,n为灰度级数,默认值为2,[X,map]为对应转换后的索引图像mapd中对应的颜色值为gray(n)中的颜色值。.二值图像实际上也是灰度图像,只是灰度级数为2. 显示的结果围为: 在这里插入图片描述 代码如下:

I =imread('E:\matlab\bin\图像处理\图片\1.jpg');%读入RGB图像 X =rgb2gray(I);%将其转换为灰度图像 [IND,map] =gray2ind(X,8); [IND1,map1] =gray2ind(X,2); figure; subplot(131);imshow(X); subplot(132);imshow(IND,map); subplot(133);imshow(IND1,map1);

还有另一个函数 grayslice(); 也可以将灰图像转化为索引图像,其转换的方法是通过设定阈值将灰度图像转换为索引图像,其调用的格式为: 1. I =grayslice(G,n); 该函数是将灰度图像中像素灰度均匀量化围为n个等级并转换为索引图像,其中G为灰度图像,n表示的是灰度级,I为转换后的索引图像。 2. I =grayslice(G,v); 该函数是将灰度图像按照阈值矢量v进行值域划分并转换为索引图像。v中的每一个元素都在0到1之间。jet()函数生成一个颜色映射表。 代码:

I =imread('E:\matlab\bin\图像处理\图片\1.jpg');%读入RGB图像 X1 =rgb2gray(I);%将其转换为灰度图像 X =grayslice(X1,32); figure,imshow(X1); figure,imshow(X,jet(32)); 四. 索引图像转换为灰度图像

函数 ind2gray() 是实现索引图像转换为灰度图像。调用格式如下:

I =ind2gray(X,map):该函数将具有颜色映射表map的索引图像转换为灰度图像,取出了索引图像中的颜色,饱和度信息,保留图像的亮度信息,其中[X,map]对应索引图像,I 表示转换为灰度图像,输入图像的类型可以为double型或uint8型,但输出为double型。

显示为: 在这里插入图片描述 代码如下:

clear all; RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg'); [X,map] =rgb2ind(RGB,64); I =ind2gray(X,map); figure; subplot(121);imshow(X,map); subplot(122);imshow(I); 五. 索引图像转换为RGB图像 ind2rgb()函数实现该过程,调用格式如下: RGB =ind2rgb(X,map);该函数将索引图像[X,map]转换为RGB图像。转换过程中形成一个三位数组,然后将索引图像的颜色映射表中的颜色值赋值给三维数组。输入图像中的类型可以是double型,uint8型或uint16型,输出为double型。

显示结果,数据组成形式不同,虽然看上去一样 在这里插入图片描述 代码如下:

clear all; RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg'); [X,map] =rgb2ind(RGB,64); %转换为索引图像 RGB1 =ind2rgb(X,map); figure; subplot(121);imshow(X,map); subplot(122);imshow(RGB1) 六. 二值图像的转换

二值图像的数据类型实际上是logical型,0代表黑色,1代表白色。将其他类型图像转换为二值图像,首先必须规定一个规则,即将哪些数据变为1,哪些数据变为0。最常用的阈值法。,确定一个阈值,小于阈值取0,大于阈值取1.。 在MATLAB中,是通过函数im2bw(),调用格式根据原图像的不同而各有差异。如果输入的不是灰度图像,则先将其转换为灰度图像,然后通过阈值法转换为二值图像。

1.将灰度图像转为二值图像 格式为: BW =im2bw(I,level) :该函数是通过设置阈值参数level,将灰度图像转换为二值图像,level取值范围为[0,1]

显示: 在这里插入图片描述 代码:

close all;clear all;clc; RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg'); I =rgb2gray(RGB); BW1 =im2bw(I,0.4); BW2 =im2bw(I,0.6); figure; subplot(131);imshow(I); subplot(132);imshow(BW1); subplot(133);imshow(BW2); 2.将索引图像转换为二值图像 BW =im2bw(X,map,level); 该函数是通过设置阈值参数level,将索引图像转换为二值图像。其中[X,map]代表索引图像,参数level设置阈值水平,取值范围[0,1],BW为二值图像。

显示图像 在这里插入图片描述 代码:

close all;clear all;clc; RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg'); [X,map] =rgb2ind(RGB,64); BW =im2bw(X,map,0.4); figure; subplot(121);imshow(X,map); subplot(122);imshow(BW); 3.将RGB图像转换为二值图像 格式为: BW =im2bw(RGB,level) :该函数是通过设置阈值参数level,将RGB图像转换为二值图像,level取值范围为[0,1]

显示结果: 在这里插入图片描述 代码:

clear all; RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg'); BW =im2bw(RGB,0.4); figure; subplot(121);imshow(RGB); subplot(122);imshow(BW) 七. 数值矩阵转换为灰度图像

在MATLAB中,一个数据矩阵就相当于一副数字图像,只是在数字图像中对应的数组元素必须在一定的取值范围,因此,只要将对应数据矩阵中的元素按一定规律进行转换,就可以将矩阵转换为图像了。在MATLAB中,利用函数mat2gray() ,将一个数据矩阵转换为衣服灰度图像,其调用格式为: I =mat2gray(X,[xmin,xmax]): 该函数是按照指定的取值区间[xmin,xmax]将数据矩阵X转换为灰度图像 I。xmin对应灰度值0,即黑色,xmax对应灰度值为1,即白色。数据矩阵中小于xmin的值取为0,大于xmax的值取为1。如果不指定取值区间[xmin,xmax],即在默认情况下,将数据矩阵X中的最小值设置为xmin,最大值设置为xmax. 显示结果: 在这里插入图片描述 代码如下:

close all;clear all;clc; X =magic(256); %利用函数magic()产生一个256x256的方阵X I =mat2gray(X); %将数值矩阵X转换为灰度图像 figure;imshow(I);

函数magic()产生一个256x256的方阵X,该数值矩阵中的元素按规律排列,矩阵中的,每一行元素之和,每一列元素之和 ,与对角线元素之和三者相等,即 sum(X(n,:)) =sum(X(:,n)) =sum(diag(X)) (n为[1,256],函数diag()求方阵对角,sum()求和)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有