Используйте функции
funconv, matconv, funcdeconv и
matdeconv, чтобы свернуть или развернуть изображение с функцией f или маской E с помощью умножения обеих в пространственной частоте (область преобразования Фурье). В результате фильтрации в частотной области могут иметь место различные операции сглаживания, обнаружения краев и периодического шумоподавления в зависимости от выбранной функции или маски. Проведение фильтрации в области преобразования часто оказывается математически более эффективным или облегчает определение фильтров в сравнении с использованием свертки в области изображения.
Используйте эту функцию, чтобы фильтровать изображение M с функцией в пространственной частоте. Действительная функция f используется, чтобы сконструировать маску N того же размера, что и M. M преобразуется по алгоритму Фурье и затем умножается поэлементно на маску.
Маска конструируется путем передачи аргументов f, которые являются нормированным расстоянием от верхнего левого угла M. Данный процесс продолжается до центра маски, в точке которого маска симметрично дублируется в четыре элемента. Данный процесс используется из-за того, что левый верхний угол — это постоянный электрический ток (нулевая частота).
1. Начните конструировать маску, определяя матрицу изображения M.
2. Найдите пиксел, который представляет центр матрицы изображения.
3. Создайте новые переменные диапазона, представляющие значения от верхнего левого угла к центру изображения.
4. Используйте определенные переменные диапазона и функцию маскирования, чтобы создать верхний левый квадрант маски.
Записью (0, 0) является f(0), а записью (r, c) — f(1).
Маска конструируется путем передачи аргументов (нормированное расстояние от верхнего левого угла M) до f. Данный процесс продолжается до центра маски, в точке которого маска симметрично дублируется в четыре элемента. Данный процесс используется из-за того, что левый верхний угол — это постоянный электрический ток (нулевая частота).
5. Сконструируйте остаток матрицы маски, используя funconv.
Если свертка расширяет масштаб изображения, то матрицу выходных данных можно масштабировать до диапазона [0, 255].
funcdeconv
Эта функция обращения свертки принимает изображение частотной области и функцию частотной области и обращает их свертку.
Последний аргумент funcdeconv e является меньшим членом, который добавляется к знаменателям всех выражений в ходе процедуры. В качестве начального пункта введите значение 0 для e. Если появляется сообщение об ошибке "деление на ноль", введите малое значение для e.
1. Вызовите функцию funcdeconv.
2. Вычислите DE, чтобы просмотреть результат funcdeconv и сравнить с исходной матрицей.
matconv
Функция matconv выполняет то же умножение частотной области и преобразуется в funconv, но принимает маску как ввод вместо функции. Маска должна быть того же размера, что и исходное изображение. Поддерживается только верхний левый квадрант маски.
1. Загрузите изображение выборки.
2. Подсчитайте количество строк и столбцов в матрице изображения.
3. Определите размеры маски.
4. Определите маску C.
Для C можно попробовать следующий фильтр верхних частот:
5. Примените matconv к R и C.
R
C
W
(times.bmp)
(matrix_ii_jj.bmp)
(times_mat.bmp)
matdeconv
Используйте matdeconv, чтобы восстановить исходное изображение. Т. к. обращение свертки потенциально включает деление по элементам с нулевой интенсивностью, то e добавляется к делителю каждого деления для устранения этой проблемы.
(matdeconv.bmp)
Можно поэкспериментировать с другими функциями фильтра, учитывая, что верхний левый угол маски соответствует низким частотам, а нижний правый угол — высоким. Попробуйте различные изображения.