Наилучшее приближение прямоугольником
От: Che  
Дата: 28.09.15 16:16
Оценка:
Здравствуйте друзья, такой вопрос:
как приблизить произвольный многоугольник прямоугольником, так чтобы сумма площадей отсекаемых и прибавляемых кусков была минимальна?

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

Есть ли какой-то готовый алгоритм (и его реализация на С++, в идеале)? Или какие-то разумные мысли, куда смотреть?

С уважением.
Re: Наилучшее приближение прямоугольником
От: T4r4sB Россия  
Дата: 28.09.15 16:51
Оценка: 2 (1)
Здравствуйте, Che, Вы писали:

Che> Здравствуйте друзья, такой вопрос:

Che>как приблизить произвольный многоугольник прямоугольником, так чтобы сумма площадей отсекаемых и прибавляемых кусков была минимальна?

Che> В opencv реализован поиск прямоугольника минимальной площади, окружающего данный — это не то, что нужно.


Che>Есть ли какой-то готовый алгоритм (и его реализация на С++, в идеале)? Или какие-то разумные мысли, куда смотреть?


Che> С уважением.


Мминимум достигается в положении, в котором длина каждой стороны прямоугольника ровно вдвое превышает длину пересечения этой стороны с исходной фигурой (либо касается некой грани исходной фигуры), ну просто по принципу "ищи положение, при котором микроперемещения не имеют смысла" (официально называется "лемма Ферма о локальном экстремуме"). Я бы искал этот минимум итеративно, чтоб не решать линейные уравнения.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[2]: Наилучшее приближение прямоугольником
От: watchmaker  
Дата: 29.09.15 00:54
Оценка: 2 (1)
Здравствуйте, T4r4sB, Вы писали:


Che>>как приблизить произвольный многоугольник прямоугольником


TB>(официально называется "лемма Ферма о локальном экстремуме"). Я бы искал этот минимум итеративно, чтоб не решать линейные уравнения.


Именно что о локальном экстремуме. Это для выпуклых многоугольников получаются быстрые алгоритмы (например). Для произвольных же многоугольников этих локальных минимумов — тьма.
Re[2]: Наилучшее приближение прямоугольником
От: Che  
Дата: 29.09.15 12:26
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Здравствуйте, Che, Вы писали:


Che>> Здравствуйте друзья, такой вопрос:

Che>>как приблизить произвольный многоугольник прямоугольником, так чтобы сумма площадей отсекаемых и прибавляемых кусков была минимальна?

Che>> В opencv реализован поиск прямоугольника минимальной площади, окружающего данный — это не то, что нужно.


Che>>Есть ли какой-то готовый алгоритм (и его реализация на С++, в идеале)? Или какие-то разумные мысли, куда смотреть?


Che>> С уважением.


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



Спасибо, действительно логично про половину каждой стороны. Понятно, что это дает ноебходимое условие локального экстремума. Я думаю, для моих целей этого вполне хватит. Хотелось бы, конечно, найти готовую программную реализацию чего-нибудь подобного, но вроде я и так придумал как более-менее разумно это реализовать.

И watchmaker спасибо за ссылку.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.