【问题标题】:Matlab: histogram of object's color pixels based on the hue valuesMatlab:基于色调值的对象颜色像素的直方图
【发布时间】:2020-05-19 03:06:21
【问题描述】:

我是 DIP 新手,但我需要重现以下直方图。

当我使用下面的简单代码时,它无法生成相同的图形!

img1 = imread('013.png');  
figure(1), imshow(img1)
img_hsv = rgb2hsv(img1);
imhist(img_hsv(:,:,1))

这是原图

黄球的图像被分割。

在 Raviteja Narra 的回答之后编辑:

但是当我在Matlab中使用类似的代码时,我得到下图

img1 = imread('img.png');  
img_hsv = rgb2hsv(img1);
hue_img = img_hsv(:,:,1)
array = hue_img(find(hue_img > 0.1))
hist(array, 20)

我的色调值在 0.11-0.17 范围内,我的直方图的 bin 似乎是 Raviteja 绘图的镜像版本!这个奇怪的情节是什么原因?

【问题讨论】:

    标签: matlab image-processing histogram object-detection


    【解决方案1】:

    这里的问题是图像中几乎所有像素的色调值都为0。所以直方图由它支配。因此,结果看起来就像在 0 处有一个很大的尖峰。要查看预期的直方图,请通过从原始 hue_img 中删除 0 值来创建一个新数组。这将显示一个高斯分布。这是用于此的python代码。

    img = cv2.imread(r"\img.png") 
    rgb_img = img 
    hsv_img = rgb2hsv(rgb_img) 
    hue_img = hsv_img[:, :, 0] 
    array = hue_img[np.where(hue_img > 0.1)] 
    plt.hist(array,bins=100)
    

    图像看起来像这样。

    【讨论】:

    • 感谢您的评论。你能用这个 python 代码和结果图编辑你的答案吗?
    • 请阅读我编辑的帖子。我的色调值在 0.11-0.17 范围内,而且我的直方图的 bin 似乎是您绘图的镜像版本!这个奇怪的情节是什么原因?
    • 我不太清楚为什么会这样,但我观察到,你得到的输出是我得到的镜像。
    猜你喜欢
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 2012-08-22
    • 2013-10-17
    • 2018-04-04
    • 1970-01-01
    • 2020-02-12
    • 2017-06-17
    相关资源
    最近更新 更多