2011-12-28 5 views
0

Я пытаюсь разделить цветное изображение на 100 блоков равного размера в matlab, а затем сохранить максимальную информацию о цвете, присутствующую в поле в 2d массиве 10 * 10.Как сохранить информацию об изображении в массиве 2d в MATLAB?

Пример:

Если максимальный цвет присутствует в блоке

  • черный, то он должен хранить 0
  • белого затем 1,
  • красный затем 2,
  • ...

в соответствующей ячейке массива 2d.

У меня есть конечное количество цветов на моем изображении. Я прочитал статью о blockproc, но я не смог ее реализовать.

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

EDIT: (код от комментариев)

I=imread('Untitled.png'); 
I = I(1:290,1:288,:); 
[m n o] = size(I); 
r = m/240; 
c = n/240; 
fun = @(block_struct) max(block_struct.data(:)); 
J = blockproc(I,[r c],fun); 
imshow(J); 
+2

Покажите нам, что вы пробовали. – cyborg

+1

Что вы называете максимальным цветом? –

+0

то, что я сделал, приведен ниже. I = imread ('Untitled.png'); I = I (1: 290,1: 288, :); [m n o] = размер (I); r = m/240; c = n/240; fun = @ (block_struct) max (block_struct.data (:)); J = blockproc (I, [r c], забава); imshow (J); теперь проблема, с которой я сталкиваюсь, я теряю информацию о цвете в этом виде подхода .... я хочу 2 в J, если цвет красный соответствующий блок, 3, если он синий и так далее .... я делая это, потому что я хочу найти кратчайшее расстояние между двумя объектами изображения, так что путь не покрывает определенный цвет (скажем, путь не должен покрывать черную часть изображения). – Harshil

ответ

0

Если у вас есть конечное число цветов в изображении вы можете преобразовать его из 3D RGB изображений в indexed изображения по телефону rgb2ind:

myColMap; % this is your color map: 
      % it should have black as its first entry, 
      % white in second, red in third etc. 
indImg = rgb2ind(I, myColMap); % convert RGB image to indexed one 

Чтобы найти самый «популярный» цвет в каждом патче (обратите внимание, что это не цвет max, а mode)

fun = @(block_Struct) mode(block_struct.data(:)) 
J = blockproc(indImg, [r c], fun); 

Обратите внимание, что размер патча [r c] должен быть целым числом числа. Поэтому, если ваш размер изображения не является делимым на 240 (как в вашем примере), это может вызвать проблемы. Проверьте параметры blockproc, чтобы помочь вам справиться с этим условием.

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