在MATLAB中:
我有一个像地图一样的图像,由几种不同的颜色组成。我需要知道哪种颜色出现得最频繁。
使用imread()
,我将图像保存到一个3D矩阵中,并且我需要找到最常见的像素值(r,g,b)。
我尝试过mode()
,但它似乎不适用于3D矩阵。
谢谢
发布于 2014-11-01 23:01:45
像这样做
im=imread (image);
Im1=im (:,:,1)*100+im (:,:,2)*10+im (:,:,3);
MostFrequent=mode (im1 (:));
MfR=MostFrequent/100;
MfG=(MostFrequent-MfR*100)/10;
我希望你能理解我的观点,把3d点转换成1d,然后返回计算RGB值。
发布于 2014-11-01 22:46:12
使用rgb2ind
将图像转换为索引映射,然后可以找到最频繁的索引并获得相应的颜色。
rgbImg = imread('my_img.png');
[idx map] = rgb2ind( rgbImg, 1e-6, 'nodither'); %// consider changing tolerance here
m = mode( idx );
frequentRGB = map(m, : );
https://stackoverflow.com/questions/26696708
复制相似问题