2012-04-18 4 views
1

У меня есть задача реализовать фильтр изображений xx производных 3x3, который использует central difference и одновременно выполняет гауссовское сглаживание в направлении y.Реализация производного фильтра в MATLAB

У меня есть формула для решения этой задачи в направлении х (Н = 1), и я не уверен, понимаю ли я это правильно:

(f(x+h;y)-f(x-h;y))/2*h 

Относительных от моего текущего пикселя (х), I возьмите значение пикселя +1 перед моим текущим пикселем и вычтите значение из пикселя в позиции -1 за моим текущим пикселем. Разве это значение делится на 2, а затем более или менее мой вывод первого порядка в направлении x? Разве мое текущее значение пикселя не используется вообще?

+3

В настоящее время это не вопрос программирования, поэтому может быть лучше подходит для http://dsp.stackexchange.com/. –

+0

После того, как у вас есть фильтр, conv2() Matlab - это простой способ применить его к изображению. – Dan

ответ

1

Традиционно для изображений центр не используется для производного фильтра. Обоснование можно найти следующим образом.

  1. Цель большинства фильтров обработки изображений - найти вещи в исходном изображении и идентифицировать их. Таким образом, хорошее ядро ​​(*) будет сосредоточено в том же месте, что и изменение.
  2. Производное должно иметь нулевое значение. Если вы добавите все пиксели из ядра, они должны добавить до нуля.

Учитывая эти две точки, и особенно первую, очевидно, что ядро ​​должно иметь нечетное число элементов, а центр должен быть 0. По сути, если ядро ​​нечетно, тогда оно будет иметь тенденцию для сохранения исходного края.

Принимая 1 мерную пример, и применить формулу, при условии, обрезки краев (Принуждение их к 0), приведет к следующим образом:

[0 1 3 2 10 12 8 11]; 
[0 -2 -1 -7 -10 2 1 0 ]; 

Обратите внимание, что две самые высокие значения магнитуды прав на вершина горы. Попробуйте сыграть с другими ядрами, в том числе с теми, у которых нет значения центра, равным 0, и посмотрите, какие результаты.

(*) Ядро представляет собой функцию, которую вы выполняете. В случае, которое вы предоставили, ядро ​​[1 0 -1]

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