Публиченко Павел Андреевич / Pavel A. Publichenko
Наука и знание - лучшее средство от бедности и недоедания
Публиченко Павел Андреевич

Яндекс цитирования

Павиком на службе эксперимент OPERA

6. Модернизация программы libACQ

Итак, для работы с материалами OPERA был взят за основу пакет libACQ работающий в программной среде ROOT.

Работа с libACQ потребовала изучение ROOT, умения написания динамических библиотек под ROOT в среде Microsoft VC. Работая над программой, были пройдены следующие этапы:

  • написание блока захвата изображения, использование функций платы Matrox Odyssey;
  • написание блока управления микроконтроллером, т.е. адаптация старого кода на VC для интерпретатора ROOT;
  • объединение двух функциональных блоков в один, управляющий столом и захватывающий изображения;
  • передача захваченного изображения далее в алгоритм анализа изображений - выделения кластеров;
  • поиск микротреков;
  • сохранение данных на диск.

Программа управления столом существует в двух упрощенных версиях – только управление столом и только захват изображения. Полная версия выполняет полный цикл обработки одного поля зрения, а именно: захват 15 кадров по толщине эмульсионного слоя с шагом 3 мкм, выделение кластеров, восстановление микротреков (тестовая версия).

Перечислим классы, которые используются в программе

 

AcqStage1

Класс, управляющий контроллером NI7344, используемый для управления механикой европейской сканирующей установки.

Класс содержит 3 объекта AcqAxis для каждой из осей. Посредством этих объектов инициализируются оси и управляются, в самом классе AcqStage1 имеется функция ScanToZ0AndGotoXYZ() – основная функция, используемая при сканировании, которая управляет осями, не используя AcqAxis. Так же AcqStage1 содержит класс для управления светом AcqLight, который в нашей работе не потребовался. AcqStage1 использует функции, написанные производителем контроллера европейской сканирующей установки (начинаются они на «flex_»).

AcqOdyssey

Класс используется для управления платой захвата и обработки изображения Matrox Odyssey XPro.

С платой поставляются функции MIL (Matrox Imaging Library, названия их начинаются на «М»), большинство из которых могут либо выполняться на хосте (наличие платы при этом не обязательно), либо загружаться на плату и выполняются на ней. Кроме того, в плату зашиты функции ONL (Odyssey Native Library, названия их начинаются на «im»), которые вызываются путем кидания плате идентификатора нужной функции. Та часть функций, которая нужна для обработки изображения, в ONL и MIL одинакова. В AcqOdyssey всегда, кроме случаев, когда необходимо что-то отобразить на экране, используется ONL.

При инициализации платы загружается dcf-файл (в нем указываются параметры захвата изображения с камеры), выделяется память под буфер (для хранения изображений и других данных) и потоки (threads) (для передачи данных между хостом, камерой и разными частями платы). Буферы могут выделяться как на хосте, так и на самой плате.

Все функции управления платой можно разделить на служащие для:

  • работы с ресурсами платы (выделение памяти, выделения потоков, освобождения);
  • получения и помещения куда-либо изображения;
  • обработки изображения;
  • выведения чего-либо на экран;
  • синхронизации различных частей платы друг с другом и с хостом;
  • обработка ошибок.

GrabAndFillView() – основная функция, используемая для сканирования. С помощью функции ONL imDigGrabSequence() она захватывает  N изображений, обрабатывает их и загружает эти изображения и информацию о кластерах в массив объектов EdbView.

AcqTrackScanner

Содержит указатели на AcqStage1 и AcqOdyssey (при создании класса они ни на что не указывают). AcqTrackScanner содержит функции, которые непосредственно сканируют, вызывая функции из AcqStage1 и AcqOdyssey. В основной функции AcqTrackScanner ::ScanAndFillView() сначала вызывается AcqStage1::ScanToZ0AndGotoXYZ(), которая за несколько миллисекунд кидает кучу идентификаторов контролеру, и тот начинает ехать. Сразу после нее вызывается функция GrabAndFillView(), которая, пока контроллер едет, подхватывает и обрабатывает изображение. В результате у нас получается массив EdbView, с которым потом можно работать.

AcqTrackReconstructor

Класс содержит несколько функций, по-разному выполняющих одно и тоже: они получают на входе массив EdbView и находят в нем треки.

Перечислим все функции адоптированной программы сканирования libACQ для ПАВИКОМ-1. 

  • Управление режимами CMOS камера Mikrotron MC1310;
  • Вывод изображения на, сохранение изображения в файл в формате TIFF;
  • подача команд на перемещение столика в заданную точку по 3 осям, выбор скорости и ускорения;
  • автоматическое выделение кластеров в поле кадра с помощью встроенного алгоритма анализа изображения (см. рис.);
  • поиск микротреков (тестовая версия):
  • запись на диск файла со всеми обработанными данными в формате ROOT;

Предыдущая Следующая

В начало

© 2008—2012 «Публиченко Павел Андреевич» E-mail: О сайте