МО граберов ТВ каналов VS56/VS60 под ОС Linux.

Программное обеспечение граберов VS56 и VS60 размещено на копьютере sky в аппаратной БТА (к.210 sky.bta.sao.ru). Оно разработано на языках C и C++ с использованием библиотеки Qt для X11-интерфейсов. МО функционирует под управлением ОС Linux и доступно по сети через стандартные протоколы telnet, rshell, X11.

Краткое описание и инструкция по использованию.

Состав:

vs56 - серверная программа-драйвер управления ISA-картой VS56.
Язык разработки - C.
 Связана с интерфейсными программами-клиентами через блок разделяемой памяти. Получает через него команды на считывание своих 4-х ТВ-каналов. Полученные изображения предоставляются клиентам через это же поле общей памяти. В программе реализована как работа со специальной камерой с накоплением на ПЗС-чипе  (вариант VS56-Tandem) так и с обычными ТВ-подсмотрами  VS56/1, VS56/2) с возможностью накопления сложением в памяти компьютера.
 При старте программа читает файл vs56.conf из текущего справочника с общей и поканальной конфигурацией грабера. Для каждого ТВ-канала может быть определено два варианта инициализации VS56 (например для двух форматов кадра: 768х512 и 512х512). Кроме того для ускорения процесса считывания можно работать не с полным кадром а с фрагментом (фреймом).
 При накоплении сложением, из каждого кадра автоматически вычитается уровень фона, полученный статистической обработкой 1-го кадра. Это конечно замедляет считывание, но позволяет следить за накоплением.
 Возможно также запоминанее одной строки и последующее ее вычитание из всех строк считываемых кадров ("на ходу"), что позволяет бороться с последствиями несинхронного считывания дешёвых CCD-камер (вертикальной "полосатостью").
 Одновременно может быть запущен только один  драйвер VS56!  Поэтому в дальнейшем планируется стартовать его как штатный даемон при запуске системы.

VS56

