【问题标题】:MATLAB Most Frequent RGB value of an image图像的 MATLAB 最常见 RGB 值
【发布时间】:2014-11-02 06:36:51
【问题描述】:

在 MATLAB 中:
我有一个类似地图的图像,由几种不同的颜色组成。我需要知道哪种颜色出现频率最高。
使用imread()我已经将图像保存到一个3D矩阵中,我需要找到最频繁的像素值(r、g、b)。
我试过mode(),但它似乎不适用于 3D 矩阵。

谢谢

【问题讨论】:

    标签: matlab


    【解决方案1】:

    使用rgb2ind将你的图片转换成索引图,然后你可以找到最频繁的索引并得到对应的颜色

    rgbImg = imread('my_img.png');
    [idx map] = rgb2ind( rgbImg, 1e-6, 'nodither'); %// consider changing tolerance here
    m = mode( idx );
    frequentRGB = map(m, : );
    

    【讨论】:

    • 频繁RGB如何使用?
    • @TanSu 你试过代码了吗? frequentRGB 应该是具有最频繁 RGB 值的三向量。
    • 我用过,结果是一堆3-vectors。
    【解决方案2】:

    这样做

    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 值。

    【讨论】:

    • 谢谢。我首先对图像进行了标准化,然后按照您的解决方案进行操作。它确实奏效了。
    猜你喜欢
    • 2020-10-19
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多