Разложение поддиапазонов с использованием фильтра Добеши - PullRequest
2 голосов
/ 14 марта 2011

У меня есть следующие два фильтра с 8 касаниями:

h0 ['-0.010597', '0.032883', '0.030841', '-0.187035', '-0.027984', '0.630881', '0.714847', '0.230378']
h1 ['-0.230378', '0.714847', '-0.630881', '-0.027984', '0.187035', '0.030841', '-0.032883', '-0.010597']

Вот они на графике:

graph

Я использую его дляполучить приближение (нижний поддиапазон изображения).Это a(m,n) на следующей диаграмме:

diagram

Я получил коэффициенты и диаграмму из книги Цифровая обработка изображений, 3-е издание , поэтому я верючто они верны.Символ star обозначает одномерную свертку (либо над строками, либо над столбцами).Стрелка вниз обозначает понижающую дискретизацию в одном измерении (либо по строкам, либо по столбцам).

Моя проблема заключается в том, что коэффициенты фильтра для h0 и h1 составляют более 1 (приблизительно 1,4 или sqrt (2), если быть точным).Естественно, если я сверну любое изображение с фильтром, изображение станет ярче.Действительно, вот что я получаю (ожидаемый результат справа):

actual expected

Может кто-нибудь подсказать, в чем здесь проблема? Почему это должно работать , если коэффициенты фильтра свертки суммируют больше 1?

У меня есть исходный код, но он довольно длинный, поэтому я надеюсь избежать публикации здесь.Если это абсолютно необходимо, я выложу это позже.

РЕДАКТИРОВАТЬ

То, что я делаю, это:

  1. Разложить на поддиапазоны
  2. Отфильтровать один из поддиапазонов
  3. Перекомпоновка поддиапазонов в исходное изображение

Обратите внимание, что дело не только в том, чтобы иметь отображаемое изображение, разбитое на поддиапазоны - я должен быть в состоянии прекрасновосстановить исходное изображение из поддиапазонов, а также.Поэтому, если я масштабирую отфильтрованное изображение, чтобы компенсировать мой фильтр разложения, чтобы сделать изображение ярче, мне нужно будет сделать следующее:

  1. Разложить на поддиапазоны
  2. Применить масштабирование интенсивности к аппроксимации поддиапазона
  3. Фильтровать один из поддиапазонов
  4. Применить обратное масштабирование интенсивности к аппроксимации поддиапазона
  5. Перекомпоновать поддиапазоны в исходное изображение

Шаг 2 выполняет масштабирование.Это то, что предлагает @ Бенджамин.Проблема в том, что тогда становится необходимым шаг 4, иначе исходное изображение не будет должным образом восстановлено.Этот более длинный метод будет работать .Однако в учебнике прямо сказано, что не выполняется масштабирование в поддиапазоне аппроксимации .Конечно, возможно, что учебник не прав.Однако, что еще более возможно, я не совсем понимаю, как все это работает - вот почему я задаю этот вопрос.

EDIT (2010/7/8)

Я написал автору книги для подтверждения.Он сказал, что вы должны выполнять масштабирование, несмотря на то, что говорится в книге.

1 Ответ

1 голос
/ 14 марта 2011

Если вы знаете сумму ядра, почему бы не исправить яркость после свертки путем деления на правильный коэффициент?

(Например, вы можете взять среднее 3x3 с ядром [1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9], но также с [2, 2, 2, 2, 2, 2, 2, 2, 2], а затем разделить полученные значения на 18 ...)

РЕДАКТИРОВАТЬ: КакВ моем комментарии h1 суммируется с 0. Похоже, что h0 и h1 перевернуты / обратны друг другу, поэтому некоторые коэффициенты h0 могут иметь неправильный знак.

РЕДАКТИРОВАТЬ 2: Пожалуйста, прочитайте комментарии.Я знаю, что этот пост не отвечает на вопрос, я оставляю его здесь для комментариев.

...