0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Scikit-image</a></li>
1
<ul><li><a>Scikit-image</a></li>
2
<li><a>NumPy</a></li>
2
<li><a>NumPy</a></li>
3
<li><a>SciPy</a></li>
3
<li><a>SciPy</a></li>
4
<li><a>PIL, он же Pillow</a></li>
4
<li><a>PIL, он же Pillow</a></li>
5
<li><a>OpenCV</a></li>
5
<li><a>OpenCV</a></li>
6
<li><a>SimpleCV</a></li>
6
<li><a>SimpleCV</a></li>
7
<li><a>Mahotas</a></li>
7
<li><a>Mahotas</a></li>
8
<li><a>SimpleITK</a></li>
8
<li><a>SimpleITK</a></li>
9
<li><a>Pgmagick</a></li>
9
<li><a>Pgmagick</a></li>
10
<li><a>PyCairo</a></li>
10
<li><a>PyCairo</a></li>
11
<li><a>Вывод</a></li>
11
<li><a>Вывод</a></li>
12
</ul><p>Статья представляет собой обзор наиболее популярных<strong>Python-библиотек</strong>, предназначенных для простого и понятного<strong>преобразования изображений</strong>(image).</p>
12
</ul><p>Статья представляет собой обзор наиболее популярных<strong>Python-библиотек</strong>, предназначенных для простого и понятного<strong>преобразования изображений</strong>(image).</p>
13
<p>Современный мир заполнен гигантскими объемами данных, причем существенная часть этих данных - изображения. Но чтобы работать с image, картинку надо сначала обработать. Под обработкой в данном случае подразумевается процесс анализа и технических операций, производимых с цифровым изображением в целях улучшения качества image либо извлечения информации, необходимой для последующего применения.</p>
13
<p>Современный мир заполнен гигантскими объемами данных, причем существенная часть этих данных - изображения. Но чтобы работать с image, картинку надо сначала обработать. Под обработкой в данном случае подразумевается процесс анализа и технических операций, производимых с цифровым изображением в целях улучшения качества image либо извлечения информации, необходимой для последующего применения.</p>
14
<p>Общие задачи следующие:</p>
14
<p>Общие задачи следующие:</p>
15
<ul><li>кадрирование,</li>
15
<ul><li>кадрирование,</li>
16
<li>отражение,</li>
16
<li>отражение,</li>
17
<li>сегментация,</li>
17
<li>сегментация,</li>
18
<li>вращение,</li>
18
<li>вращение,</li>
19
<li>классификация,</li>
19
<li>классификация,</li>
20
<li>восстановление,</li>
20
<li>восстановление,</li>
21
<li>извлечение признаков,</li>
21
<li>извлечение признаков,</li>
22
<li>распознавание.</li>
22
<li>распознавание.</li>
23
</ul><p>Прекрасным средством для решения вышеописанных задач является язык программирования Python. Вдобавок к этому, данный язык программирования очень доступен, широко популярен и повсеместно применяется в качестве научно-технического языка. А раз так, то неудивительно, что внутри экосистемы Пайтона существует большое количество хороших инструментов, предназначенных для обработки image. Их и рассмотрим.</p>
23
</ul><p>Прекрасным средством для решения вышеописанных задач является язык программирования Python. Вдобавок к этому, данный язык программирования очень доступен, широко популярен и повсеместно применяется в качестве научно-технического языка. А раз так, то неудивительно, что внутри экосистемы Пайтона существует большое количество хороших инструментов, предназначенных для обработки image. Их и рассмотрим.</p>
24
<h2><strong>S</strong><strong>cikit-image</strong></h2>
24
<h2><strong>S</strong><strong>cikit-image</strong></h2>
25
<p>Пакет для Питона, имеющий открытый исходный код и работающий с массивами <a>NumPy</a>. Позволяет реализовывать алгоритмы и утилиты с последующим их применением в научно-исследовательских, образовательных и даже промышленных программных приложениях. Пакет прост и понятен, с ним справятся даже новички. Код написан активным сообществом, реализован качественно и является рецензированным.</p>
25
<p>Пакет для Питона, имеющий открытый исходный код и работающий с массивами <a>NumPy</a>. Позволяет реализовывать алгоритмы и утилиты с последующим их применением в научно-исследовательских, образовательных и даже промышленных программных приложениях. Пакет прост и понятен, с ним справятся даже новички. Код написан активным сообществом, реализован качественно и является рецензированным.</p>
26
<p>Также библиотека хорошо задокументирована, причем в<a>документации</a>можно найти много практических примеров.</p>
26
<p>Также библиотека хорошо задокументирована, причем в<a>документации</a>можно найти много практических примеров.</p>
27
<p>Пакет импортируется как skimage, а большая часть функций располагается внутри подмодулей. На картинке ниже пример, каким путем можно выполнить фильтрацию изображений:</p>
27
<p>Пакет импортируется как skimage, а большая часть функций располагается внутри подмодулей. На картинке ниже пример, каким путем можно выполнить фильтрацию изображений:</p>
28
<h2><strong>NumPy</strong></h2>
28
<h2><strong>NumPy</strong></h2>
29
<p>Одна из основных и наиболее популярных Python-библиотек, которая поддерживает массивы. Изображение - это стандартный<strong>NumPy</strong>-массив, который содержит пиксели точек данных. В результате в процессе выполнения основных NumPy-операций (срезов, масок, индексирования) есть возможность менять пиксельные значения изображения. Непосредственно image можно загрузить с помощю skimage либо отобразить через Matplotlib.</p>
29
<p>Одна из основных и наиболее популярных Python-библиотек, которая поддерживает массивы. Изображение - это стандартный<strong>NumPy</strong>-массив, который содержит пиксели точек данных. В результате в процессе выполнения основных NumPy-операций (срезов, масок, индексирования) есть возможность менять пиксельные значения изображения. Непосредственно image можно загрузить с помощю skimage либо отобразить через Matplotlib.</p>
30
<p>Все нужные ресурсы и документация есть на<a>официальном сайте</a>NumPy.</p>
30
<p>Все нужные ресурсы и документация есть на<a>официальном сайте</a>NumPy.</p>
31
<p>Вот каким путем можно выполнить маскировку image с помощью NumPy:</p>
31
<p>Вот каким путем можно выполнить маскировку image с помощью NumPy:</p>
32
<p>Как видим, распознать внешность человека с камерой теперь невозможно.</p>
32
<p>Как видим, распознать внешность человека с камерой теперь невозможно.</p>
33
<h2><strong>SciPy</strong></h2>
33
<h2><strong>SciPy</strong></h2>
34
<p><strong>SciPy</strong>- не менее важный научный модуль, сравнимый с NumPy. Он позволяет решать основные задачи по обработке изображений и не только. К примеру, в подмодуле <a><strong>scipy.ndimage</strong></a> есть функции, работающие в n-мерных NumPy-массивах. Текущий пакет содержит функции для линейной/нелинейной фильтрации, интерполяции В-сплайнами, бинарной морфологии и пр. Полный список функций лучше смотреть в <a>документации</a>.</p>
34
<p><strong>SciPy</strong>- не менее важный научный модуль, сравнимый с NumPy. Он позволяет решать основные задачи по обработке изображений и не только. К примеру, в подмодуле <a><strong>scipy.ndimage</strong></a> есть функции, работающие в n-мерных NumPy-массивах. Текущий пакет содержит функции для линейной/нелинейной фильтрации, интерполяции В-сплайнами, бинарной морфологии и пр. Полный список функций лучше смотреть в <a>документации</a>.</p>
35
<p>Рассмотрим, как SciPy используется для размытия изображений посредством фильтра Гаусса:</p>
35
<p>Рассмотрим, как SciPy используется для размытия изображений посредством фильтра Гаусса:</p>
36
<h2><strong>PIL, он же Pillow</strong></h2>
36
<h2><strong>PIL, он же Pillow</strong></h2>
37
<p><strong>PIL </strong>- это Python Imaging Library и бесплатная библиотека, предназначенная для открытия, работы, а также сохранения разных форматов изображений. Неприятная новость заключается в том, что ее разработка остановилась, причем последнее обновление выходило в далеком 2009. Но есть и хорошая новость: существует <a><strong>Pillow</strong></a> - форк PIL, который активно развивается и характеризуется простой установкой. Pillow работает на основных ОС и поддерживает Python 3-й версии. Имеет базовый функционал методов для обработки изображений, в том числе точечные операции, преобразование цветового пространства, фильтры с набором ядер свертки и пр.</p>
37
<p><strong>PIL </strong>- это Python Imaging Library и бесплатная библиотека, предназначенная для открытия, работы, а также сохранения разных форматов изображений. Неприятная новость заключается в том, что ее разработка остановилась, причем последнее обновление выходило в далеком 2009. Но есть и хорошая новость: существует <a><strong>Pillow</strong></a> - форк PIL, который активно развивается и характеризуется простой установкой. Pillow работает на основных ОС и поддерживает Python 3-й версии. Имеет базовый функционал методов для обработки изображений, в том числе точечные операции, преобразование цветового пространства, фильтры с набором ядер свертки и пр.</p>
38
<p>Примеры использования и процесс установки хорошо описаны в<a>документации</a>.</p>
38
<p>Примеры использования и процесс установки хорошо описаны в<a>документации</a>.</p>
39
<p>Улучшаем image через ImageFilter в Pillow:</p>
39
<p>Улучшаем image через ImageFilter в Pillow:</p>
40
<p>from PIL import Image, ImageFilter</p>
40
<p>from PIL import Image, ImageFilter</p>
41
<p>#считывание изображения</p>
41
<p>#считывание изображения</p>
42
<p>im = Image.open( 'image.jpg' )</p>
42
<p>im = Image.open( 'image.jpg' )</p>
43
<p>#отображение изображения</p>
43
<p>#отображение изображения</p>
44
<p>im.show()</p>
44
<p>im.show()</p>
45
<p>from PIL import ImageEnhance</p>
45
<p>from PIL import ImageEnhance</p>
46
<p>enh = ImageEnhance.Contrast(im)</p>
46
<p>enh = ImageEnhance.Contrast(im)</p>
47
<p>enh.enhance(1.8).show("30% more contrast")</p>
47
<p>enh.enhance(1.8).show("30% more contrast")</p>
48
<h2><strong>OpenCV</strong></h2>
48
<h2><strong>OpenCV</strong></h2>
49
<p>Одна из наиболее популярных библиотек, которая используется при обработке приложений по компьютерному зрению (<strong>Computer Vision</strong>- популярнейшее сегодня направление и технология, используемая в системах управления процессами, системах видеонаблюдения с камер, системах дополненной реальности и т. д.). Версия интерфейса для Пайтона называется<a><strong>OpenCV-Python</strong></a>, и именно Python-обертка во фронтенде обеспечивает легкое развертывание и настройку. Отличный инструмент для высоконагруженных вычислительных программ, работа которых связана с Computer Vision. Руководство<a>здесь</a>.</p>
49
<p>Одна из наиболее популярных библиотек, которая используется при обработке приложений по компьютерному зрению (<strong>Computer Vision</strong>- популярнейшее сегодня направление и технология, используемая в системах управления процессами, системах видеонаблюдения с камер, системах дополненной реальности и т. д.). Версия интерфейса для Пайтона называется<a><strong>OpenCV-Python</strong></a>, и именно Python-обертка во фронтенде обеспечивает легкое развертывание и настройку. Отличный инструмент для высоконагруженных вычислительных программ, работа которых связана с Computer Vision. Руководство<a>здесь</a>.</p>
50
<p>На jpg-картинке ниже - пример наложения изображения посредством пирамид с целью создания нового фрукта.</p>
50
<p>На jpg-картинке ниже - пример наложения изображения посредством пирамид с целью создания нового фрукта.</p>
51
<h2><strong>SimpleCV</strong></h2>
51
<h2><strong>SimpleCV</strong></h2>
52
<p>Очередной фреймворк с открытым исходным кодом, предназначенный для создания Computer Vision-приложений. С ним появляется доступ к ряду мощных CV-библиотек (к тому же OpenCV) без надобности изучения глубины цвета, цветовых пространств, файловых форматов и т. д. Кривая обучения гораздо меньше, чем в OpenCV, то есть основной слоган - "компьютерное зрение становится проще". Также среди преимуществ:</p>
52
<p>Очередной фреймворк с открытым исходным кодом, предназначенный для создания Computer Vision-приложений. С ним появляется доступ к ряду мощных CV-библиотек (к тому же OpenCV) без надобности изучения глубины цвета, цветовых пространств, файловых форматов и т. д. Кривая обучения гораздо меньше, чем в OpenCV, то есть основной слоган - "компьютерное зрение становится проще". Также среди преимуществ:</p>
53
<ul><li>простые CV-тесты cмогут писать даже начинающие разработчики;</li>
53
<ul><li>простые CV-тесты cмогут писать даже начинающие разработчики;</li>
54
<li>алгоритм работы обеспечивает функциональную совместимость не только с изображениями (images), но и с камерой (camera), видеофайлами, видеопотоками.</li>
54
<li>алгоритм работы обеспечивает функциональную совместимость не только с изображениями (images), но и с камерой (camera), видеофайлами, видеопотоками.</li>
55
</ul><p>А вот и понятная <a>документация</a>, где можно найти много практических примеров. Один из них - на фотографии ниже:</p>
55
</ul><p>А вот и понятная <a>документация</a>, где можно найти много практических примеров. Один из них - на фотографии ниже:</p>
56
<h2><strong>Mahotas</strong></h2>
56
<h2><strong>Mahotas</strong></h2>
57
<p>Очередная библиотека Python для обработки изображений и Computer Vision. Включает в себя как стандартные обрабатывающие функции (фильтрация, морфологические операции), так и более современные CV-возможности, позволяющие вычислять признаки и находить особые точки и локальные дескрипторы. Python-интерфейс обеспечивает высокую скорость разработки, а алгоритмы написаны на С++. В результате Mahotas представляет собой быструю библиотеку с минимальным кодом и зависимостями. В документации<a>по ссылке</a>можно найти инструкции по установке и даже пошаговые уроки по освоению.</p>
57
<p>Очередная библиотека Python для обработки изображений и Computer Vision. Включает в себя как стандартные обрабатывающие функции (фильтрация, морфологические операции), так и более современные CV-возможности, позволяющие вычислять признаки и находить особые точки и локальные дескрипторы. Python-интерфейс обеспечивает высокую скорость разработки, а алгоритмы написаны на С++. В результате Mahotas представляет собой быструю библиотеку с минимальным кодом и зависимостями. В документации<a>по ссылке</a>можно найти инструкции по установке и даже пошаговые уроки по освоению.</p>
58
<p>Решение задач по поиску и обработке происходит с помощью простого кода. На картинке jpg ниже можно увидеть задачу по поиску под названием "Где Уолли?". Для выполнения поиска требуется минимум кода. </p>
58
<p>Решение задач по поиску и обработке происходит с помощью простого кода. На картинке jpg ниже можно увидеть задачу по поиску под названием "Где Уолли?". Для выполнения поиска требуется минимум кода. </p>
59
<p>На рисунке ниже - результат поиска:</p>
59
<p>На рисунке ниже - результат поиска:</p>
60
<h2><strong>SimpleITK</strong></h2>
60
<h2><strong>SimpleITK</strong></h2>
61
<p>ITK - кроссплатформенная система, которая предоставляет широкий набор средств по анализу image.<strong>SimpleITK </strong>- это упрощенный слой, который надстроен поверх ITK. Он облегчает работу с библиотекой и упрощает собой набор инструментов для выполнения анализа изображений, имеющих большое число компонентов, которые поддерживают общую фильтрацию, а также сегментацию и регистрацию изображений. SimpleITK написан на C++, однако доступен и для других языков, в том числе и Python.</p>
61
<p>ITK - кроссплатформенная система, которая предоставляет широкий набор средств по анализу image.<strong>SimpleITK </strong>- это упрощенный слой, который надстроен поверх ITK. Он облегчает работу с библиотекой и упрощает собой набор инструментов для выполнения анализа изображений, имеющих большое число компонентов, которые поддерживают общую фильтрацию, а также сегментацию и регистрацию изображений. SimpleITK написан на C++, однако доступен и для других языков, в том числе и Python.</p>
62
<p>Возможности SimpleITK можно посмотреть, к примеру, используя<a>Jupyter Notebook</a>. Там же демонстрируется интерактивный анализ изображений с применением языков Python и R.</p>
62
<p>Возможности SimpleITK можно посмотреть, к примеру, используя<a>Jupyter Notebook</a>. Там же демонстрируется интерактивный анализ изображений с применением языков Python и R.</p>
63
<p>На анимации ниже визуализирован процесс преобразования при регистрации КТ- и МРТ-снимков. Доступен и<a>исходный код</a>.</p>
63
<p>На анимации ниже визуализирован процесс преобразования при регистрации КТ- и МРТ-снимков. Доступен и<a>исходный код</a>.</p>
64
<h2>Pgmagick</h2>
64
<h2>Pgmagick</h2>
65
<p>Обертка для библиотеки<strong>GraphicsMagick</strong>- системы, которую порой называют "швейцарским ножом" в обработке image. Тут предоставляется коллекция эффективных библиотек и инструментов, которые поддерживают запись, чтение и операции с изображениями в десятках основных форматов (GIF, JPEG, PNG, PDF, TIFF и пр.). Есть подробное <a>руководство пользователя</a>и<a>ссылка на Github</a>.</p>
65
<p>Обертка для библиотеки<strong>GraphicsMagick</strong>- системы, которую порой называют "швейцарским ножом" в обработке image. Тут предоставляется коллекция эффективных библиотек и инструментов, которые поддерживают запись, чтение и операции с изображениями в десятках основных форматов (GIF, JPEG, PNG, PDF, TIFF и пр.). Есть подробное <a>руководство пользователя</a>и<a>ссылка на Github</a>.</p>
66
<p>На примерах ниже можно увидеть такие операции, как масштабирование изображения и выделение контуров:</p>
66
<p>На примерах ниже можно увидеть такие операции, как масштабирование изображения и выделение контуров:</p>
67
<h2><strong>PyCairo</strong></h2>
67
<h2><strong>PyCairo</strong></h2>
68
<p>Это уже комплект привязок Пайтон-кода для графической библиотеки <a><strong>Cairo</strong></a>. Последняя представляет собой 2D-библиотеку, предназначенную для прорисовки векторной графики. Сама по себе векторная графика интересна тем фактом, что она не теряет свою четкость в случае изменения размеров либо трансформации. Можно вызывать и Cairo-команды. Вводное руководство<a>здесь</a>.</p>
68
<p>Это уже комплект привязок Пайтон-кода для графической библиотеки <a><strong>Cairo</strong></a>. Последняя представляет собой 2D-библиотеку, предназначенную для прорисовки векторной графики. Сама по себе векторная графика интересна тем фактом, что она не теряет свою четкость в случае изменения размеров либо трансформации. Можно вызывать и Cairo-команды. Вводное руководство<a>здесь</a>.</p>
69
<p>Вот каким путем выполняется отрисовка линий, основных фигур и радиальных градиентов:</p>
69
<p>Вот каким путем выполняется отрисовка линий, основных фигур и радиальных градиентов:</p>
70
<h2>Вывод</h2>
70
<h2>Вывод</h2>
71
<p>Сегодня существует много бесплатных и полезных инструментов по обработке изображений в Python (GIF, JPEG, PNG, PDF, TIFF и пр.). Популярность и эффективность у этих инструментов разная. Именно поэтому рекомендуется поработать с несколькими из них, чтобы выбрать наиболее удобную и эффективную библиотеку, максимально подходящую для решения поставленных задач.</p>
71
<p>Сегодня существует много бесплатных и полезных инструментов по обработке изображений в Python (GIF, JPEG, PNG, PDF, TIFF и пр.). Популярность и эффективность у этих инструментов разная. Именно поэтому рекомендуется поработать с несколькими из них, чтобы выбрать наиболее удобную и эффективную библиотеку, максимально подходящую для решения поставленных задач.</p>
72
<p>Также будет полезным повысить навыки программирования на Python:</p>
72
<p>Также будет полезным повысить навыки программирования на Python:</p>
73
<a></a><p><a>Источник</a></p>
73
<a></a><p><a>Источник</a></p>
74
74