GlueStack
@GlueStack
Программист самоучка

Как сделать эластичную (не разрывную) деформацию картинки такую как в моих случаях?

Возник вопрос, который поставил меня в тупик.
Есть картинка (которая указана ниже). Это допустим любое изображение, которое нужно деформировать.
5fa3bef22e869734914250.png
С ней нужно сделать следующее, это уменьшить его по оси Y (по высоте) на 15-20%. Далее после данной процедуры нужно взять,
как я понял поделить изображение на 2 части и вторую часть уже деформировать, чтоб было бочкования такого рода
5fa3bf01cd82d755496831.png
Думаю уже неделю как сделать данную программу, прочитал кучу статей и QnA на подобные темы, но ничего не подошло.
Как я понял, чтоб это сделать грамотно, нужно разбить на сетку картинку, далее сделать эластичную деформацию. Но толи ума, толи опыта не позволяет мне данную тему реализовать.
Код свой я не буду оставлять (ибо он ничем не отличается на данном этапе (кроме инверсии синусойды) от кода в 1ой статье), взамен я отправлю просто ссылку на стаковерфлоу от которой я пытался отпираться:
1) https://stackoverflow.com/questions/52460962/conve...
2) https://stackoverflow.com/questions/32462548/plot-...
И самый главный и как я понял самая нужная для меня информация тут (но тут я максимально не понял как мне двигаться и где тут точки которые задаёт отвечающий и как кодом я сделаю своего рода элипсиодное бочкование):
3)https://stackoverflow.com/questions/53907633/how-t...
Есть тема с fisheye сделать бочкование, но проблема в том, что при большом радиусе картинка вырезается и выглядит не как одно целое.
Если есть у вас предложение или хотяб от чего можно ещё оттолкнуться, то очень сильно прошу помочь в данном вопросе.
Если вы ответите кодом, то буду очень рад, если вы мне разжуёте что вы делали, потому что скорее всего мне потребуется сделать ещё какие-то махинации с картинками, а такого героя во второй раз скорее всего уже не будет на моих вопросах!
Заранее спасибо всем тем, кто прочитал данный вопрос!
Всем peace.
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 2
maaGames
@maaGames
Погроммирую программы
1. Сделать текстурированную полигональную 2D сетку (чем мельче, тем точнее будет результат)
2. Деформирвоать сетку любым способом в любом направлении, хоть бочкообразно, хоть волной, хоть как хотите
3. визуализировать полигональную сетку
4. ПРОФИТ.
Как конкретно это сделать в опенцв и питоне не скажу. Но уверен, что можно.
Ответ написан
Комментировать
gbg
@gbg
Любые ответы на любые вопросы
Обычное решение задачи о деформировании тела, вам помогут дифференциальные уравнения в частных производных, применяемые в строительной механике.

Изображение нужно будет покрыть сеткой точек.

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

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

Войдите, чтобы написать ответ

Похожие вопросы