Вычисление коэффициентов детализации без субдискретизации

Вейвлет-преобразование позволяет вычислить коэффициенты детализации сигнала или изображения. Он также понижает разрешение изображения на каждом уровне декомпозиции.

Я хочу вычислить коэффициенты детализации без субдискретизации. Я хочу использовать фильтр нижних частот G для извлечения коэффициентов детализации, подобных описанию квадратурного зеркального фильтра, за вычетом понижающей дискретизации. Однако у меня этот фильтр есть только в 1D: [-1/sqrt(2), 1/sqrt(2)]

Насколько я понимаю, я могу сначала применить G к строкам изображения, а затем к столбцам. Как я могу выполнить это умножение в Numpy? Мое изображение имеет размер 768x768.

каков размер этого массива 1D? [-1/sqrt(2), 1/sqrt(2)]

kmario23 07.04.2019 01:09

@kmario23 (2,)

saad 07.04.2019 01:12
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

In [70]: filter_ = np.array([-1/np.sqrt(2), 1/np.sqrt(2)])

In [71]: filter_
Out[71]: array([-0.70710678,  0.70710678])

# tile the initial array to match the dimensions of image
In [72]: filter_1d = np.tile(filter_, 768//2)

In [73]: filter_1d.shape
Out[73]: (768,)

In [74]: img = np.random.random_sample((768, 768))

# apply the filter on the image
In [76]: filtered = np.multiply(img, filter_1d)

In [77]: filtered.shape
Out[77]: (768, 768)

В каком направлении это умножается? Строки или столбцы?

saad 07.04.2019 01:51

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

kmario23 07.04.2019 01:55

Другие вопросы по теме