【问题标题】:How do I re implement a color based histogram, do feature extraction based on color & measure features in an image in MATLAB?如何在 MATLAB 中重新实现基于颜色的直方图,基于颜色和测量特征进行特征提取?
【发布时间】:2010-10-18 18:01:06
【问题描述】:

为此picture

  1. 绘制颜色的 R、G、B 分量的直方图(不使用 imhist)
  2. 将图片更改为二进制,因此昆虫的棕色外骨骼为白色
  3. 测量昆虫外骨骼的宽度和高度

编辑:

1: 我做到了:

a = imread('C:\a.jpg');
r = a(:,:,1);
g = a(:,:,2);
b = a(:,:,3);
rhist = zeros(1,256);
[w h] = size(a(:,:,1));
for i=1:w
    for j=1:h
        rhist(r(i,j)+1) = rhist(r(i,j)+1)+1;
    end
end

rhist(x) 是等于 x-1 的红色强度计数

现在我只需要一点帮助如何将这些数据绘制为直方图

2:仍然不知道:(。我正在使用带有不同第二个参数的 im2bw 但这没有帮助。
我猜有些模糊可能会有所帮助?
3:也不知道。

【问题讨论】:

  • 你是认真地要求 SO 上的某人做你的功课吗?
  • 这只是三个相关的问题。请编辑以反映这一点。最好选择三个单独的问题。
  • 可惜这些家伙不喜欢解决这些有趣的问题!

标签: matlab image


【解决方案1】:

这是我的 IMHIST 版本:

I = imread('pic.jpg');
II = double(I);
clr = 'rgb'; clrTxt = {'Red' 'Green' 'Blue'};
for i=1:3
    h = subplot(3,1,i);
    c = histc(reshape(II(:,:,i),[],1), 0:255);
    bar(0:255, c./max(c), 'histc')
    set(gca, 'XLim', [0 255], 'YLim',[0 1])
    set(findobj(h,'Type','patch'), 'FaceColor',clr(i), 'EdgeColor','none')
    ylabel(clrTxt{i})
end
xlabel('Intensity')

【讨论】:

    【解决方案2】:

    对于 1:

    i = imread('fabric.png');
    
    r = sum(sum(i(:,:,1)))
    g = sum(sum(i(:,:,2)))
    b = sum(sum(i(:,:,3)))
    
    bar([r g b])
    

    【讨论】:

    • 这不是我想要的直方图。我想编写类似 imhist 的代码。
    猜你喜欢
    • 2019-02-08
    • 2012-08-15
    • 2014-03-10
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 2021-01-01
    • 2016-05-13
    • 2020-05-19
    相关资源
    最近更新 更多