Задание:
1. Подготовьте одно изображение для экспериментов с гауссовской и лапласовской пирамидой.
2. Постройте гауссовскую пирамиду изображения из не менее чем пяти слоев. Визуализируйте полученные изображения и амплитуды частот изображений пирамиды (код можно найти в видео про преобразование Фурье) и убедитесь, что на каждом слое диапазон частот сужается. Постройте пирамиду для трех различных значения сигмы гауссовского ядра. Для удобства экспериментирования определите отдельную функцию построения гауссовской пирамиды с параметрами img (изображение, по которому строится пирамида), sigma (параметр гауссовского ядра), n_layers (количество слоев пирамиды), возвращающую списки необходимых изображений.
3. Проведите аналогичные эксперименты с лапласовской пирамидой. Функция для построения лапласовской пирамиды должна использовать функцию построения гауссовской пирамиды и иметь, как и функция гауссовской пирамиды, параметры img, sigma и n_layers.
4. На основе функций построения гауссовской и лапласовской пирамиды напишите функцию склейки двух изображений на основе маски. Функция должна возвращать склееные изображения и промежуточные результаты — склееные изображения разных частот (т.е. лапласовскую пирамиду совмещенного изображения). Изображения для тестирования: a.png, b.png, mask.png. Изображение с маской не является бинарным (т.е. имеет промежуточные градации серого), его можно бинаризовать путём сравнения всех элементов с порогом 128:
mask = imread('mask.png')
mask = (mask > 128).astype('uint')
Посмотрите, как ведет себя склейка при изменении sigma (попробуйте три варианта значений при фиксированном количестве слоев в пирамидах) и при изменении количества слоев (попробуйте три варианта слоев при фиксированном sigma). Склейка должна выдавать качественный результат без видимых артефактов хотя бы с одним набором параметров.
5. Подготовьте самостоятельно три набора изображений и масок для склейки и визуализируйте результаты функции. У вас должно получиться 3 качественных и интересных коллажа.