Мое личное видение решение задачи, не претендующее на полноту или однозначность.
1. Вычисляем центр прямоугольника по среднему координат.
2. Определяем области наиболее удаленные от центра, разбивая их на четыре части. Это можно сделать следующим образом:
— вычисляем среднее удаление от центра Ra;
— сортируем все точки по расстоянию от центра;
— отбрасываем точки, расстояние от центра до которых меньше Ra, тем самым ограничиваем выборку только точками, близкими к краям прямоугольника;
3. Полученные четыре области пересчитываем в четыре средних точки, которые будут первым приближением краев прямоугольника C[4].
Если высокая точность не нужна, на этом можно закончить.
4. Статистически пересчитываем линии краев прямоугольников, учитывая распределение точек относительно сторон прямоугольника по C[4].
5. Пересчитываем C[4] по результатам п.4.
Пп. 4-5 только для повышения точности, особенно если известно статистическое распределение точек.
A>Мы получаем множество точек на плоскости, которое приблизительно напоминает очертаниями прямоугольник. A>но мне кажется, что лучше именно вписывать его,
То есть прямоугольник у тебя незакрашенный, и точки из множества (разумеется кроме выбросов) задают его границу, а не заполняют более-менее плотно изнутри? Тогда используй преобразование Хафа.
Если же точек достаточно много, а выбросы единичны, то иногда вообще можно обойтись вычислением центра тяжести, эксцентриситета и угла поворота на основе статистических моментов. А уж потом, полученного приближение уточнять, если это вдруг оказывается нужным.
Здравствуйте, watchmaker, Вы писали:
W>Здравствуйте, alekos, Вы писали:
A>>Мы получаем множество точек на плоскости, которое приблизительно напоминает очертаниями прямоугольник. A>>но мне кажется, что лучше именно вписывать его, W>То есть прямоугольник у тебя незакрашенный, и точки из множества (разумеется кроме выбросов) задают его границу, а не заполняют более-менее плотно изнутри? Тогда используй преобразование Хафа. W>Если же точек достаточно много, а выбросы единичны, то иногда вообще можно обойтись вычислением центра тяжести, эксцентриситета и угла поворота на основе статистических моментов. А уж потом, полученного приближение уточнять, если это вдруг оказывается нужным.
Прямоугольник внутри полностью заполнен точками.
Наверное будет проще описать задачу немного по другому. По конвейеру идет коробка, которая может быть повернута как угодно. Множество датчиков, которые она пересекает, формирует массив тех самых точек. Проблема в том, что у коробки могут торчать различные куски пленки и пр. которые нужно отсечь и образмерить коробку.
A>Прямоугольник внутри полностью заполнен точками. A>Наверное будет проще описать задачу немного по другому. По конвейеру идет коробка, которая может быть повернута как угодно. Множество датчиков, которые она пересекает, формирует массив тех самых точек. Проблема в том, что у коробки могут торчать различные куски пленки и пр. которые нужно отсечь и образмерить коробку.
Каков приблизительно объем массива?
Можно считать моменты и строить эллипс на основе этих моментов. Таким образом получите ориентацию прямоугольника. Зная ориентацию можно легко найти границы
Здравствуйте, vit_as, Вы писали:
_>Здравствуйте, alekos, Вы писали:
A>>Прямоугольник внутри полностью заполнен точками. A>>Наверное будет проще описать задачу немного по другому. По конвейеру идет коробка, которая может быть повернута как угодно. Множество датчиков, которые она пересекает, формирует массив тех самых точек. Проблема в том, что у коробки могут торчать различные куски пленки и пр. которые нужно отсечь и образмерить коробку.
_>Каков приблизительно объем массива?
_>Можно считать моменты и строить эллипс на основе этих моментов. Таким образом получите ориентацию прямоугольника. Зная ориентацию можно легко найти границы
Объем приблизительно 1200х800 точек.
Прямоугольник мы впишем. А вот как в этом случае отсечь лишние аппендиксы?
A>Объем приблизительно 1200х800 точек.
Это бинарное или полутоновое изображение? Информация в точке только вида 0 и 1 или есть данные о яркости?
Можно ли увидеть пример такого изображения? A>Прямоугольник мы впишем. А вот как в этом случае отсечь лишние аппендиксы?
Фильтрация изображения, морфологические операции типа открытия, закрытия могут откинуть часть шума, чем упростят задачу