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

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

Загрузите изображение peppers.png, который является цветной фотографией нескольких типов перцев и других овощей. 8-битный целочисленный массив без знака rgb содержит данные изображения.

rgb = imread('peppers.png');
imshow(rgb)

Figure contains an axes object. The axes object contains an object of type image.

Постройте двумерную гистограмму красных и зеленых значений 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')

Figure contains an axes object. The axes object with title Green vs. Red Pixel Components contains an object of type histogram2. This object represents g vs. r.

Гистограмма в большой степени взвешивается к нижней части цветовой шкалы, потому что существует несколько интервалов с очень большими количествами. Это приводит к большинству интервалов, отображающихся, когда первые раскрашивают палитру, синюю. Без дополнительной детали трудно сделать любые выводы, над которыми цвет является более доминирующим.

Чтобы посмотреть больше деталей, перемасштабируйте цветовую шкалу гистограммы путем установки CLim свойство осей иметь область значений между 0 и 500. Результат состоит в том, что интервалы гистограммы, количество которых 500 или большее отображение как последний цвет в палитре, желтой. Поскольку большая часть количества интервалов в этой меньшей области значений, существует большее изменение цвета отображенных интервалов.

ax = gca;
ax.CLim = [0 500];

Figure contains an axes object. The axes object with title Green vs. Red Pixel Components contains an object of type histogram2. This object represents g vs. r.

Используйте похожий метод сравнить преобладание красного цвета по сравнению с синим и зеленым цветом по сравнению с синим.

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];

Figure contains an axes object. The axes object with title Blue vs. Red Pixel Components contains an object of type histogram2. This object represents b vs. r.

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];

Figure contains an axes object. The axes object with title Green vs. Blue Pixel Components contains an object of type histogram2. This object represents b vs. g.

В каждом случае, синем, наименее доминирующий сигнал цветности. Рассмотрение всех трех гистограмм, красных, кажется, доминирующий цвет.

Подтвердите результаты путем создания цветной гистограммы в цветовом пространстве 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])

Figure contains an axes object. The axes object with title Color histogram in RGB color space contains 3 objects of type histogram.

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

|