Как интерполировать значения недостающих пикселей изображения 32x32, используя scipy griddata? - PullRequest
0 голосов
/ 06 мая 2019

У меня есть массив 32x32, представляющий изображение, в котором 50% значений, которые составляют 512 пикселей, являются значениями NaN.Я хочу использовать функцию griddata из scipy.interpolate, чтобы заполнить эти пропущенные значения, чтобы я мог восстановить изображение.

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

Насколько я понимаю, аргумент xi указывает индексы в моем массиве изображений, где я хочу получить интерполированные значения, которые, как я полагаю, будут всеми местами расположения NaN.Аргумент values будет моим массивом изображений, но форма, упомянутая в документации, будет (n,), так что мне нужно сгладить массив?И я действительно не уверен, что означает аргумент points.

Массив изображений выглядит примерно так:

array([[[ nan,  79.,  nan, ...,  nan,  nan,  44.],
        [ nan,  84.,  45., ...,  48.,  84.,  44.],
        [ nan,  nan,  56., ...,  42.,  66.,  34.],
        ...,
        [126.,  nan,  nan, ...,  70.,  nan, 133.],
        [135., 137.,  nan, ...,  nan,  nan,  nan],
        [142.,  nan,  nan, ...,  nan,  nan, 151.]]])

Любые предложения приветствуются.Кроме того, есть ли лучший способ интерполировать значения отсутствующих пикселей?Спасибо.

1 Ответ

1 голос
/ 06 мая 2019

Чтобы ответить на ваш вопрос о том, как работает griddata: для выполнения интерполяции вам необходимо предоставить как ваши существующие точки данных (местоположение и значения), так и узлы, на которые вы хотите интерполировать.Местоположение существующих точек данных соответствует первому ключевому слову (точкам), а их значения представлены вторым ключевым словом (значениями).Представьте, что вы будете измерять температуру на поверхности, тогда точки будут указывать вам местоположение ваших измерений, в то время как значения сообщают вам соответствующую температуру, которую вы записали.Наконец, третье ключевое слово (xi) содержит координаты точек, в которые вы хотите интерполировать существующие данные.Как правило, это будет структурированная сетка, которая должна содержаться в пространственном экстенте ваших существующих данных.Это означает, что для каждого узла в сетке существуют точки данных, которые могут определять многоугольник, внутри которого содержится точка сетки.

Теперь, как на самом деле интерполировать ваши данные, этот ответ должно вам помочь.

...