【发布时间】:2017-09-16 02:57:57
【问题描述】:
如何转换图像的 RGB 直方图以创建显示组合颜色以及正确颜色波长范围的直方图?
示例代码:
pkg load image
f=imread('/tmp/marbles.jpg');
f=uint8(f); %need to convert back to uint8 to show picture
%Split into RGB Channels
f_red = f(:,:,1);
f_green = f(:,:,2);
f_blue = f(:,:,3);
%Get histValues for each channel
[y_f_red, x] = imhist(f_red);
[y_f_green, x] = imhist(f_green);
[y_f_blue, x] = imhist(f_blue);
subplot (2,1,1); imshow(f);
subplot (2,1,2); plot(x, y_f_red, 'r', x, y_f_green, 'g', x, y_f_blue, 'b');
示例图像以及代码生成的单独 RGB 直方图:
我试图让直方图看起来像下图,但颜色从红色变为蓝色:
另一个图像示例:
PS:我使用的是 Octave 4.0,它与 MATLAB 非常相似。
【问题讨论】:
-
您是否要获取颜色值的直方图,例如this answer 中的第二张图像?如果是这样,您希望首先按照那里的描述将 RGB 图像转换为 HSV。
-
类似,但如果你注意到红色仍然出现在两边
标签: matlab image-processing histogram octave matlab-figure