ГУАП
КАФЕДРА 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
доцент, канд. тех. наук, доцент |
|
|
|
О. О. Жаринов |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ № 7 |
ОСНОВЫ ЦИФРОВОЙ ФИЛЬТРАЦИИ ИЗОБРАЖЕНИЙ СРЕДСТВАМИ PYTHON. ПРОСТРАНСТВЕННЫЕ ФИЛЬТРЫ |
по курсу: Мультимедиа технологии |
|
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
|
|
|
|
|
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2024
Цель работы
Изучить основы обработки изображений на примере методов фильтрации с использованием пространственных фильтров.
Вариант задания
Номер варианта: 3 и 2
Вид искажения:
PSF = fspecial('disk',P);
S = imfilter(input_image, PSF,'replicate')
Вид шума:
distorted_image = imnoise(S,'gaussian',0,0.0001);
Теоретические сведения
Задачи обработки изображений включают в себя различные операции, такие как фильтрация, улучшение качества, сегментация, распознавание образов и многое другое. Они применяются в различных областях, включая компьютерное зрение, медицину, геологию и другие.
Фильтр Лапласа используется для обнаружения границ и краев в изображениях. Он основан на втором порядке дифференциального оператора, который вычисляет градиент изображения. Этот фильтр часто используется в алгоритмах обнаружения краев и сегментации изображений.
Метод восстановления изображений с использованием регуляризации Тихонова использует информацию о структуре данных и их взаимосвязях для восстановления искаженных или поврежденных изображений. Регуляризация Тихонова позволяет минимизировать ошибки восстановления путем добавления штрафной функции к целевой функции оптимизации.
Метод инверсной винеровской фильтрации используется для подавления шума в изображениях. Винеровский фильтр является линейным фильтром, который уменьшает шум, сохраняя при этом края и границы объектов. Инверсный винеровский фильтр используется для восстановления исходного сигнала на основе его искаженного представления.
Фильтр Лапласа
В первой части лабораторной работы необходимо выбрать расфокусированное изображение и применить фильтр Лапласа для повышения четкости. Для выполнения данного задания была создана функция на Python, которая применяет фильтр к изображению. Таким образом, в таблице 1 показан список используемых переменных, а в листинге 1 – программный код функции.
Таблица 1. Список используемых переменных
Название |
Тип |
Описание |
img |
Двумерный массив |
Считанное изображение |
с |
Положительное число |
Коэффициент корректировки точности |
Filtered_image |
Двумерный массив |
Результат корректировки четкости |
Листинг 1. Функция применения фильтра Лапласа
def laplas_filter(img, c: float): kernel = np.array([ [-c, -c, -c], [-c, 1 + 8 * c, -c], [-c, -c, -c] ]) filtered_image = cv2.filter2D(img, -1, kernel) return filtered_image |
В качестве тестового изображения была сгенерирована картинка нейросетью Шедеврум [3]. Вид данной картинки и её частотный спектр представлены на рисунке 1.
Рисунок 1 – Городской пейзаж
Далее, применим фильтр с коэффициентом равным 0,5 к исходной картинке. Таким образом, на рисунке 2 показана полученная картинка и её спектр, а на рисунке 3 сравнение исходной картинки с полученной.
Рисунок 2 – Повышение четкости изображения (с = 0,5)
Рисунок 3 – Сравнение исходной и полученной
Из полученных рисунков видно, что визуально изображение стало более четким. Если же сравнивать спектры изображений, то после применения фильтра все светлые области исходного спектра усилились, а также стали видны менее светлые. Можно сказать, что данный фильтр усиливает амплитуды всех частот спектра, тем самым увеличивая четкость.
В рамках эксперимента попробуем применить фильтр с параметром равным 1 к исходной картинке. Полученные результаты показаны на рисунках 4 и 5.
Рисунок 4 – Повышение четкости изображения (с = 1)
Рисунок 5 – Сравнение исходной и полученной
При сравнении результатов, полученных на рисунке 3 и 5 видно, что значение параметра равным 1 является избыточным для изображения, поскольку визуально картинка стала слишком четкой.