2014-11-02 2 views
0

В MATLAB:
У меня есть изображение в виде карты, которое состоит из нескольких разных цветов. Мне нужно знать, какой цвет появляется наиболее часто.
Использование imread() Я сохранил изображение в 3D-матрице, и мне нужно найти наиболее частое значение пикселя (r, g, b).
Я пробовал mode(), но, похоже, не работает для 3D-матрицы.MATLAB Самое частое значение RGB изображения

Благодаря

ответ

0

сделать это так

im=imread (image); 
Im1=im (:,:,1)*100+im (:,:,2)*10+im (:,:,3); 
MostFrequent=mode (im1 (:)); 
MfR=MostFrequent/100; 
MfG=(MostFrequent-MfR*100)/10; 

Надеюсь, вы получите мою точку преобразования 3d-точек в 1d, а затем назад, вычисляя значения RGB.

+0

Работает ли он для значения 0-255 rgb? –

+0

Спасибо. Я сначала нормализовал изображение и следил за вашим решением. Это сработало. –

1

Преобразование изображения в карту индексов, используя rgb2ind, то вы можете найти наиболее частый индекс и получить соответствующий цвет

rgbImg = imread('my_img.png'); 
[idx map] = rgb2ind(rgbImg, 1e-6, 'nodither'); %// consider changing tolerance here 
m = mode(idx); 
frequentRGB = map(m, :); 
+0

Как использовать чатRGB? –

+0

@TanSu вы пробовали код? 'oftenRGB' должен быть трехвектор с наиболее частыми значениями RGB. – Shai

+0

Я использовал его, но результатом является куча 3-векторов. –

Смежные вопросы