Этот пример показывает, как настроить цветовую шкалу графика двумерной гистограммы показать дополнительные детали об интервалах.
Загрузите изображение 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])