2015-09-14 10 views
0

У меня есть прямоугольник:Преобразование списка точек в ограничительной рамке в Matlab

bbox = [10 20 50 60]; 

Я преобразовать прямоугольник в список точек с помощью:

points = bbox2points(bbox); 

я затем применить вращение к точкам с использованием affine2d и transformPointsForward. Теперь у меня есть мои измененные точки, как я могу преобразовать их обратно в ограничительную рамку? Есть ли встроенная функция, эквивалентная «points2bbox»? Благодарю.

+0

В общем, вы не можете. Исходный ограничивающий прямоугольник был выровнен по оси. Твоих преобразованных точек не может быть. В этом случае они не могут быть описаны x, y, w, h; вам также нужен угол поворота. Ответ на этот вопрос будет зависеть от того, знаете ли вы, что есть поворот или нет. – kmac

+0

Угол поворота известен во всех случаях. Вопрос также может быть поставлен другим способом: у меня есть изображение, небольшая часть которого окружена ограничивающей рамкой. Я поворачиваю изображение x градусов. Как я могу также поворачивать ограничивающий прямоугольник с помощью * одинакового * угла, сохраняя при этом ограничивающий прямоугольник? Спасибо за вашу помощь! –

+0

Является ли трансформация на самом деле аффинной? Сдвиг не оставит вас с прямоугольником. Если это просто перевод и вращение (жесткое), не беспокойтесь о преобразовании в точки и применении преобразования. Просто добавьте компонент перевода в (x, y) вашего ограничивающего прямоугольника и запишите угол поворота. Теперь у вас есть (x, y, w, h, theta) представление ограничивающей рамки. – kmac

ответ

0

Теперь отсортировано. Я просто перевернул изображения различными способами, а затем вычислил новую позицию ограничивающего прямоугольника с использованием угла поворота и размеров исходного изображения (которое оставалось постоянным).