matlab
电脑
%加载图像 peppers.png,这张彩色照片显示了几种辣椒和其他一些蔬菜。8 位无符号整数数组 rgb 包含图像数据。命令行键入:rgb = imread('peppers.png');
命令行键入:imshow(rgb)
为每个像素的红、绿 RGB 值绘制二元直方图,以可视化形式呈现颜色分布。命令行键入:r = rgb(:,:,1);
命令行键入:g = rgb(:,:,2);
命令行键入:b = rgb(:,:,3);
命令行键入:axis equal
命令行键入:colorbar
命令行键入:xlabel('Red Values')
命令行键入:ylabel('Green Values')
命令行键入:title('Green vs. Red Pixel Components')
此直方图明显趋向于色阶底部,原因是有些 bin 的计数很大。这导致大部分 bin 在颜色图中显示为第一种颜色,即蓝色。如果没有提供更多详细信息,很难得出关于哪种颜色更占主导性的结论。
要查看更多详细信息,请通过将坐标区的 CLim 属性设置为介于 0 和 500 之间的范围,重新调整直方图的色阶。其结果就是直方图中计数达到 500 或以上的 bin 在颜色图中显示为最后一种颜色,即黄色。由于大部分 bin 的计数在这个较小范围内,因此所显示的 bin 的颜色变化较大。
命令行键入:ax = gca;
命令行键入:ax.CLim = [0 500];
使用类似的方法可以比较红色与蓝色以及绿色与蓝色的主导性。
命令行键入:histogram2(g,b,'DisplayStyle','tile','ShowEmptyBins','on',...'XBinLimits',[0 255],'YBinLimits',[0 255]);axis equalcolorbarxlabel('Green Values')ylabel('Blue Values')title('Green vs. Blue Pixel Components')ax = gca;ax.CLim = [0 500];
在每种情况下,蓝色都是最不占主导性的颜色信号。看看所有这三个直方图,红色似乎为主导颜色。
在 RGB 颜色空间中创建一个颜色直方图,对结果进行确认。对于所有这三个颜色分量,较小的 RGB 值都有峰值。但相比其他任何分量,100 以上的值更多出现在红色分量中。