В этом примере показано, как настроить цветовую шкалу двумерного графика гистограммы для отображения дополнительных сведений о ячейках.
Загрузить изображение peppers.png, которая представляет собой цветную фотографию нескольких видов перца и других овощей. Беззнаковый 8-разрядный целочисленный массив rgb содержит данные изображения.
rgb = imread('peppers.png');
imshow(rgb)
Постройте график двумерной гистограммы красных и зеленых значений RGB для каждого пикселя, чтобы визуализировать распределение цветов.
r = rgb(:,:,1); g = rgb(:,:,2); b = rgb(:,:,3); histogram2(r,g,'DisplayStyle','tile','ShowEmptyBins','on', ... 'XBinLimits',[0 255],'YBinLimits',[0 255]); axis equal colorbar xlabel('Red Values') ylabel('Green Values') title('Green vs. Red Pixel Components')

Гистограмма сильно взвешена к нижней части цветовой шкалы, потому что есть несколько ячеек с очень большими счетчиками. Это приводит к тому, что большинство ячеек отображаются как первый цвет в карте цветов, синий. Без дополнительной детализации трудно сделать какие-либо выводы о том, какой цвет является более доминирующим.
Для более подробного просмотра масштабируйте цветовую шкалу гистограммы, установив значение CLim свойство осей должно иметь диапазон от 0 до 500. В результате ячейки гистограммы, количество которых равно 500 или больше, отображаются в виде последнего цвета в карте цветов, желтого цвета. Поскольку большинство счетчиков ячеек находится в этом меньшем диапазоне, наблюдается большая вариация в цвете отображаемых ячеек.
ax = gca; ax.CLim = [0 500];

Аналогичный метод используется для сравнения доминирования красного и синего цветов и зеленого и синего цветов.
histogram2(r,b,'DisplayStyle','tile','ShowEmptyBins','on',... 'XBinLimits',[0 255],'YBinLimits',[0 255]); axis equal colorbar xlabel('Red Values') ylabel('Blue Values') title('Blue vs. Red Pixel Components') ax = gca; ax.CLim = [0 500];

histogram2(g,b,'DisplayStyle','tile','ShowEmptyBins','on',... 'XBinLimits',[0 255],'YBinLimits',[0 255]); axis equal colorbar xlabel('Green Values') ylabel('Blue Values') title('Green vs. Blue Pixel Components') ax = gca; ax.CLim = [0 500];

В каждом случае синий цвет является наименее доминирующим цветовым сигналом. Глядя на все три гистограммы, красный цвет кажется доминирующим.
Подтвердите результаты, создав цветовую гистограмму в цветовом пространстве RGB. Все три цветовых компонента имеют пики для меньших значений RGB. Однако значения выше 100 встречаются в красном компоненте чаще, чем в любом другом.
histogram(r,'BinMethod','integers','FaceColor','r','EdgeAlpha',0,'FaceAlpha',1) hold on histogram(g,'BinMethod','integers','FaceColor','g','EdgeAlpha',0,'FaceAlpha',0.7) histogram(b,'BinMethod','integers','FaceColor','b','EdgeAlpha',0,'FaceAlpha',0.7) xlabel('RGB value') ylabel('Frequency') title('Color histogram in RGB color space') xlim([0 257])
