Matlab:基于色调值的对象颜色像素的直方图
Matlab: histogram of object's color pixels based on the hue values
我是 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 情节的镜像版本!为什么会出现这种奇怪的情节?
这里的问题是图像中几乎所有像素的色调值都是 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)
图像看起来像这样。
我是 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 情节的镜像版本!为什么会出现这种奇怪的情节?
这里的问题是图像中几乎所有像素的色调值都是 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)
图像看起来像这样。