matlab如何将读取图像后的RGB矩阵变换为二维自定义矩阵

2023-01-06

需要处理这样的一张交通流图

matlab读取之后是一个RGB三原色组成的三维矩阵,现在需要将图中黑、绿、黄、红(图上有两种红色需要视作一种)四种颜色的像素点分别以0,0.01,1和2来表示,希望得到像素点的二维矩阵,维数等于分辨率,求具体实现的代码

这个问题的核心在于怎样把图中的各像素点与指定的四种(五种)颜色对应起来,但图中的颜色远不止5种(用HyperSnap可以统计出,题主所贴出的图像包含了11234种颜色)。

 

猜测这样的交通流图应该是在某种软件系统上根据数据生成的,而生成这样的图应该会采用某几种固定的颜色,题主如果是通过软件截图的方式得到的图,请最好使用PNG格式保存图像。这是因为,JPEG是一种有损压缩格式,尽管从视觉上看起来差别不大,但实际上保存的时候颜色信息会有损失,导致多出来很多本来没有的颜色,而使用PNG格式可以很大程度上避免这个问题。

 

例如,使用下述代码可以统计出现较多的10种颜色:

x=imread('交通流图.jpg');
[a,map]=rgb2ind(x,10);
colormap(map)
hist(double(a(:)),10)
colorbar

追问

您好,首先谢谢您的回复,是这样的,就是因为拿不到具体的交通数据所以我才用的别人截出来的百度实时交通流的截图(全是JPG格式的),然后为了去掉不需要的背景,又用PS处理了一下就成了现在的这个样子。我现在不需要特别精确,就是人眼分辨的绿色可能在matlab里面就是一段色域,能把这段色域内的像素点全赋值为0.01就可以了,另外红色确实肉眼都能看出是不一样的两种颜色。您看您能帮忙想想办法么?先谢谢了

追答

我前面提到用PNG格式,是在题主自己截图的条件下的建议。
既然是用已有的JPEG图片,那个建议也就没什么作用了。
用灰度图的做法应该是可行的,我本来是想提取五种典型颜色的值形成colormap再进行rgb2ind,还没做,但猜测效果应该也不会太差。总之,只要要求不是很精确,做起来不是很难。

参考知识1 读入彩色图的时候,是一个二维矩阵,矩阵中每个元素有RGB三个值;
读灰度图时,读入的就是一个二维矩阵,元素值是灰度值
I=imread('a.jpg');%读入图片
I2=rgb2gray(I); %将彩色图变成灰色图
使用函数imread,用法如下:
imread('example.jpg');
注意example.jpg要在当前工作目录下
相似知识
matlab 读取一幅图像后,如何知道这幅图像具有RGBA四个通道的,如何输出A通道的值,放入一个二维数组中? %读取图片A=imread(’.tif‘);%这时A成为一个四层的矩阵(不正规,但是我一般是这样理解的)B=A(:,:,4);%即读取第四层的矩阵,就是Alpha通道参考知识1%如下语法,alpha读
MATLAB中怎样提取一幅图像的RGB信息,并且将结果输出到一个矩阵中? 1打开图像[FileName,FilePath]=uigetfile('*.jpg;*.png;*.tif;*.img;*.gif;','请选择图像数据');str=[
怎么把图片rgb还原还原矩阵 参考知识1打开图像,并获得其对应的RGB矩阵#读取图像fromPILimportImagedefgetImgData():img=Image.open('example.jpg',&#
什么是RGB矩阵? RGBHV,分别是红绿蓝三原色和行场同步信号。矩阵,实现多路信号进,多路信号输出,可以将任意一个输出口进行信号切换,来输出任意一个输入信号。参考知识1RGB矩阵是用来切换和传输RGBHV信号的矩阵,矩
MATLAB RGB图像处理 既然是对每一个的操作都是一样的,就可以直接对图像的像素矩阵进行操作,效果和你用循环对每一个点操作是一样的。例如:I=imread('XXXX');imshow(I);%第3步I2=25
从三维信息到二维图像再到三维模型独行信息如何升降维 一、三维变换1.三维变换的矩阵表示2.三维缩放与平移3.三维旋转1)绕坐标轴旋转2)绕任意轴旋转旋转的分解与欧拉角绕轴旋转的通用公式:罗德里德斯旋转扩展:四元素二、观测变换目的:为了将三维对象转成二维
如何将图片转换成RGB矩阵? RGB矩阵,是一个三维阵列,每个维度分别存储的红色,绿色和蓝色的颜色值。图片IMG=新的图像(“aaa.bmp);位图BMP(位图)的img;(X=0,X<图片宽度,X++)(Y=0,Y<
什么是RGB图像以及CMYK图像~ RGB是三原色图像文件,通常用于视频显示用。CMYK是补色模式文件,通常用于常规印刷。参考知识1电脑的显示色系为rgb,那么在编辑的时候,显示的色彩都是rgb色系,转换后,cmyk为印刷色系,不是为显