scipy.ndimage.

geometric_transform#

scipy.ndimage.geometric_transform(входные данные, mapping, output_shape=None, вывод=None, порядок=3, mode='constant', cval=0.0, prefilter=True, extra_arguments=(), extra_keywords=None)[источник]#

Применить произвольное геометрическое преобразование.

Данная функция отображения используется для нахождения, для каждой точки в выходных данных, соответствующих координат во входных данных. Значение входа в этих координатах определяется сплайн-интерполяцией указанного порядка.

Параметры:
входные данныеarray_like

Входной массив.

mapping{callable, scipy.LowLevelCallable}

Вызываемый объект, который принимает кортеж длины, равной рангу выходного массива, и возвращает соответствующие входные координаты как кортеж длины, равной рангу входного массива.

output_shapeкортеж целых чисел, необязательный

Кортеж формы.

выводмассив или dtype, опционально

Массив, в который будет помещен результат, или тип данных возвращаемого массива. По умолчанию будет создан массив того же типа данных, что и входной.

порядокint, необязательный

Порядок сплайн-интерполяции, по умолчанию 3. Порядок должен быть в диапазоне 0-5.

mode{‘reflect’, ‘grid-mirror’, ‘constant’, ‘grid-constant’, ‘nearest’, ‘mirror’, ‘grid-wrap’, ‘wrap’}, опционально

The mode параметр определяет, как входной массив расширяется за пределы его границ. По умолчанию 'constant'. Поведение для каждого допустимого значения следующее (см. дополнительные графики и детали на граничные режимы):

‘reflect’ (d c b a | a b c d | d c b a)

Входные данные расширяются путем отражения относительно края последнего пикселя. Этот режим также иногда называют полувыборочной симметрией.

'grid-mirror'

Это синоним для 'reflect'.

‘constant’ (k k k k | a b c d | k k k k)

Входные данные расширяются путем заполнения всех значений за границей одним и тем же постоянным значением, определенным cval параметр. Никакая интерполяция не выполняется за пределами границ ввода.

‘grid-constant’ (k k k k | a b c d | k k k k)

Входные данные расширяются путем заполнения всех значений за границей одним и тем же постоянным значением, определенным cval параметр. Интерполяция происходит и для выборок за пределами области входных данных.

‘nearest’ (a a a a | a b c d | d d d d)

Входные данные расширяются путём репликации последнего пикселя.

‘mirror’ (d c b | a b c d | c b a)

Входные данные расширяются путем отражения относительно центра последнего пикселя. Этот режим также иногда называют симметрией целого образца.

‘grid-wrap’ (a b c d | a b c d | a b c d)

Входные данные расширяются путём обёртывания вокруг противоположного края.

‘wrap’ (d b c d | a b c d | b c a b)

Входные данные расширяются за счёт зацикливания на противоположный край, но таким образом, что последняя точка и начальная точка точно перекрываются. В этом случае не определено, какой образец будет выбран в точке перекрытия.

cvalскаляр, опционально

Значение для заполнения за краями ввода, если mode равно 'constant'. По умолчанию равно 0.0.

prefilterbool, необязательно

Определяет, предварительно ли отфильтрован входной массив с помощью spline_filter перед интерполяцией. По умолчанию True, что создаст временный float64 массив отфильтрованных значений, если order > 1. Если установить это значение в False, вывод будет слегка размыт, если order > 1, если только входные данные не предварительно отфильтрованы, т.е. они являются результатом вызова spline_filter на исходных входных данных.

extra_argumentsкортеж, необязательный

Дополнительные аргументы, передаваемые в mapping.

extra_keywordsdict, optional

Дополнительные ключевые слова, передаваемые в mapping.

Возвращает:
выводndarray

Отфильтрованный вход.

Смотрите также

map_coordinates, affine_transform, spline_filter1d

Примечания

Эта функция также принимает низкоуровневые функции обратного вызова с одной из следующих сигнатур и обёрнутые в scipy.LowLevelCallable:

int mapping(npy_intp *output_coordinates, double *input_coordinates,
            int output_rank, int input_rank, void *user_data)
int mapping(intptr_t *output_coordinates, double *input_coordinates,
            int output_rank, int input_rank, void *user_data)

Вызывающая функция перебирает элементы выходного массива, вызывая функцию обратного вызова для каждого элемента. Координаты текущего выходного элемента передаются через output_coordinates. Функция обратного вызова должна возвращать координаты, в которых входные данные должны быть интерполированы в input_coordinates. Ранг входных и выходных массивов задаётся input_rank и output_rank соответственно. user_data предоставлен ли указатель данных scipy.LowLevelCallable как есть.

Функция обратного вызова должна возвращать целочисленный статус ошибки, который равен нулю, если что-то пошло не так, и единице в противном случае. Если возникает ошибка, вы обычно должны установить статус ошибки Python с информативным сообщением перед возвратом, иначе вызывающая функция установит сообщение об ошибке по умолчанию.

Кроме того, принимаются некоторые другие спецификации указателей на низкоуровневые функции, но они предназначены только для обратной совместимости и не должны использоваться в новом коде.

Для комплекснозначных входные данные, эта функция преобразует вещественную и мнимую части независимо.

Добавлено в версии 1.6.0: Добавлена поддержка комплексных значений.

Примеры

>>> import numpy as np
>>> from scipy.ndimage import geometric_transform
>>> a = np.arange(12.).reshape((4, 3))
>>> def shift_func(output_coords):
...     return (output_coords[0] - 0.5, output_coords[1] - 0.5)
...
>>> geometric_transform(a, shift_func)
array([[ 0.   ,  0.   ,  0.   ],
       [ 0.   ,  1.362,  2.738],
       [ 0.   ,  4.812,  6.187],
       [ 0.   ,  8.263,  9.637]])
>>> b = [1, 2, 3, 4, 5]
>>> def shift_func(output_coords):
...     return (output_coords[0] - 3,)
...
>>> geometric_transform(b, shift_func, mode='constant')
array([0, 0, 0, 1, 2])
>>> geometric_transform(b, shift_func, mode='nearest')
array([1, 1, 1, 1, 2])
>>> geometric_transform(b, shift_func, mode='reflect')
array([3, 2, 1, 1, 2])
>>> geometric_transform(b, shift_func, mode='wrap')
array([2, 3, 4, 1, 2])