Эффективный способ сбора 4-точечного подизображения, задачи матричного преобразования + сглаживание

БЫСТРОЕ ПОВТОРЕНИЕ ПРОЕКТА:

Я делаю машину, которая будет ездить сама между препятствиями, которые будут сняты вашим телефоном. Затем изображение должно быть обрезано до размера "области движения" или области, где автомобиль может двигаться. Это должно было быть сделано автоматически. В моем случае я бы сделал это так:

  1. Перед тем, как сфотографировать "карту препятствий", вам нужно будет положить лист бумаги на землю, чтобы программа распознала размер области / способ преобразования изображения, чтобы оно было "перпендикулярно" земле.
  2. В программе вы бы отметили область, где машина может двигаться, и она обрежет ее. Затем он автоматически преобразует выбранную область как можно более "перпендикулярно", поэтому карта препятствий будет достаточной для движения автомобиля, так как это будет карта препятствий.

Тогда у меня есть 2 варианта: либо автоматизировать распознавание препятствий, либо сделать это вручную. Если бы я автоматизировал это, мне пришлось бы использовать какое-то распознавание препятствий OpenCV. Еще просто сделайте простую программу для разметки препятствий. После этого вы отметите точку, куда машина должна двигаться, и она вычислит наиболее оптимальный путь с помощью алгоритма A. Этот алгоритм дает только точки, в которых должен двигаться автомобиль, поэтому я связался с некоторыми преподавателями в моей школе, и теперь они оказывают некоторую помощь в управлении автомобилем и вычислении правильного угла, которым должен следовать автомобиль, чтобы добраться до определенного места.*

У меня есть 2 вопроса, оба связаны с BufferedImage.

  1. Два вопроса в прошлом я задавал вопрос, как получить вспомогательное изображение, которое определяется 4 случайными точками. Я не получил ответов для этого, поэтому я сделал это сам, но я знаю, что этот метод ОЧЕНЬ НЕУДАЧЕН, и я хотел бы знать, как это можно сделать лучше?
  2. Мой второй вопрос о матричном преобразовании. Я уже обсуждал это и получил этот код, который в основном является модифицированной версией этого. Код ограничивает меня размером входного буферизованного изображения, и я хотел бы знать, как я могу "убрать" этот предел, потому что в некоторых случаях изображение необходимо масштабировать, но код продолжает его обрезать. Кроме того, я бы хотел, чтобы на нем была какая-то АА (сглаживание), потому что преобразованное изображение выглядит странно / пиксельно.

РЕДАКТИРОВАТЬ: В коде первого вопроса есть линия метода (точка p1, точка p2) в классе Place_2D, который в основном создает массив точек, соединяющих 2 точки на месте, создавая линию.

1 ответ

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

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

Если коэффициент масштабирования мал (преобразованное изображение составляет менее четверти оригинала), вы можете заранее размыть изображение, чтобы избежать других артефактов.

Другие вопросы по тегам