Я не знаю, поможет ли это вам, но вот мои мысли о том, как я подхожу к этой проблеме.
Вам понадобятся функции для определения ваших «самых угловых» точек (в вашем примере 2 левых и 2 правых пункта). Учитывая эти 4 точки, соедините их линиями.
(Обратите внимание, что в вашем примере изображения верхняя точка не будет содержаться в сгенерированном прямоугольнике, поэтому ...)
Затем вам понадобится функция, чтобы определить, содержит ли созданный прямоугольник все заданные точки; если нет, увеличьте конечные точки (в данном случае верхние 2 точки сгенерированного прямоугольника) на N (что является либо одной мерой ... скажем, пикселем, либо, если вы умны, расстоянием до точки, которая находится вне границ плюс / минус один в зависимости от направления) и переоценить.