matlab如何将读取图像后的RGB矩阵变换为二维自定义矩阵
需要处理这样的一张交通流图matlab读取之后是一个RGB三原色组成的三维矩阵,现在需要将图中黑、绿、黄、红(图上有两种红色需要视作一种)四种颜色的像素点分别以0,0.0...
需要处理这样的一张交通流图
matlab读取之后是一个RGB三原色组成的三维矩阵,现在需要将图中黑、绿、黄、红(图上有两种红色需要视作一种)四种颜色的像素点分别以0,0.01,1和2来表示,希望得到像素点的二维矩阵,维数等于分辨率,求具体实现的代码 展开
matlab读取之后是一个RGB三原色组成的三维矩阵,现在需要将图中黑、绿、黄、红(图上有两种红色需要视作一种)四种颜色的像素点分别以0,0.01,1和2来表示,希望得到像素点的二维矩阵,维数等于分辨率,求具体实现的代码 展开
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,还没做,但猜测效果应该也不会太差。总之,只要要求不是很精确,做起来不是很难。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询