Основная цель векторизации графиков - получить
на выходе данные, в которых координаты каждой точки графика
соответствуют своему значению с учетом шкалы. В связи с этим
возникают
три задачи:
Оцифровать график.
Преобразовать график так, чтобы координаты каждой его
точки соответствовали своему значению с учетом шкалы.
Экспортировать полученные координаты точек в
текстовый файл.
Для продолжения работы необходимо выровнять растр так, чтобы
шкала значений была параллельна оси растра, что можно сделать
с помошью функции Выравнивание. При выравнивании следует ориентироваться
на черные вертикальные линии, которые должны быть параллельны
краю проекта.
Если исходный растр серошкальный, то необходимо
перейти к цветовому режиму Моно, для возможности использования
полуавтоматического режима трассировки. Как это сделать
с минимальными потерями качества? Для начала усилим контраст
с помощью функции "Улучшение
контраста" таким образом, чтобы все черные линии были четко
прорисованы, но оставалось как можно меньше «мусора» на белом
фоне. При этом желательно добиться толщины черных линий в 1-3
пиксела. Теперь растр можно смело преобразовывать в черно-белый
с помощью функции "Моно", а затем и проинвертировать.
Плохое качество растров приводит к большому
количеству "слипшихся пиков", которые сильно затрудняют
правильное прохождение трассироващика
по линиии графика. Эту проблему можно частично решить, выполнив
команду "Фильтрация растра". В открывшемся диалоге
необходимо выбрать стратегию "Peak" и запустить
фильтрацию кнопкой "Начать". Однако остается возможность
поправить растр вручную с помощью инструмента "Кисть".
Работа функции Фильтрация
Растра (стратегия "Peak").
Добавленные пикселы
Удаленные пикселы
Полученный
после преобразований растр сохраним как graph_mono.tif. Если
ваш растр оказался цветным, то технологию его подготовки к
векторизации можно прочитать в статье Векторизация
цветных материалов.
Шаг 2.
Создание проекта и выполнение оцифровки.
Для удобства дальнейшей работы с
проектом рекомендуется поместить каждый график на отдельный слой.
Для добавления векторных слоев используют команду "Добавить векторный
слой" в менеджере слоев проекта.
Далее в полуавтоматическом режиме отвекторизовать
по растру каждый график на свой слой.
Для оптимизации формы линий лучше использовать стратегию "Извилистые
кривые"
Последняя
из трех поставленных задач - перенос координат точек графиков
в текстовый файл. Причем
основная трудность заключается в том, что координаты каждой
точки графика должны соответствовать своему истиному значению
с учетом шкалы.
Для получения на выходе текстового
файла проще всего использовать экспорт в формат CSV. Графики
разнесены по слоям, поэтому для каждого графика будет сгенерирован
свой файл. Преобразование координат
можно выполнить двумя способами:
с использованием внешнего файла трансформации;
с использованием специального слоя контрольных точек.
Экспорт с использованием внешнего файла трансформации.
В качестве примера проведем преобразование
для двух графиков под шкалой (0;80). Преобразование координат,
используемое в программе Easy Trace, требует указания
трех точек, не лежащих на одной прямой, или более.
Первым делом выясним
проектные координаты точек с пометками 0 и 80. Это легко сделать,
наведя курсор на искомую точку и записав координаты, отображаемые
в левом нижнем углу экрана. В нашем примере, который можно
загрузить с сайта, координаты
точки 0 -
(45;23), точки 80 - (60;23).
Теперь мы готовы к созданию CPT-файла (внешнего файла опорных
точек с координатами до и после преобразования). Создадим файл
Трансформация.CPT и откроем его при помощи текстового редактора
Блокнот(Notepad). В него нужно записать следущие данные:
45 23 0 0
60 23 80 0
45 28 0 5
Что означает:
точка (45;23) преобразуется в точку (0;0);
(60;23) - в (80;0);
(45;23+5) - в (0;5).
Число 5 взято произвольно, это может быть любое число. Главное,
чтобы полученная координата по оси Y не выходила за
рамки проекта. Таким образом, мы задаем сдвиг системы координат
и растяжение по оси Х.
Если по оси Y шкала тоже известна и единицы шкалы не совпадают
с миллиметрами (например, 1 мм равен 6 единицам шкалы), то точку
(45;23+5) преобразуем в точку (0;5*6), то есть получим:
45 23 0 0
60 23 80 0
45 28 0 30
Осуществляем экспорт в CSV-формат. На странице Мастера экспорта
Трансформация необходимо указать, что будут использоваться контрольные
точки из внешнего файла и выбрать нужный файл.
Экспорт с использованием слоя контрольных
точек.
1. Добавим дополнительный слой Control
point. Для этого слоя создадим БД точек с именем Control point.
Вставим в базу данных поля типа Float или Numeric с названиями
_X_CPT_ и _Y_CPT_. В эти поля будут заноситься значения координат
точки в конечной системе.
2. На созданном слое поставим точки в отметках
0 и 80. Присвоим точкам соответствующие атрибуты: т.0 (_X_CPT_
- 0; _Y_CPT_ - 0 ) и т.80 (_X_CPT_ - 80; _Y_CPT_ - 0 ). Поставим
третью точку произвольно, укажем для нее координаты (X0;Y0+5)
в поле координат ( где X0;Y0 – координаты т.0). Цифра 5 взята
произвольно, это может быть любая цифра, соизмеримая с длиной
растра (по оси Y) в координатах проекта.
Атрибуты третьей точки:
если шкала по оси Y неизвестна, то принимаем, что единицы
шкалы совпадают с миллиметрами, тогда (_X_CPT_ - 0; _Y_CPT_
- 5 )
если шкала по оси Y известна и единицы шкалы не совпадают
с миллиметрами (например, 1 мм равен 6 единицам шкалы), то
(_X_CPT_ - 0; _Y_CPT_ - 6*5 )
3. Осуществляем экспорт в CSV-формат. На странице Мастера экспорта
Трансформация необходимо указать, что будут использоваться контрольные
точки со слоя контрольных точек и выбрать нужный слой.
Замечание.
Мы рассмотрели пример с линейной шкалой, но что делать, если шкала нелинейная?
Пример справа.
В данном случае можно привести эту шкалу к логарифмической.
То есть каждой отметке шкалы будут соответствовать десятичные
логарифмы правильных значений. В результирующих CSV-файлах
тоже получим десятичные логарифмы истиных значений для каждой
точки графика. Далее полученные значения можно пересчитать
как X = .
Итак, чтобы перейти к логарифмам, делаем все операции, описанные
выше для линейной шкалы, НО:
координаты отметки 1,0 – (X1;Y1) преобразуем в (0,0) – начало шкалы,
а координаты отметки 1000 – (X1000;Y1000) преобразуем в (3,0),
так как
= 1,
= 1000. При этом по оси Y зависимость остается линейной, то
есть третью точку получаем так:
(X1;Y1+5) преобразуем в (0;5) – считаем,
что отсчет Y начинается в точке 0, а единицы шкалы совпадают
с миллиметрами, так как
шкала по оси Y неизвестна.
ВНИМАНИЕ! Если в проекте используется несколько разных шкал,
то для каждой создается свой слой (или файл) контрольных точек.
Экспорт графиков, относящихся к различным шкалам, осуществляется
отдельно с разной трансформацией.