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

需要处理这样的一张交通流图matlab读取之后是一个RGB三原色组成的三维矩阵,现在需要将图中黑、绿、黄、红(图上有两种红色需要视作一种)四种颜色的像素点分别以0,0.0... 需要处理这样的一张交通流图

matlab读取之后是一个RGB三原色组成的三维矩阵,现在需要将图中黑、绿、黄、红(图上有两种红色需要视作一种)四种颜色的像素点分别以0,0.01,1和2来表示,希望得到像素点的二维矩阵,维数等于分辨率,求具体实现的代码
展开
 我来答
tianxiawulang
2015-03-19 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2560万
展开全部

这个问题的核心在于怎样把图中的各像素点与指定的四种(五种)颜色对应起来,但图中的颜色远不止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,还没做,但猜测效果应该也不会太差。总之,只要要求不是很精确,做起来不是很难。
杨好巨蟹座
2015-09-18 · TA获得超过5万个赞
知道大有可为答主
回答量:6197
采纳率:80%
帮助的人:1258万
展开全部
读入彩色图的时候,是一个二维矩阵,矩阵中每个元素有RGB三个值;
灰度图时,读入的就是一个二维矩阵,元素值是灰度值
I=imread('a.jpg');%读入图片
I2=rgb2gray(I); %将彩色图变成灰色图
使用函数imread,用法如下:
imread('example.jpg');
注意example.jpg要在当前工作目录下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式