Собственно необходимо преобразовать заданный объект в специализированный формат. Каким способом можно реализовать Этап 3? См. на рисунке: http://www.worms3d-portal.com/images/3dobjToPox.swf А именно найти угол поворота и размеры (желтого) прямоугольника описывающего фигуру, чтобы отдаленность всех точек контура фигуры была наиболее близким к контуру описывающего прямоугольника (желтого цвета на рисунке). Все это нужно для выполнения дальнейших этапов преобразования. С чего начать, и где рыть информацию? P.S. для начала надо найти способ реализации хотя бы для 2D, но все это нужно для работы с 3D объектом. Но думаю перейти будет просто, т.к. можно сплющить 3d объект матрицей и уже работать с 2d координатами. Правда понятия не имею как реализовать этап 3 в 3D...
AlexBond для начала - определи, что означает - вариантов может быть несколько, например среднеквадратичное отклонение а так - классическая задача линейной алгебры - ортогональное проектирование.
Задача стандартная. Как уже сказано - метод наименьших квадратов, т.е. аппроксимация к прямой y=ax+b. Эта прямая будет проходить параллельно длинным сторонам прямоугольника и через середины коротких. Угол соответственно phi=arctg(a)
Спасибо, действительно метод наименьших квадратов очень подходит. Для 2D решили, а как быть с 3D? Надо найти прямую(проходящую через центр уже параллелепипеда, описывающего объект) в пространстве. Метод наименьших квадратов не подойдет....
AlexBond Через собственные числа/собственные вектора. Составляешь матрицу корреляции находишь собственные вектора к матрице. Записав вектора ввиде матрице будет тебе поворотная матрица. Остается повернуть и нати максимумы и минимумы. А если лень искать максимумы и минимумы то возьми собственные ичсла. Это диспермия. СКО будет корень из десперсии и умножем на 1,5 получишь контур с погрешностью 97%. Используя поиск максимув и минимув точно найдешь контур. В opencv должна быть функция так как операция с собственными векторами распростроненная.
S_Alex Спасибо! Opencv это что-то, буду разбираться. Pavia Попробую и этот способ через собственные вектора, пока еще не сильно понял его, но буду рыть в этом направлении. Всем Спасибо за быстрые ответы! *****добавлено позже******* Спасибо еще раз за подсказку в напровлении пути, а именно за корреляцию. Она работает с удивительной точностью, правда я не составлял никакие матрицы из собственных векторов, я просто искал R >> 0 для всех вариантов от 0 до 90°. Для пространства я делал поиск для оси Z затем для оси Y затем для оси X, с соблюдением правильного поворота. В итоге я смог реализовать свой алгоритм по апокселяции 3d модели: 3D Model >> Poxel