6.20. Заключение¶
В этой главе были рассмотрены те части numpy и scipy, к которым обращается приложение OpenMV, когда у операции нет встроенного метода в библиотеке изображений:
Концепции – что такое
ndarray, почему упакованный типизированный буфер превосходит Python-listдля численной работы и какой набор типов данных поддерживает камера.Форма и индексация – представления против копий, присваивание срезам для обновлений без выделения памяти,
transpose()как правка дескриптора.Математика – поэлементные операторы, универсальные функции вроде
sin(), правила вещания, редукции вродеmean()и вспомогательные функции выбора вродеwhere().Линейная алгебра –
dot()для умножения матриц,inv()/det()для обращения, а также разложения и решатели вnumpy.linalgиscipy.linalgдля задач с большей структурой.Обработка сигналов –
fft(),sosfilt()для цифровой фильтрации иspectrogram()для амплитудных спектров без выделения памяти в потоковом цикле.Кривые и интегрирование –
interp(),polyfit()/polyval(),convolve()для коротких FIR-фильтров,trapz()для интегрирования методом трапеций по дискретизированным данным.Решатели и случайные числа –
scipy.integrateдля квадратуры вызываемого объекта Python,scipy.optimizeдля поиска корней и минимизации,scipy.specialдля статистических специальных функций иGeneratorдля псевдослучайной выборки.Изображения – мост
to_ndarray()иimage.Imageдля редких случаев, которые библиотека изображений не покрывает.Производительность – малые типы данных, заранее выделенные буферы, операторы на месте, именованные аргументы
out=и внимание к перерасходу на булевы маски в потоковых циклах.
Это покрывает универсальную численную работу, на которую опирается остальная часть камеры. numpy – это набор инструментов, к которому обращается приложение, когда у операции нет встроенного метода в Image – произвольное преобразование пикселей, калибровочное решение, FFT буферизованного аудио.