Как собрать изображение из отдельных частей и какие нюансы учесть?

Есть таск , нужно из нескольких изображений ( маленьких ) собрать одно большое. Можете, пожалуйста, посоветовать литературу, документацию по этому вопросу, буду рад если подскажите какие-нибудь нюансы по работе с изображениями на python)))
  • Вопрос задан
  • 369 просмотров
Решения вопроса 1
adugin
@adugin Куратор тега Python
skimage.util.montage

Нюансы следующие:
1) Большинство алгоритмов из библиотек чудовищно медленные. Это касается и PIL, и scikit-image, и tensorflow. Например, я написал аналог tf.image.non_max_suppression, который работает в 5 тысяч (!) раз быстрее. Делайте профайлинг кода, сравнивайте время исполнения и разные варианты решения задачи. Местами очень помогает @jit и @njit из numba.
2) Если обрабатываете изображения в цикле, заранее аллоцируйте память под результат. Например, во многих функциях OpenCV есть параметр out, для которого можно заранее создать numpy.array с заданными shape и dtype.
3) Если собираетесь работать с частями изображения, особенно с вырезкой фрагментов, сдвигом/поворотом и вообще аугментацией для нейросетей, используйте сразу матричные преобразования cv2.warpAffine() - это в разы быстрее, чем отдельные последовательные преобразования.
4) Под Linux лучше ставить не pillow, а pillow-simd (pip install pillow-simd) - можете найти статью на Хабре.
5) Очень полезная функция skimage.util.view_as_windows, и вообще разберитесь с numpy array views - это позволит избежать лишнего копирования данных. Также рекомендую разобраться с numpy.lib.stride_tricks.as_strided (лютый мозговынос; упомянутая выше функция view_as_windows - её гуманная версия).
6) Гуглинг преобразований depth_to_space и space_to_depth (такие функции есть в Tensorflow).
7) Очень полезная штука cv2.filter2D().
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
16 июн. 2024, в 13:45
15000 руб./за проект
16 июн. 2024, в 13:36
10000 руб./за проект
16 июн. 2024, в 12:59
6000 руб./за проект