Форум: "Media";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];
ВнизГрафика Найти похожие ветки
← →
AlekseyK (2002-11-05 16:57) [0]Привет. Скажите пожалуйста, возможно ли реализовать следующую задачу:
имеется отсканированный лист, на котором ручками (разных цветов или оттенков) проведены линии. Требуется определить линия какого цвета проведена сверху.
На глаз всегда кажется, что линия темного оттенка находится поверх.
Спасибо.
← →
LongIsland (2002-11-06 15:29) [1]На мой взгляд можно попробовать следующий подход
1. Создется массив записей коэффициентов уравнений линии разного цвета. Что-то вроде
TRec = record
a: Double;
b: Double;
Color: TColor;
Flag: Integer;
end;
TLines = array of TRec;
2. Сканируется лист на предмет наличия разных цветов (их лучше задавать в каком-то диапазоне).
3. Определяется каждая линия и заполняется массив.
4. Ищется пиксель пересечения каждой линии с каждой (простейшая математика), если они вообще пересекаются и определяется его цвет.
5. Полю Flag некоторой (например, первой найденной в массиве линии) присваиваем любое целочисленное значение.
6. Для прочих линий, если они сверху (п.4), то Flag будет больше на единицу, чем у той, на которой она лежит и наоборот.
7. Теперь сортируем массив и определяем, что лежит сверху (максимальный Flag).
Здесь прежде всего то, что может быть примерно такая ситуация с линиями
| |
-|-----------
| |
| |
| |
| |
| |
| |
-----------|-
| |
Надеюсь понятно, что здесь нарисовано. Может случиться так, что НИ ОДНА линия не будет сверху. Это надо учесть.
Алгоритм все-равно очень сложный, но надеюсь, что я дал хоть примерное направление. Удачи!
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c