Лабораторная работа №9
Анализ возможностей нейросетевых технологий, используемых для повышения разрешения изображений
Цель
Целью данной работы является создание модели, которая реализует логику обработки фотографий и улучшение их качества.
Задание
Подготовить черно-белую фотографию хорошего качества для первой модели и цветную для второй.
Найти инструмент по ухудшению качества (посредством «сжатия») изображения, например, https://online-photo-converter.com/ru/quality-image.
Создать две модели, реализующие работу с фотографиями.
Постепенно уменьшать качество фото, а также менять параметры моделей для анализа их поведения.
Сформулировать выводы.
Ответить на контрольные вопросы.
Краткая теория
Для любого веб-сайта поддержание качества изображений становится сложной задачей, потому что высокое качество изображения приведет к медленной скорости загрузки целевых страниц, что может привести к ухудшению взаимодействия с пользователем.
Всякий раз, когда кто-либо сталкивается с изображением плохого качества, пользователь теряет интерес. Изображение отличного качества заставляет людей оставаться на странице и продолжать взаимодействовать с контентом.
Вот почему действия по улучшению изображения играют жизненно важную роль в возвращении деталей и делают изображения визуально привлекательными для конечных пользователей.
Изображения редактируются таким образом, чтобы вернуть динамический диапазон данного кадра. В результате изображения выглядят более яркими и профессиональными. Действие по улучшению изображения не изменит кадр, добавив что-либо в кадр.
Данная лабораторная работа содержит два метода улучшения изображения с помощью языка программирования Python для улучшения качества изображения. В начале будет рассмотрен метод с преобразования степенного закона, а затем рассмотрено инверсное изображение.
Выполнение
Преобразование степенного закона
Интенсивность I(i,j) относится к значению пикселя, расположенного на изображении. Это значение представляет интенсивность этого конкретного пикселя на фотографии и находится в диапазоне от 0 до 255, в то время как i и j относятся к значениям строки и столбца соответственно.
Для метода преобразования по степенному закону существует оператор, называемый гамма-коррекцией, который используется в этом методе для улучшения изображения.
Ниже приведено уравнение оператора на уровне пикселей.
Для большинства сценариев значение k в этом уравнении равно 1, поэтому сосредоточимся только на значении гаммы.
Таким образом, можно написать уравнение, как показано ниже.
NumPy и OpenCV — это две библиотеки, которые используются в этом примере.
Листинг 1. Реализация первого метода
import cv2
import numpy as np
from google.colab.patches import cv2_imshow
im = cv2.imread('10.jpg')
im = im/255.0
im2 = cv2.pow(im,0.6)
im = im*255.0
im2 = im2*255.0
cv2_imshow(im)
cv2_imshow(im2)
cv2.waitKey(1110)
Обратите внимание, что в листинге используются значение гаммы 0,6 и изображение с именем "10.jpg", которое является образцом изображения. Вы можете установить имя вашего изображения в этом месте.
Итак, после написания кода можно получить изображение, которое светлее по сравнению с исходной версией.
Теперь изменим значение гаммы на 1,5 и увидим, что вскоре изображение становится темнее. В этом конкретном примере значение гаммы представляет собой то, как можно отобразить изображение в цифровом виде.
Человеческий мозг использует гамма-коррекцию для понимания изображения, а значение гаммы является наилучшим отображением контраста в картинках на цифровых экранах. Это основное преимущество использования инструмента преобразования по степенному закону для получения наилучшего коэффициента контрастности изображений и импровизации динамического диапазона, чтобы оно выглядело более броским.
Повторите выполнение метода с различными значениями гамма-коррекции, но одним с изображением.
Повторите выполнение метода с одним значением гамма-коррекции, но фотографиями разного качества.
Сделайте выводы.
Метод, известный как Image Inverse (Инверсное изображение)
Все цветные изображения обычно имеют три цветовых канала, а именно красный, зеленый и синий. Они также известны как RGB в мире графики. Итак, в этом примере, чтобы изменить цветное изображение, настраивается их интенсивность, вычитая их текущие значения из 255.
На первом этапе вам нужно извлечь каждое значение интенсивности каналов. И чтобы извлечь значение, можно использовать Python Imaging Library.
После чего необходимо понять, в каком режиме система считывает образ
Напечатать все значения красного, зеленого и синего каналов всех пикселей изображения
Применить оператор обратного изображения к фотографии, чтобы вернуть цвета
Листинг 2. Реализация второго метода
import scipy.misc import cv2 import imageio from scipy import misc from google.colab.patches import cv2_imshow from PIL import Image im = cv2.imread('2.jpg') im_array = np.asarray(im) im_inverse = 255 - im_array im_result = Image.fromarray(im_inverse) imageio.imwrite('result.tiff',im_result) im1 = cv2.imread('result.tiff') cv2_imshow(im) cv2_imshow(im1)
Проведите аналогичные исследования, как и в первом методе. Приведите пояснения получившихся результатов.
Контрольные вопросы
Что такое Python Imaging Library?
Какие библиотеки используются в данной работе?
В чем суть метода Image Inverce?
Список литературы
https://www.researchgate.net/publication/321168450_Inversion_with_respect_to_a_Horocycle_of_a_Hyperbolic_Plane_of_Positive_Curvature
https://pythonru.com/biblioteki/osnovnye-vozmozhnosti-biblioteki-python-imaging-library-pillow-pil