Цветной анализ с двумерной гистограммой

В этом примере показано, как настроить, цветовая шкала двумерной гистограммы строят, чтобы показать дополнительные детали об интервалах.

Загрузите изображение 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])

Смотрите также

|