2013-02-22 3 views
0

У меня есть инструкция, пытающаяся реализовать, но смущенная о том, как это сделать. Это мой вопрос:Поиск пикселя, который минимизирует расстояние между двумя наборами

  • У меня есть изображение, где я установил интересующие пиксели (область интереса) к значению 1. Итак, мы можем сказать, что теперь у нас есть набор со следующими значениями 1s, где каждый 1 здесь представляет конкретное местоположение на изображении.

C = [1 1 1 1 1 1 1 1 1 1];

Например, скажем img для простоты здесь является матрица x следующим образом:

x = [2 3 5; 5 4 5; 6 4 3; 6 5 4; 6 54 3; 6 5 3]; 

x будет иметь степень членства y, на основе которого мы устанавливаем некоторые значения 1. Чтобы уточнить, для каждого пикселя, для которого y = 1, мы установили этот пиксель на 1. Так, скажем y является:

y = [0 1 0; 0 1 1; 1 1 0; 0 0 1; 0 0 1; 1 1 1]; 

Итак, C содержит 10 1s. Например первый 1 представляет расположение x(1,2) и так далее ...

  • Теперь я хочу, чтобы проверить 4-neighbourhoods пикселей в C, но что в то же время не в C. То есть, в окрестностях.

  • Теперь для тех пикселей, которые принадлежат к окружению и четыре соседей C Я хочу, чтобы выбрать этот пиксель p, что минимизирует расстояние междуx и C.

Теперь ясно? Вы знаете, как я могу обойти это?

Спасибо.

+0

Я не совсем понимаю, что вы здесь делаете. Однако вы говорите, что вас смущает фраза «свести к минимуму расстояние»; если это помогает, то * может означать расстояние между значениями пикселей, то есть как отличается изображение. Возможно, вы могли бы дать больше информации и сказать, считаете ли вы, что моя догадка имеет смысл для вашей проблемы. – jazzbassrob

+0

Что такое 'размер'' img' и 'p'? –

+0

Спасибо за ваши ответы. Я добавлю дополнительную информацию на свой вопрос – Simplicity

ответ

0

Если вы хотите найти пиксели, которые являются 4-соседями пикселей в y, но не y себя, вы можете использовать imdilate так:

msk = zeros(3); 
msk(2,:) = 1; 
msk(:,2) = 1; 

tmp = imdilate(y,msk); 

result = tmp & ~y; 

Теперь вы можете получить значение пикселов в C(result) , и примените вашу дистанционную функцию.

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

  • Нет связанных вопросов^_^