2016-08-21 12 views
0

У меня есть большое изображение, и я должен:Применить операцию на скользящем окне в Matlab

  • Во-первых, применить функцию к каждому возможному пластыря изображения, как скользящего окна. Это на самом деле очень похоже на свертку, которая поддерживается в Matlab, но вместо этого мне нужно вычислить «ключевое значение» (реальное) на каждом патче изображения (давайте рассмотрим его как функцию черного ящика). Как было предложено в комментариях, perharps я могу использовать функцию «blockproc»

  • Затем мне нужно найти n наименьших значений ключа и их соответствующие позиции, но улов в том, что у меня есть несколько перекрывающихся окон с одинаково низкими значениями ключа то сортировка сохранит их все в списке, что нежелательно. Вместо этого я хочу обнаружить эти перекрывающиеся окна и сохранить только один с самым низким значением ключа. Вы можете сказать, что я хочу найти не n наименьших значений ключа, а только n локальных минимумов (не уверен, что эта аналогия правильная, хотя). Я не могу дать код, потому что это слишком долго и сложно (распознавание лиц с помощью eigenfaces с +5 функций)

+2

Может 'blockproc', может быть' im2col'. Это очень помогло бы, если бы вы включили описание того, что вы пытаетесь сделать, и некоторый пример кода, который дает желаемые результаты в ваших вопросах. Таким образом, мы могли бы дать более конкретные ответы. – beaker

+1

Или 'nlfilter'. Я забыл о 'nlfilter'. Удивительная функция. – beaker

+0

@beaker Я редактировал вопрос, все в порядке? :( –

ответ

1

Шаг 1: применить nlfilter к исходному изображению:

keyimg = nlfilter(img, windowsize, keyfun); 

Шаг 2 : применять im2col к keyimg и сортировки ключевых значений:

colimg = im2col(keyimg, windowsize, 'sliding'); 
minimg = sort(colimg, 1); % perhaps take only the first `k` rows 

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

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