2014-10-22 5 views
1

Я не могу определить способ создания гистограммы каждого цвета RGB отдельно без использования встроенных функций. Мне нужно создать функцию my_hist (изображение), которая выводит три разных цифры, каждая с отдельным значением RGB. Любая помощь будет принята с благодарностьюГистограмма цветного изображения RGB Изображения без использования встроенных функций MATLAB

Заранее спасибо!

+0

любой встроенной функцией, то есть вы не можете использовать imhist, hist, bar или stem например? –

+0

Начните с определения, как сделать гистограмму (используя любые функции, которые вы разрешаете) из матрицы. Разделение изображения RGB на три части и запуск вашей личной функции 'hist' на каждой части должны быть легким. – nkjt

+0

Я имел в виду imhist или hist. – electricsurge31

ответ

1

Если вы не можете использовать imhist, попробуйте следующее:

Im = imread('autumn.tif'); 
ImHistogram = zeros(3,256); 
for jj = 1 : 3 
    for ii = 0 : 255 
     ImHistogram(jj,ii+1) = sum(sum(Im(:,:,jj) == ii)); 
    end 
end 

Каждая строка показывает гистограмму каждого RGB

Однако если вы можете использовать imhist вы могли бы сделать это:

Im = imread('autumn.tif'); 
ImHistogram = zeros(3,256); 
for jj = 1 : 3 
    ImHistogram(jj,:) = imhist(Im(:,:,jj)); 
end 
+0

Спасибо, Каммал! я ценю это!. прекрасно работает! – electricsurge31

+2

Вот еще одно решение с использованием 'accumarray', которое я написал: http://stackoverflow.com/questions/25830225/content-based-image-retrieval-and-precision-recall-graphs-using-color-histograms/25830848#25830848. Это вычисляет линейный индекс для кортежа RGB, если он попадает между определенным диапазоном цветов, а затем использует 'accumarray' для вычисления гистограммы. Он преобразует гистограмму в 1D-массив, хотя вы можете использовать методы сходства более простым способом. – rayryeng

+1

Хороший ответ @rayryeng. Это как-то позор, который вы получили за него только 1 upvote. +1 для меня! –