vs60 - программа-драйвер управления PCI-картой VS60.
Язык разработки - C.
Предназначена для реализации простой и быстрой взаимозаменяемости VS60 и VS56. Практически полностью аналогична vs56 за исключением нескольких упрощений:

  • один формат кадра: 768x576
  • естественно нет варианта Tandem и задания экспозиций
  • нет обратной записи в память грабера
  • нет вычитания фона при сложении и драйвер не даёт индицирующей программе показывать промежуточные изображения
  • tvimage - интерфейсная программа-клиент под X11.
    Язык разработки - C++ с использованием библиотеки Qt.
    Цифровой параметр задает один из 4-х ТВ-каналов для работы с которым она запускается:

    tvimage [-cmap] N

    где N = 0,1,2,3 - номер канала
    необязательный параметр -cmap ставится если есть проблемы с 8-битным дисплеем и нужно запустить tvimage  с "приватной" цветовой таблицей.
    Управление через меню или клавиатуру позволяет передавать граберу команды считывания ТВ-каналов и менять режимы индикации полученного изображения. Одновременно может работать несколько интерфейсов tvimage. В том числе и для одного и того же канала (например для одновременного представления в разных видах, или на экраны разных компьютеров в сети), это естественно повышает нагрузку на базовый компьютер и сеть, ресурсами коих эти возможности и ограничиваются.


     
    Предполагаемое подключение ТВ-каналов к граберу:
    0 - подсмотр из СПФ, N1 или N2 (по заявке наблюдателя)
    1 - широкоугольный (100град) обзор неба с накоплением на камере
    2 - 70-ти сантиметровый гид БТА
    3 - камера панорамного обзора неба (на техблоке)
    


    Запуск на консоли (компьютера sky ):

    1. Войти под именем obs (пароль пока ******).
    2. Загрузить оболочку X11 (т.е. startx или openwin).
    3. Загрузить драйвер vs56/vs60 (если еще не запущен) и нужное количество окон ТВ-каналов используя:
    в оболочке openwin  -  строчки в стандартном меню
    в оболочке startx(fvwm)        - кнопки внизу экрана


    Удаленный запуск по сети под пользователем obs на основных наблюдательских Linux-машинах (tb,cpf,n2):

    1. Найти в основном стандартном меню оболочки openwin подменю:
    SKY:TVimage
    VS56 TV-system on SKY
    Show TV channel 0
    Show TV channel 1
    Show TV channel 2
    Show TV channel 3

    Try to start VS60-driver
    Try to start VS56-driver
    2. Загрузить драйвер vs60 или vs56(если еще не запущен). На экране должно появиться xterm-окно с протоколом его работы (или сообщением что он уже запущен).

    3. Загрузить нужное количество окон ТВ-каналов. На 8-битных дисплеях желательно это сделать до вызова "цвето-емких" программ (MIDAS, Netscape,XV,...).


    Удаленный запуск по сети c других UNIX-машин:

    0. Сейчас машина с грабером называется sky (sky.bta.sao.ru)

    1. Загрузить на своей машине оболочку X11 (т.е. startx или openwin) и окно терминала (например xterm).

    2. Дать команду xhost. Получается список машин с которых разрешено выдавать на экран вашей. Если в нем нет sky, включить ее командой

    xhost sky


    3. Войти на sky под именем obs:

    rlogin sky -l obs
    если требуется пароль - пока он ****** но может быть изменен. Для основных наблюдательских машин возможен переход пользователя obs на sky без пароля по команде:
    rsh sky
    список таких машин находится в файле .rhosts в домашнем справочнике пользователя obs на sky.

    4. Если драйвер vs60 или vs56 еще не запущен, загрузить его, например:

    vs56 &
    или с протоколом в отдельное окно:
    xterm -e bin/vs56 &
    5. Загрузить нужное количество окон ТВ-каналов командами:
    tvimage N &
    где N = 0,1,2,3 - номер канала.
    Если есть проблемы с 8-битной цветовой таблицей (например уже загружены MIDAS или Netscape или XV) можно запустить tvimage  с "приватной" цветовой таблицей:
    tvimage -cmap N &
    Приведенная последовательность действий может быть оформлена на машине наблюдателя ввиде командного файла, например:
    #!/bin/sh
    host=sky
    disp=`hostname`:0.0
    rsh $host "rm -f .Xauthority"
    xhost $host
    rsh $host "DISPLAY=$disp /usr/X11/bin/xterm -e bin/vs56" &
    sleep 2
    rsh $host "DISPLAY=$disp bin/tvimage 0" &
    rsh $host "DISPLAY=$disp bin/tvimage 1"
    
    и включена в стандартное меню. Что уже и сделано для пользователя obs на основных наблюдательских машинах (tb,cpf,n2).

    Пользователям X-эмуляторов под DOS/Windows предлагается самим выстроить порядок действий руководствуясь смыслом вышеизложенного и инструкцией к своему конкретному эмулятору.
     

    Работа с tvimage.

    tvimage0.gif

    В момент старта программа tvimage определяет тип загруженного драйвера (VS60 или VS56) и слегка меняет настройку меню. Поэтому в случае оперативного перехода с одного грабера на другой, все окна tvimage следует закрыть и запустить снова после загрузки драйвера.

    Все основное управление в программе реализовано через мышку и меню, часть функций задублирована через клавиатуру для быстрого вызова.

    File - меню операций с файлами:

     
    saveSave picture - меню записи картинок на диск
    (для формирования GIF и JPEG используются системные программы cjpeg и djpeg -gif):

     
    GrayScale JPEG - полутоновая картинка в файл *.jpg
    GrayScale GIF - полутоновая картинка в файл *.gif
    Color JPEG - цветная картинка в файл *.jpg
    Color GIF - цветная картинка в файл *.gif
    после выбора варианта записи на экране появляется стандартное окно для выбора справочника и файла

     
    saveSave as FITS   <Ctrl+F>
    запись изображения в FITS-файл *.mt,
    на экране появляется стандартное окно для выбора справочника и файла, поскольку справочники пользователей основных наблюдательских машин tb,cpf,n2 сейчас обычно смонтированы в справочнике /comp появляется возможность записи изображений прямо в основной ахив БТА:
    /comp/tb/data/archives.bta/NICE/b9126
    или в сравочник где идет регистрация
    например: /comp/cpf/obs/CCD/9126/
    и последующей обработки их в MIDAS-е на машине наблюдателя

     
    loadLoad FITS   <Ctrl+L>
    считывание изображения из FITS-файла *.mt
    или gzip-компрессированного *.mt.gz,
    на экране появляется стандартное окно для выбора справочника и файла

     
    exitExit  <Ctrl+Q> - выход из программы

     
    VS56(VS60) action  - меню операций с VS56(VS60):

     
    get1 Get single image   <Ctrl+1>
    считать 1 изображение или 1 фрейм

     
    getm Get ten images   <Ctrl+0>
    выполнить 10 считываний

     
    getm Get infinitely   <Ctrl+G>
    вкл. непрерывное считывание с макс.скоростью
    пользовать осторожно! может вызвать перегрузку компьютера и сети!
    если возникли трудности с остановом мышкой через меню - использовать <Ctrl+S> ,
    можно использовать в режиме полного кадра только на канале "Tandem" при достаточно большом времени экспозиции, для остальных (обычных) ТВ-каналов рекомендуется устанавливать фрейм небольшого размера

     
    stop Stop inf.mode   <Ctrl+S>
    остановить непрерывное чтение или циклические операции или экспозицию в канале "Tandem"

     
    add1 Add one   <Ctrl+A>
    считать 1 кадр или фрейм и сложить с текущим изображением

     
    addm Add ten   <Ctrl+T>
    выполнить 10 считываний со сложением

     
    addm Add inf-ly   <Ctrl+C>
    вкл. непрерывное сложение с макс.скоростью пользовать осторожно! - может вызвать перегрузку!

     
    cycle Start cycling   <Ctrl+N>
    запуск циклических операций (накопление нескольких кадров с возможной последующей обработкой, настройка через вызов Opt.Window в меню Options)
     
    erase Erase   <Ctrl+R>
    обнулить изображение

     
    write Write   <Ctrl+W>
    записать мл.байт изображения обратно в память грабера (для визуализации на дополнительном мониторе)

     
    init Init   <Ctrl+I>
    повторить начальную инициализацию VS56 при возникновении "нештатных" ситуаций

     
    Mouse modes  -  меню изменения режимов использования мышки при изменении режима меняется тип курсора на экране:
    Modify CUTs   <Shift+M>
    CUT-ы (пределы индикации по интенсивности) имеют тотже смысл что и в MIDAS-e;

    движением курсора с 1-й кнопкой меняется нижний CUT, 3-й - верхний, 2-й - оба
     
    Set Frame   <Shift+S>
    установка фрагмента изображения, нажать кнопку влевом вехнем углу фрагмента и вести курсор вправо вниз, выбор небольшого фрагмента позволяет сущесвенно ускорить как процесс считывания из грабера так и передачу изображения по сетям

     
    Set Line   <Shift+G>
    формирование линии при движении мышкой с нажатой кнопкой, после отпускания рисуется разрез вдоль линии

     
    Set Point   <Shift+P>
    при нажатии на кнопку запомнить координаты точки под курсором, установить на нее указатель (крест) и показать значение в этой точке;

     
    No Mouse   <Shift+N>
    отключить режимы мыши

     
    Options  - меню установки параметров:

     
    Calculate CUTs   <Shift+C>
    определение минимума, максимума, медианы, среднего и дисперсии в изображении или фрейме и установка пределов индикации по интенсивности (CUT-ов) "на фон" т.е. как ~+-2дисперсии от среднего, после чего их можно подправить мышкой

     
    Change Format   <Shift+F>
    переключение между вариантами инициализации VS56 для данного канала (768х512 <-> 512х512)

     
    Reset Frame   <Shift+R>
    отмена режима работы с фрагментом изображения установленным мышкой (т.е. снова полный кадр)

     
    Set Exposure   <Shift+X>
    установка экпозиции накопления на чипе для варианта Tandem (сейчас 1-й канал)
    tvimage2.gif

     
    Set El.Ref.Lev.   <Shift+E>
    установка электронного уровня на котором будет работать АЦП VS56 для данного канала: 0-63, исходный - 60
    tvimage1.gif

     
    Load LUT   <Shift+L>
    загрузка файла таблицы раскраски *.lut; все взяты из MIDAS-а;

    при старте загружается полутоновая ramp.lut
    (Bug: в данном варианте программы эта функция плохо работает на 8-битных дисплеях, т.к. новая таблица не подменяет текущую, а добавляется к ней)
     
    Load ITT   <Shift+I>
    загрузка таблицы преобр-я интенсивности *.itt;

    все взяты из MIDAS-а;
    при старте без преобразования - ramp.itt
     
    Display LUT   <Shift+D>
    вкл./выкл. внизу окна полоску с равномерно меняющейся интенсивностью которая показывает работу LUT+ITT

     
    Show Opt.Window   <Shift+O>
    вывод окна просмотра/изменения параметров программы ранее задаваемых мышкой
     
    CCD-spec.  -  меню специальных функций для борьбы с последствиями несинхронной оцифровки грабером ПЗС-камер:
    Calc BgdRow   <Shift+B>
    рассчитать, запомнить и показать строку среднего фона путем осреднения всех строк кадра, это естественно лучше сделать после накопления нескольких темновых кадров

     
    Vid ->ccd (Use &BgdRaw online)
    CCD ->vid (Don't use &BgdRow)
    <Shift+V>
    вкл/выкл в драйвере режима считывания с грабера с вычитанием средней темновой строки "на ходу"

     
    Image = Image o BgdRow
    меню операций (- : + х) с изображением и строкой среднего фона (хотя вроде бы реально нужно тольно вычитание :)

     
    Reduction  -  меню простейшей редукции изображений:

     
    Set BGD-file name
    задание имени FITS-файла фона *.mt (или gzip-компрессированного *.mt.gz)

     
    Set FLAT-file name
    задание имени FITS-файла плоского поля *.mt (или gzip-компрессированного *.mt.gz)

     
    Substruct BGD  <Ctrl+B>
    считывание файла фона и вычитание его из текущего изображения с учетом количества накопленных кадров в обоих (фон приводится к изображению)

     
    Divide by FLAT   <Ctrl+D>
    считывание файла плоского поля и деление на него текущего изображения с сохранением среднего уровня оного

     
    (Image-BGD)/FLAT   <Ctrl+M>
    выполнение обеих операций сразу

     
    Help - меню просмотра описания

     
    savePain text
    вызов внутреннего окна для быстрого просмотра текста описания из файла Doc/VS56.txt

     
    saveHTML manual
    вызов программы Netscape для просмотра настоящего описания из файла Doc/vs56.html
    Следует учитывать что броузер будет запускаться на относительно старой и маломощной машине sky и конкурировать по ресурсам с МО граберов. Поэтому предпочтительнее читать данное описание на более мощных компьютерах либо с сервера аппаратной БТА:
    http://tb.bta.sao.ru/vs56/
    либо через центральный сайт САО:
    http://www.sao.ru/~vsher/manuals/vs56/

     
    Окно просмотра/изменения параметров
    Это дополнительное окно выводится выбором пункта Show Opt.Window в меню Options, либо клавишей <Shift+O>
    Оно служит по большей части (но не только) для просмотра/изменения параметров задаваемых мышкой через меню Mouse modes. Содержит пять переключаемых панелей с полями текстового ввода. После изменения значений следует нажать кнопку Apply или OK.

    Панель Cycle

    Параметры циклической операции

    поле Add N: - число складываемых кадров (фреймов)
    поле Delay: - задержка в секундах для просмотра результата
    поле N cycles: - число циклов, "-1" - означает бесконечно
    кнопки Subtr.BGD и Div.FLAT подключают запуск редукции изображений после накопления определённой через меню Reduction
    Панель CUT's
    Пределы индикации по интенсивности

    поле Bottom: - нижний предел (уровень черного)
    поле Top: - верхний предел (уровень белого)
    Панель Frame
    Положение и размер фрагмента изображения

    поля FrameX: и FrameY: - положение левого верхнего угла фрагмента
    поля Width: и Height: - ширина и высота фрагмента
    Панель Point
    Положение указателя (креста)

    поля X(column): и Y(line): - колонка и строка куда установлен указетель
    поле Intensity: - значение в этой точке изображения
    Панель VS56
    Специфические параметры VS56(Tandem)

    поле Exposure: - экпозиция накопления на чипе для варианта Tandem
    поле El.ref.level: - электронный уровень АЦП VS56

     
    27.01.99
    Отдел Информатики.
    Шергин В.