Деформация изображения с векторами сдвига - PullRequest
0 голосов
/ 05 апреля 2019

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

Вот пример изображения, которое я хочу деформировать:

source image

Теперь я нашел способ сделать это в PIL, вот пример кода:

from PIL import Image

image = Image.open('Untitled.tif')
grid = [
    [
        # 1
        [0, 0, 300, 300],
        [0, 0, 0, 300, 400, 400, 300, 0]
    ],
    [
        # 2
        [300, 0, 600, 300],
        [300, 0, 400, 400, 500, 400, 600, 0]
    ],
    [
        # 3
        [600, 0, 900, 300],
        [600, 0, 500, 400, 900, 300, 900, 0]
    ],
    [
        # 4
        [0, 300, 300, 600],
        [0, 300, 0, 600, 400, 500, 400, 400]
    ],
    [
        # 5
        [300, 300, 600, 600],
        [400, 400, 400, 500, 500, 500, 500, 400]
    ],
    [
        # 6
        [600, 300, 900, 600],
        [500, 400, 500, 500, 900, 600, 900, 300]
    ],
    [
        # 7
        [0, 600, 300, 900],
        [0, 600, 0, 900, 300, 900, 400, 500]
    ],
    [
        # 8
        [300, 600, 600, 900],
        [400, 500, 300, 900, 600, 900, 500, 500]
    ],
    [
        # 9
        [600, 600, 900, 900],
        [500, 500, 600, 900, 900, 900, 900, 600]
    ]
]
result = image.transform(image.siresultingage.MESH, grid)

Это изображение результата:

result image

Проблема состоит в том, что в этом методе мне нужно указать прямоугольные области и другую четырехугольную область, чтобы соответствовать первой.Мои векторы сдвига - это просто координаты ([x1, y1, x2, y2], где x1 и y1 - исходные координаты, а x2 и y2 - координаты цели), поэтому мне нужен метод для выполнения такой деформации с другой сеткойНапример:

grid = [
#    x1   y1   x2   y2
    [300, 300, 200, 200],
    [600, 300, 700, 200],
    [300, 600, 200, 700],
    [600, 600, 700, 700]
]

Результат (если бы я не ошибся) был бы точно таким же, но входные данные были бы такими же, как у меня.Важно то, что мне нужно использовать TPS в качестве метода интерполяции.Я пытался найти решение в opencv, PIL, scikit image и GDAL, но пока безуспешно.Кто-нибудь знает такие методы?

Возможно, я не описал проблему полностью, поэтому, пожалуйста, спросите, если что-то неясно.

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