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

2024-11-02 14:33:13
推荐回答(2个)
回答1:

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

 

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

 

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

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

回答2:

读入彩色图的时候,是一个二维矩阵,矩阵中每个元素有RGB三个值;
读灰度图时,读入的就是一个二维矩阵,元素值是灰度值
I=imread('a.jpg');%读入图片
I2=rgb2gray(I); %将彩色图变成灰色图
使用函数imread,用法如下:
imread('example.jpg');
注意example.jpg要在当前工作目录下