ПРОГРАММA Lineaments&Coils РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ В качестве программной среды для разработки программы, предназначенной для обнаружения линеаментов (линейных элементов) и кольцевых структур на аэрокосмических изображениях, выбрана система объектно-ориентированного программирования Visual C++ фирмы Microsoft с библиотекой классов MFC. При разработке программы используется механизм многодокументного интерфейса MDI, который позволяет работать одновременно с несколькими изображениями (документами), каждое из которых связано со своим окном. Сразу после запуска программы главное окно содержит изображения панели инструментов и строки состояния. Видимостью этих элементов управления можно управлять - включать/выключать. Управление программой осуществляется с помощью кнопок “всплывающего” меню. Некоторые из этих кнопок представлены пиктограммами на панели инструментов. В представленном ниже описании для таких кнопок наряду с символьным именем отображается соответствующая пиктограмма. Кроме того, если строка состояния видима, то в правой её части для активного документа (изображения) отображаются текущий масштаб изображения, координаты позиции, указываемой курсором мыши, и значение пиксела для одноканального изображения. При перемещении курсора по кнопкам раскрытого меню или кнопкам панели инструментов в левой части строки состояния отображается краткое описание функции, связанной с этой кнопкой. При выполнении длительных операций с изображениями в строке состояния строится индикатор прогресса. Меню по умолчанию главного окна состоит из кнопок File, View, Help. Каждая из этих кнопок является, в свою очередь, раскрываемым меню с кнопками: File: New... - создание нового пустого дочернего окна; Open... - чтение существующего файла; Количество каналов (размерность вектора измерений, количество спектральных диапазонов) в файлах данных не ограничивается. Входная информация содержится в файлах следующих типов: 1) Файлы в формате ВМР, содержащие данные (изображения) с размерностью векторов измерений от 1 до 4. 2) Файлы в RAW-формате, содержащие байтовые данные (8 бит/пиксел) с произвольной размерностью векторов измерений. Все файлы, расширение имени которых не совпадает с ВМР, считаются файлами в RAW-формате. В этом формате данные сохраняются построчно, в строке последовательно представлены значения (байты) элементов векторов измерений: J байт первого вектора измерений, затем J байт второго вектора и т.д. для векторов измерений с размерностью J. 3) Файлы в RAW-формате, содержащие одноканальные данные с разрядностью пикселов большей 8 (от 9 до 16 бит). При чтении файлов в RAW-формате строится диалоговое окно, элементы которого имеют следующий смысл: Row Size – длина строки (количество векторов измерений в строке), Num_Channs – размерность вектора измерений (количество каналов), Vis_Channs – количество каналов для визуализации. Vis_Channs принимает значения от 1 до 4-х и имеет смысл при Num_Channs>1. Группа раскрывающихся списков Visual Channels предназначена для назначения физическим каналам системы визуализации каналов данных для просмотра. По умолчанию номера физических каналов и каналов данных совпадают. Механизм назначения каналов работает только при Num_Channs>4. В противном случае любая перестановка каналов достигается с помощью команды Image/Transpos. При Num_Channs>4 к имени обрабатываемого файла в фигурных скобках приписывается строка, содержащая номера отображаемых каналов данных (в связи с этим на имена файлов налагается ограничение: они не должны содержать символ ‘{‘). С помощью клавиш ‘‘ (“стрелка влево”) и ‘’ (“стрелка вправо”) обеспечивается перемещение окна просмотра по каналам векторов измерений. Флаг Bits_G8 устанавливается при чтении файлов данных типа 3. При установке этого флага автоматически выбирается длина строки 3712 пикселов, разрешается элемент Bits_P/Pixel (количество бит на пиксел), значение которого меняется в интервале 9 – 16 и по умолчанию равно 10. Установленный флаг Eqv_Hist означает преобразование данных файла, основанное на эквализации гистограммы. Сброс этого флага отменяет эквализацию гистограммы. При отображении данных файла используется следующее преобразование этих данных в байтовые значения: visual_pix = (inp_pix*255)/max_pix, где max_pix – максимальное значение среди входных пикселов, inp_pix – значение входного пиксела, visual_pix – результат преобразования. Recent files - список файлов, которые использовались последними; Exit - завершение программы. View: ToolBar - управление видимостью панели инструментов, StatusBar - управление видимостью линейки состояния, Help: About... - сведения о программе. При нажатии на кнопку меню File/Open... либо выборе некоторого файла из списка Recent files внутри главного окна создается дочернее окно. При создании дочернего окна меню по умолчанию главного окна заменяется на меню дочернего окна, состоящее из кнопок File, Edit, Image, View, Window, Help. Так же, как и в меню главного окна, каждая из этих кнопок при нажатии на нее раскрывается в соответствующее меню. Меню File содержит те же кнопки, что и в меню главного окна, дополненные кнопками Close - закрыть файл, CloseAll - закрыть все открытые файлы, Save - сохранить файл, Save as - сохранить файл под другим именем, Save Lineam… – сохранить данные о найденных линеаментах; кнопка активна, если текущее окно содержит изображение найденных линеаментов; Save Coils – сохранить данные о найденных кольцевых структурах; кнопка активна, если текущее окно содержит изображение найденных кольцевых структур. Меню Edit содержит стандартный набор кнопок для команд редактирования: Undo - отмена последней команды редактирования, Cut - вырезать выделенную прямоугольную часть изображения, Copy - скопировать все/выделенную часть изображение в буфер обмена, Paste - вставить изображение из буфера обмена. Меню Image содержит команды, управляющие выбором типов требуемых объектов. Меню содержит следующие кнопки: Coil... - обнаружение на изображении контуров, близких к круговым; при выборе данного элемента меню строится модальный диалог для задания параметров работы обнаружителя контуров: C_split - коэффициент увеличения радиуса при переходе к следующей окружности, C_step - коэффициент смещения центра окружности при анализе изображения (dx = dy = R*C_step, R радиус текущей окружности), Rmin - минимальный радиус окружности, Rmax - максимальный радиус окружности, Beta допустимый уровень вероятности наличия ложных обнаружений контуров. Кроме того, элемент диалога Delta задает расстояние от предполагаемого положения окружности для измерения значений пикселов. Элемент Clean определяет фон для построения обнаруженных окружностей: если Clean выбран, то окружности строятся на чистом поле, иначе они строятся на исходном изображении. Элемент Opr определяет тип операции при анализе значений пикселов для изображений в формате True Color: если Opr выбран, то при анализе пикселов выполняется проверка для суммы R+G+B, иначе выполняется проверка для каждого из значений R, G, B и производится объединение результатов проверки по операции ИЛИ. Lineam... - обнаружение на изображении протяженных объектов (линеаментов); при выборе данного элемента меню строится модальный диалог для задания параметров работы обнаружителя линеаментов: C_split - коэффициент увеличения длины при переходе к следующему линеаменту, C_step коэффициент смещения начала линеамента при анализе изображения (dx = dy = L*C_step, L - длина текущего линеамента), Lmin - минимальная длина линеамента, Lmax - максимальная длина линеамента, Beta - допустимый уровень вероятности наличия ложных обнаружений объектов. Кроме того, элемент диалога Delta задает расстояние от предполагаемого положения линеамента для измерения значений пикселов. Элемент Clean определяет фон для построения обнаруженных линеаментов: если Clean выбран, то линеаменты строятся на чистом поле, иначе они строятся на исходном изображении. Элемент Opr определяет тип операции при анализе значений пикселов для изображений в формате True Color: если Opr выбран, то при анализе пикселов выполняется проверка для суммы R+G+B, иначе выполняется проверка для каждого из значений R, G, B и производится объединение результатов проверки по операции ИЛИ. Флаг Contour устанавливается при выделении на изображении произвольных контуров, интерполируемых линеаментами. В этом случае имеет смысл задание порогового значения Threshold, которое используется при анализе разностей значений пикселов. L_Distrib - построение гистограммы распределения линеаментов изображения по направлениям; внутри полуокружности отображается «роза» линеаментов; при перемещении курсора мыши внутри этой полуокружности строится резиновая нить, соединяющая центр полуокружности с курсором мыши и отображаются значения угла (направления) линеаментов и их количество для этого угла; Меню View содержит те же кнопки, что и меню главного окна, дополненные кнопками I_scale - увеличить масштаб изображения, D_scale - уменьшить масштаб изображения, ScaleOne - установить масштаб изображения 1:1. Масштаб изображения может меняться от 1:16 до 4:1. При этом можно задать позицию на изображении, которая будет оставаться неподвижной при изменении масштаба. Для этого необходимо переместить курсор мыши в нужную позицию и нажать правую кнопку мыши. Заметим, что позиция курсора мыши на изображении отображается с учетом масштаба, т.е. в “истинных” координатах. Меню Window содержит стандартный набор команд по управлению взаимным расположением дочерних окон в области клиента главного окна: New... - создание нового окна с видом текущего (активного) документа, Cascade - каскадное расположение окон, Tile Horiz - расположить окна горизонтально (одно под другим), Tile Vertic - расположить окна вертикально. Содержимое меню Help остается неизменным.