Улучшение фотографий с помощью техники программирования Python
Python — самая надежная и известная система управления контентом для веб-сайтов любого типа, позволяющая создавать динамически привлекательные веб-ресурсы для их использования.
В Python есть все, что могут потребовать разработчики, чтобы предоставить конечным потребителям надежный пользовательский интерфейс и развивать бизнес в Интернете.
Для любого веб-сайта поддержание качества изображений становится сложной задачей, потому что высокое качество изображения приведет к медленной скорости загрузки целевых страниц, что может привести к ухудшению взаимодействия с пользователем.
В Интернете доступно множество инструментов, которые могут сжимать изображения и делать их загружаемыми на веб-сайт. Например, мы можем порекомендовать Масштабирование изображений Zyro. Однако полученные изображения часто теряют всю свою визуальную привлекательность после сжатия с помощью онлайн-инструмента.
Всякий раз, когда кто-либо сталкивается с изображением плохого качества, пользователь теряет интерес.
Изображение отличного качества заставляет людей оставаться на вашей странице и продолжать взаимодействовать с вашим контентом.
Вот почему действия по улучшению изображения играют жизненно важную роль в возвращении этих деталей и делают изображения визуально привлекательными для конечных пользователей.
Изображения редактируются таким образом, чтобы вернуть динамический диапазон данного кадра, чтобы изображения выглядели более яркими и профессиональными.
Действие по улучшению изображения не изменит кадр, добавив что-либо в кадр.
В этой статье мы собираемся обсудить два метода улучшения изображения с помощью Python для улучшения качества изображения на целевых страницах.
Начнем с преобразования степенного закона, а затем обсудим инверсное изображение:
Преобразование степенного закона
По сути, I(i,j) относится к значению пикселя, расположенного на изображении. Это значение представляет интенсивность этого конкретного пикселя на фотографии и находится в диапазоне от 0 до 255, в то время как i и j относятся к значениям строки и столбца соответственно.
Для метода преобразования по степенному закону у нас есть оператор, называемый гамма-коррекцией, который мы собираемся использовать в этом методе для улучшения нашего изображения.
Ниже приведено уравнение оператора на уровне пикселей.
O(i,j) = kI(i,j)^gamma
Для большинства сценариев значение k в этом уравнении равно 1, поэтому мы сосредоточимся только на значении гаммы.
Таким образом, вы можете написать уравнение, как показано ниже.
p(i,j) = I(i,j)^gamma
Теперь мы будем использовать некоторые библиотеки для обеспечения эффективной работы.
NumPy и OpenCV — это две библиотеки, которые мы собираемся использовать в этом примере.
Ниже приведен скрипт Python, который мы напишем здесь. Любой стандарт Агентство веб-разработки Python будет использовать этот скрипт.
import cv2
import numpy as np
im = cv2.imread('boat.tiff')
im = im/255.0
im_power_law_transformation = cv2.pow(im,0.6)
cv2.imshow('Original Image',im)
cv2.imshow('Power Law Transformation',im_power_law_transformation)
cv2.waitKey(0)
Обратите внимание, что мы установили значение гаммы 0,6 и использовали изображение boat.tiff, которое является образцом изображения. Вы можете установить имя вашего изображения в этом месте.
Кроме того, мы использовали черно-белую фотографию, чтобы улучшить качество изображения и понять, как работает этот метод.
Итак, после написания кода вы можете получить изображение, которое светлее по сравнению с исходной версией.
Теперь мы изменим значение гаммы на 1,5 и увидим, что вскоре изображение становится темнее.
В этом конкретном примере значение гаммы представляет собой то, как мы хотим отобразить изображение в цифровом виде.
Человеческий мозг использует гамма-коррекцию для понимания изображения, а значение гаммы является наилучшим отображением контраста в картинках на цифровых экранах.
Это основное преимущество использования инструмента преобразования по степенному закону для получения наилучшего коэффициента контрастности изображений и импровизации динамического диапазона, чтобы оно выглядело более броским.
В другом примере мы собираемся использовать цветное изображение и улучшить его с помощью кода Python.
Давайте рассмотрим другой метод, известный как Image Inverse:
Инверсное изображение
Все цветные изображения обычно имеют три цветовых канала, а именно красный, зеленый и синий. Они также известны как RGB в мире графики.
Итак, в этом примере, чтобы изменить цветное изображение, мы собираемся настроить их интенсивность, вычитая их текущие значения из 255.
@O_R(i,j) = 255 - R(i,j)
O_G(i,j) = 255 - G(i,j)
O-B)i,j) = 255 - B(i,j)
Для упрощения этого конкретного примера мы собираемся использовать изображение в масштабе grscale и применить оператор.
На первом этапе вам нужно извлечь каждое значение интенсивности каналов. И чтобы извлечь значение, мы собираемся использовать Python Imaging Library. Полное руководство по Python окажется полезным для изучения библиотеки изображений Python.
Например, вы хотите извлечь значение RGB в точке расположения пикселя (325, 432).
Вы можете выполнить этот процесс, написав приведенный ниже фрагмент кода.
из изображения импорта PIL
im = Image.open('baboon.png')
print im.getpixel((325,432))
Как вы могли догадаться, метод getpixel возвращает значение пикселя в заданной позиции.
Однако, если вы запустите сценарий, вы получите случайное число, которое не будет представлять значение RGB для этого конкретного пикселя.
Итак, нужно понять, в каком режиме система считывает образ. Для этого напишите приведенную ниже строку кода.
print im.mode
Если на выходе отображается «P», это означает, что изображение считывается в режиме палитры, поэтому вам придется преобразовать изображение в режим RGB с помощью приведенного ниже кода.
rgb_im = im.convert('RGB')
Как только вы напишите это, предположительно, вы получите что-то вроде (187, 168 138). Это значение показывает три разных канала, таких как красный, зеленый и синий, со значениями 180, 168 и 138 соответственно.
Итак, в двух словах, вам нужно будет написать приведенный ниже код, чтобы выполнить эту задачу за один раз.
из изображения импорта PIL
im = Image.open('baboon.png')
rgb_im = im.convert('RGB')
print rgb_im.getpixel((325,432))
Вот как вы можете быстро получить значение RGB для определенного местоположения пикселя в данном кадре.
Теперь, чтобы напечатать все значения красного, зеленого и синего каналов всех пикселей изображения, вы можете прочитать приведенный ниже фрагмент кода Python.
из изображения импорта PIL
im = Image.open('baboon.png')
rgb_im = im.convert('RGB')
width, height = im.size
for w in range(width):
for h in range(height):
print rgb_im.getpixel((w,h))
Теперь мы собираемся применить оператор обратного изображения к нашему изображению, чтобы вернуть цвета.
Для этого напишите приведенный ниже фрагмент кода.
import scipy.misc
from scipy import misc
from scipy.misc.pilutil import Image
im = Image.open('boat.tiff')
im_array = scipy.misc.fromimage(im)
im_inverse = 255 - im_array
im_result = scipy.misc.toimage(im_inverse)
misc.imsave('result.tiff',im_result)
С помощью приведенного выше фрагмента кода фотография будет преобразована. Чтобы узнать подробности об этих вещах, вам следует связаться с разработчиком приложений Python и нанять его. Это поможет вам в долгосрочной перспективе.
Вы получите перевернутое изображение. Белые или яркие картинки в рамке стали бы темнее и наоборот.
Вот как вы можете улучшить качество изображения вашего изображения с помощью Python язык программирования.
Вывод
Дайте мне знать, что вы думаете об улучшении ваших фотографий с помощью этих методов на языке программирования Python.
Я хотел бы узнать ваше мнение об этой теме, так что не стесняйтесь делиться своими комментариями ниже.