Входные данные: это набор объектов, природа появления которых - есть суть процесса выделения контура конкретного тела на изображении. На промежуточном шаге мы имеем прямоугольник, который описывает этот контур - здесь как-раз рассчитываются величины, которые являются параметрами объектов, подлежащих кластеризации, а именно:
- h, высота прямоугольника;
- (x,y), центр масс (коррдинаты);
- σ, среднеквадратичное отклонение, как мера, показывающая "как далеко" отдельно взятая точка может находится от центра масс, находясь при этом в пределах текущего контура.
Что сделано: разбил точки на кластеры следующим образом: берем первую точку p(i), запоминаем соответствующее ей значение σ(i), смотрим следующую точку p(i+1) - если выполянется условие abs( p(i) - p(i+1) ) <= σ(i) - то считаем, что эти точки можем объеденить в один кластер, иначе - делаем вывод, что появилась точка из другого кластера и т.д.
Что сделано, но работает не так, как хотелось бы: при повторной обработке точек, выяснилось, что есть точки, которые не принадлежат ни одному из кластеров. Тут следует уточнить, как я задавал параметры кластеру - я считал среднее значение соответствующих параметров для всех точек, которые должны были войти в кластер, т.е.:
double h_mean = 0.0f;
for( std::size_t i = 0; i < _cluster.size(); ++i )
h_mean += _cluster[i].height();
h_mean /= _cluster.size();
Мне кажется, я делаю неправильно/не совсем верно - подскажите, пожалуйста, как сделать правильно/усовершенствовать этот алгоритм.
(В тегах C++ - потому как пишу на плюсах, прошу не ругаться)
Виртуальный выделенный сервер (VDS) становится отличным выбором
Нужен пример создания dll на языке C++, которая бы регистриролась бы с помощью regsvr32, и её можно было бы подключить к проекту на VB5
задача: удалить дубли (строки) из текстового файла (1 - 4GB), OS: Windows 7 x64, ОЗУ: 8GB, Perl (v524