HTML Diff
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