Как создать матрицу преобразования для бикубической интерполяции на замаскированной 2D-сетке?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как создать матрицу преобразования для бикубической интерполяции на замаскированной 2D-сетке?

Сообщение Anonymous »

У меня есть набор патчей изображений одинакового размера, в которых замаскировано 20% пикселей. Я хочу интерполировать недостающие пиксели, используя бикубическую интерполяцию на обычной 2D-сетке.
Обычно это можно сделать с помощью scipy.interpolate.interp2d. Однако, поскольку маска одинакова для всех патчей и я всегда интерполирую одни и те же координаты, я ищу более эффективный подход.
В частности, я хочу предварительно вычислить матрицу преобразования A , который применяется к известным пикселям, что позволяет мне интерполировать недостающие пиксели посредством простого умножения матрицы на вектор. Этот метод должен использовать тот факт, что бикубическая интерполяция является линейной, поэтому должна быть возможность выразить интерполяцию как y=A@x, где x представляет известные значения пикселей, а y > представляет интерполированный результат. Как я могу построить такую ​​матрицу преобразования для бикубической интерполяции на маскированной двумерной сетке?
Вот простой фрагмент кода:

Код: Выделить всё

import numpy as np
import matplotlib.pyplot as plt
from skimage import data, img_as_float
from skimage.util import random_noise
from skimage.metrics import peak_signal_noise_ratio as psnr
from scipy.ndimage import zoom

image = img_as_float(data.astronaut())
gray_image = np.mean(image, axis=2)
patch_size = 32
patch = gray_image[:patch_size, :patch_size]
mask = np.random.rand(*patch.shape) > 0.2
masked_patch = patch.copy()
masked_patch[~mask] = 0

fig, axs = plt.subplots(1, 2, figsize=(12, 4))

axs[0].imshow(patch, cmap='gray')
axs[0].set_title('Original Patch')

axs[1].imshow(masked_patch, cmap='gray')
axs[1].set_title('Masked Patch')

for ax in axs:
ax.axis('off')

plt.show()
Я хочу интерполировать недостающие пиксели Masked Patch, но не используя scipy.interpolate.interp2d, я хочу получить матрицу преобразования, которая представляет собой длинная матрица, которая применяется к существующим пикселям и выводит интерполированное изображение.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -masked-2d
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как создать матрицу преобразования для бикубической интерполяции на замаскированной 2D-сетке?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Получение коэффициентов сплайнов для бикубической интерполяции сплайна в Python
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Получение коэффициентов сплайнов для бикубической интерполяции сплайна в Python
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как умножить матрицу 2x3x3x3 на матрицу 2x3, чтобы получить матрицу 2x3
    Anonymous » » в форуме Python
    0 Ответы
    64 Просмотры
    Последнее сообщение Anonymous
  • Как умножить матрицу 2x3x3x3 на матрицу 2x3, чтобы получить матрицу 2x3
    Anonymous » » в форуме Python
    0 Ответы
    57 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»