【发布时间】:2014-11-02 06:36:51
【问题描述】:
在 MATLAB 中:
我有一个类似地图的图像,由几种不同的颜色组成。我需要知道哪种颜色出现频率最高。
使用imread()我已经将图像保存到一个3D矩阵中,我需要找到最频繁的像素值(r、g、b)。
我试过mode(),但它似乎不适用于 3D 矩阵。
谢谢
【问题讨论】:
标签: matlab
在 MATLAB 中:
我有一个类似地图的图像,由几种不同的颜色组成。我需要知道哪种颜色出现频率最高。
使用imread()我已经将图像保存到一个3D矩阵中,我需要找到最频繁的像素值(r、g、b)。
我试过mode(),但它似乎不适用于 3D 矩阵。
谢谢
【问题讨论】:
标签: matlab
使用rgb2ind将你的图片转换成索引图,然后你可以找到最频繁的索引并得到对应的颜色
rgbImg = imread('my_img.png');
[idx map] = rgb2ind( rgbImg, 1e-6, 'nodither'); %// consider changing tolerance here
m = mode( idx );
frequentRGB = map(m, : );
【讨论】:
frequentRGB 应该是具有最频繁 RGB 值的三向量。
这样做
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 值。
【讨论】: