Главная Рефераты по рекламе Рефераты по физике Рефераты по философии Рефераты по финансам Рефераты по химии Рефераты по хозяйственному праву Рефераты по цифровым устройствам Рефераты по экологическому праву Рефераты по экономико-математическому моделированию Рефераты по экономической географии Рефераты по экономической теории Рефераты по этике Рефераты по юриспруденции Рефераты по языковедению Рефераты по юридическим наукам Рефераты по истории Рефераты по компьютерным наукам Рефераты по медицинским наукам Рефераты по финансовым наукам Рефераты по управленческим наукам Психология и педагогика Промышленность производство Биология и химия Языкознание филология Издательское дело и полиграфия Рефераты по краеведению и этнографии Рефераты по религии и мифологии Рефераты по медицине Рефераты по сексологии Рефераты по информатике программированию Краткое содержание произведений |
Реферат: Передача информации из ультразвуковой медицинской диагностической установки ALOCA SSD650Реферат: Передача информации из ультразвуковой медицинской диагностической установки ALOCA SSD650Complex Diagnostic Systems Ltd ООО «Комплексные диагностические системы» Независимая сервисно - диагностическая консоль (НСДК) для компьютерных томографов, ультразвуковых установок и рентгеновских аппаратов CTsoft Справочник пользователя Аннотация. Данный документ состоит из введения и трех глав. Во введении даются начальные сведения о системе; в главе 1 описывается работа с изображениями: обработка, печать, архивирование, работа с текстом, создание трехмерных объектов; в главе 2 - работа с трехмерными объектами; в главе 3 - работа с базой данных. Изучать документ рекомендуется параллельно с работой на компьютере. Предполагается знание пользователем основ работы с персональным компьютером в операционной среде MS-DOS, навык работы с Нортон-командером. Введение. Пользовательский интерфейс системы аналогичен интерфейсу операционной системы Windows, т.е. основан на работе с окнами. Окно - это область экрана, ограниченная рамкой. Полоса вверху рамки содержит название окна или имя загруженного в него объекта. Если окно активно - эта полоса выделена цветом. В верхнем левом углу окна находится кнопка, нажав которую вы уничтожаете окно, в верхнем правом углу - кнопка изменения размера окна, если это изменение не заблокировано. Для того чтобы сделать окно активным, достаточно навести курсор мыши на это окно, и щелкнуть левой кнопкой. Вверху экрана над всеми окнами выводится меню активного в данный момент окна, оно реализует функции активного окна. В меню всех окон - левый элемент CT- это главное меню. С помощью главного меню системы обеспечивается оперативный вызов конфигурации окон, необходимой для выполнения требуемого типа работ в системе и вызов окон различных типов независимо от текущей конфигурации. Кроме того, главное меню поддерживает процедуры для загрузки данных объемного представления, их уничтожения и вызов окна установки параметров системы. При активизации главного меню выводится вертикальное подменю с элементами:
Как войти в систему. После инсталляции системы, проводимой разработчиками, она находится в рабочем директории c:\ctsys\exe. Надо войти в него и выполнить команду ct_work.bat. На экране дисплея появится нечто, похожее на нижеприведенную иллюстрацию:
Это конфигурация для работы с изображениями. На рисунке видны два главных окна системы: окно Управление (справа) и окно Изображения, с изображением среза, полученного на рентгеновском томографе. Как выйти из системы. Первый вариант: надо активизировать в верхнем меню элемент CT, появится вертикальное подменю, и щелкнуть мышью на элементе Выход. Второй вариант: в латинском нижнем режиме клавиатуры (для активизации латинского регистра надо одновременно нажать клавиши Control-Shift, для активизации русского регистра - клавиши Alt-Shift - зеленая рамка по периметру экрана - признак русского регистра) нажмите клавишу x. После выполненных действий в любом варианте появится окно подтверждения выхода. Если вы не передумали выйти из системы щелкните мышью на кнопке Да окна подтверждения или при работе с клавиатуры: переведите курсор на кнопку Да и нажмите клавишу Enter. ГЛАВА 1. Работа с изображениями. Какие окна выведены на экран после входа в систему. Это окна конфигурации для работы с изображениями. Они перечислены ниже. Первые три окна присутствуют всегда.. Четвертое окно FG-сервис выводится, если в вашей системе есть оборудование для ввода видеосигнала
Окно Управление Окно Управление является управляющим окном 2D режима и позволяет реализовывать основные функции работы с изображением: выбор, печать, копирование, удаление и т.д., управлять настройкой системы и запускать внешние приложения. В окне отображаются функциональные кнопки, таблица выбора-выделения изображений, подокна отображения. В верхней части окна находится подокно с путем директория, в котором выбираются изображения, под ним - таблица с тремя списками: в левом - поддиректории, в среднем - номера объектов, в правом - номера срезов. Вначале в таблице находятся списки соответствующие стандартному пути нахождения изображений: c:\ctsys\images (параметр image в файле ct.cfg). В верхней строке списка директориев находится строка «..» и далее список поддиректориев, если он есть. Для смены директория щелкните мышью на имени поддиректория в списке, либо на строке «..» (выход в старший директорий). В каждом списке имеется курсор (серый или черный), цвет активного курсора - черный. Курсор, указывающий на изображение, перемещается стрелками вверх и вниз на одну позицию; на лист - клавишами PgUp, PgDn; в начало и конец списка - клавишами Home, End. Кроме того, справа от каждой таблицы находится линейка для перемещения курсора. Ею пользуются в случае, если список изображений не умещается в таблице. Вверху и внизу линейки находятся кнопки стрелка вверх и стрелка вниз - при нажатии на них мышью курсор перемещается на одну позицию. На линейке находится движок; если навести на него курсор мыши, нажать левую кнопку мыши и, не отпуская ее, переместить мышь вверх или вниз, то движок переместится на новое место линейки и после отпускания кнопки мыши произойдет перевывод другого фрагмента списка. Другой способ перевывода фрагмента списка - щелкнуть мышью сверху или снизу от движка. Как, не выходя из системы, получить текст помощи. Для получения подсказки о работе с каким-нибудь элементом панели наведите курсор мыши на этот элемент (но не щелкайте!) и нажмите на клавиатуре компьютера F1 - выведется окно с текстом подсказки. Для получения подсказки работы с архивом наведите курсор мыши на элемент меню Архив (но не щелкайте!) и нажмите на клавиатуре F1; если текст превышает размеры экрана его можно листать, щелкая мышью над кнопками выведенными внизу текста (ДАЛЬШЕ, НАЗАД); для выхода из режима подсказки нажмите на клавиатуре Esc. Как выбрать нужное изображение. Для загрузки изображения щелкните мышью на номере нужного пациента или на номере нужного среза в таблице выбора панели Управление - активный курсор перейдет на этот номер. Далее нажмите кнопку Откр.IM или повторно щелкните мышью (изображение выведется в окно Изображение). Для загрузки объекта - выберите объект и нажмите кнопку Откр.NO. В окно Изображение выведутся все изображения данного объекта. Для выбора изображения по фамилии надо воспользоваться кнопкой Поиск. Произойдет вывод окна поиска. Поиск осуществляется по шаблону, вводимому в одноименное поле. Шаблон – это текст с искомыми начальными символами (от 1 до 25 символов). Поиск осуществляется в директории, выведенной в вверху окна, и, если параметр «Включая поддирекории» имеет значение «да», во всех поддиректориях, по точному совпадению с учетом регистров, при нажатии кнопок Искать и Искать дальше. Кнопка Искать дальше используется, когда начальные символы изображения и шаблон совпали, а полного совпадения нет. Если изображение найдено, оно выводится в окно изображения, иначе выводится сообщение «Изображение не найдено». Изменить путь директории поиска можно, воспользовавшись соответствующей кнопкой с помощью стандартного окна выбора. Для поиска можно использовать список изображений данной директории, отсортированный по фамилиям и выведенный вверху окна поиска. Перемещение по этому списку осуществляется мышью, стандартными элементами управления, имеющимися справа от списка - движок и кнопки, а также клавишами «стрелка вверх», «стрелка вниз», PgUp, PgDn клавиатуры. Для загрузки изображения, на котором стоит курсор надо на нем повторно щелкнуть кнопкой мыши или нажать клавишу “Enter”. Выход из функции осуществляется кнопками Отказ и Ок. При выходе по кнопке Ок происходит передача пути директории поиска в окно Управление. Как перевывести изображение. Кнопка Перевывод выводит изображение заново, она используется, когда вы произвели какие-либо манипуляции с изображением и хотите убрать с экрана результаты этих манипуляций. При перевыводе восстанавливается также масштаб изображения 1, если он был не равен 1 или 2. Как изменить «окно вывода» изображения. Понятие окна появилось в связи с необходимостью отображения диапазона чисел интересующей области на весь диапазон градаций яркости (серого) экрана. Окно вывода изображения характеризуется двумя величинами C и W. C -это центр диапазона, а W - ширина диапазона. Числа, соответствующие точкам изображения (например, в томографии - числа Хаунсфилда), от минимума C-W/2 до максимума C+W/2 отображаются серым пропорционально диапазону градаций яркости, соответственно числа меньшие минимума отображаются черным, а большие максимума - белым. Меняя значения C и W, мы меняем отображение, выделяя одно и нивелируя другое (W) или переводя его в сторону светлых или темных тонов (C). Менять значения можно кнопками С+, С-,W+, W- панели Управление или одноименными элементами меню окна Изображения, а также (при активном окне Изображения) кнопками клавиатуры (C-стрелки вверх и вниз, W-стрелки вправо и влево). При однократном нажатии происходит увеличение/уменьшение значений на шаг (фиксированное значение). Шаг изменения С и W может быть скорректирован в окне системных установок Setup (элемент меню Параметры элемента СТ верхнего меню). Как листать изображения. Функции IM+/IM- обеспечивают переход к следующему/предыдущему изображению в серии файлов данного объекта. Функции NO+/NO- обеспечивают переход к первому изображению следующего/предыдущего объекта. Доступ к этим функциям мышью аналогичен вышеописанному способу. Для клавиатуры существует следующее соответствие: IM+-«=», IM-«-», NO+-«+», NO-«_». Как выделить изображения. Режим выделения файлов изображений в таблице включается кнопкой Выделение и используется для последующих: копирования в отдельный директорий, удаления с жесткого диска или для печати на лазерный принтер. В режиме выделения перемещение курсора приводит к немедленному выводу текущего изображения на экран вне зависимости от того, выделен файл или нет. Для выделения надо навести курсор (активный курсор - фон черного цвета) на нужный объект или срез (переключение между столбцами объектов, срезов, поддиректориев можно, помимо мыши, делать клавишей Tab, а внутри столбца курсор передвигается стрелками или движками) и еще раз щелкнуть мышью или нажать клавишу Enter. Выделенные файлы отображаются желтым цветом. При выделении объекта выделяются все его срезы. При щелчке мыши или нажатии клавиши Enter на выделенном объекте или срезе выделение пропадает. Имеются также кнопки Все+ Все- Инверс. Первые две кнопки выделяют или, соответственно, гасят все изображения данного директория. Кнопка Инверс (если курсор находится в столбце срезов) выделяет невыделенные и гасит выделенные срезы (т.е. инвертирует выделение) для данного объекта, а, если курсор находится в столбце объектов, то инвертирует выделение всех изображений. Как копировать изображения. Кнопка Копир копирует изображение, выведенное в окно Изображения или все выделенные изображения в директорий \BOX. Эта функция используется, если вы хотите отобрать изображения по какому-либо признаку. Как удалять изображения. Кнопка Удаление удаляет изображение, выведенное в окно Изображения или все выделенные изображения с жесткого диска Как вводить примечания в файл с изображением. Кнопка Коммент выводит окно ввода формы для ввода двух строк комментария в файл с изображением. После ввода комментария, он отображается вверху окна Изображения. Как работать с меню окна Управление. Окно Управление активизирует меню, состоящее из следующих элементов:
Как печатать на лазерном принтере. Печать изображений и текста заключения на лазерном принтере осуществляется через окна Изображения и Текст. Поэтому не рекомендуется использовать окна Изображения и Текст, вызванные в других конфигурациях, например в 3D volume, и удалять любое из них до завершения работ по получению твердых копий. Функция печати на лазерный принтер может быть вызвана только в случае, если в окно Изображения загружено изображение. Печать изображений производится со следующими приоритетами: если есть выделенные изображения, то печатаются только они; если выделения нет, начиная с изображения загруженного в окно Изображения, печатается либо заданное (если задано) количество изображений (параметр К-во изображений), либо все имеющиеся изображения (срезы) данного объекта (пациента) в соответствии со значениями нижеописанных параметров печати, которые могут быть изменены с помощью элементов верхнего меню Парам1 и Парам2. При активизации элемента меню Парам1 выводится окно ввода формы со следующими параметрами:
При активизации элемента меню Парам2 выводится окно ввода формы со следующими параметрами:
В нижней части окна Управление находится подокно Печ_N отображающее в процессе печати текущее количество переданных в лазерный принтер изображений. Если пользователь по каким-то причинам хочет прекратить процесс печати он должен нажать клавишу Esc клавиатуры компьютера. В этом случае программа доведет до конца процесс передачи в лазерный принтер текущего изображения, напечатает то, что получилось, и остановится вне зависимости от значений параметра К-во изображений. Функциональные кнопки:
Все параметры печати, а также значения параметров региона печати, запоминаются в текущей конфигурации и могут запоминаться в файлах конфигурации, имеющих расширение CLJ. Таким образом, пользователь имеет возможность создавать типовые конфигурации для печати различных изображений и создания собственных режимов печати. Элемент меню ЗагрКонф позволяет вызывать из файла конфигурацию параметры печати. Элемент меню ЗапКонф позволяет запоминать в файле конфигурацию параметров печати. При печати изображений с томографа ОБРАЗ допускается печать параметров исследования на томографе, если параметр Промежуток по гориз. (расстояние между изображениями по X) больше или равен 18 мм. Окно Изображения Как, не выходя из системы, получить текст помощи. Для получения текста помощи активизируйте окно, наведите курсор мыши на элемент меню (но не нажимайте кнопку мыши!) и нажмите на клавиатуре компьютера F1. Выведется окно с текстом подсказки; если текст превышает размеры экрана его можно листать, щелкая мышью над кнопками выведенными внизу текста (ДАЛЬШЕ, НАЗАД); для выхода из режима подсказки нажмите на клавиатуре Esc. Как работать с меню окна Изображения. Окно Изображения активизирует меню, состоящее из следующих элементов:
Как производить файловые операции. Файловые операции производятся с помощью элемента меню Файл. Подменю Файл
Открыть Выводится окно для ввода имени файла с изображением, выбор осуществляется с помощью мыши или стрелок. Собственно загрузка происходит с помощью элемента "ОК" или двойным нажатием левой кнопки мыши или клавишей Enter. Элемент меню Отказ предназначен для выхода из подменю Открыть без загрузки изображения. Сохранить как .. Окно для записи в файл текущего изображения такое же, как и при загрузке рабочего файла на экран. Изображение можно записать под именем, уже имеющимся в каталоге, или под новым именем, которое следует ввести с клавиатуры. Сохранить в МРТ Если загруженное изображение изначально было в формате ДИСТОМ, то оно снова преобразуется в этот формат; файл с этим изображением получает исходное имя и записывается в директорию ctsys\images. Файл в формате CTSOFT не удаляется. Ввести примечания Обеспечивает ввод комментария в файл текущего изображения. Вызывает окно ввода и редактирования комментария. Упаковать Вызывает компрессию текущего изображения с параметрами по умолчанию и записывает изображение с именем, начинающимся с символа "P" в директорию сжатых изображений Подменю элемента Срез
Как производить Измерения. Измерения производятся с помощью элемента меню Изм. Подменю элемента Изм
Функция Значения в точке позволяет измерить значение плотности в любой точке активного окна изображения. В верхней части окна выводятся текущие значения координат курсора в пикселях (Х - координата х, Y - координата y), а также значение плотности в точке с указанными координатами (Н - значение плотности в числах Хаунсфилда для томограмм или значение яркости для рентгеновских и ультразвуковых изображений). Нажатие левой кнопки "мыши" приводит к фиксации текущего измерения на экране (фиксируется до 8-ми точек, одновременно отображается до 4-х значений координат и плотности - значения с 5 по 8 замещают значения с 1 по 4). Нажатие правой кнопки мыши или Esc приводит к выходу из функции. Функция ROI позволяет проанализировать значение плотности по зоне интереса. При вызове функции ROI в правый верхний угол экрана выводится окно ROI, а в верхней строке - меню ROI. В окне ROI находятся: · подокна, отображающие параметры ROI; · кнопки изменения параметров; · функциональные кнопки.
Анализ значения плотности по зоне интереса включает в себя вычисление следующих параметров:
Выбор зоны интереса осуществляется в зависимости от типа зоны. Для прямоугольной зоны левая верхняя граница зоны устанавливается при нажатии левой кнопки мыши. Зона расширяется до нужного уровня и ограничивается нажатием правой кнопки. Если в процессе расширения зоны выясняется, что следует изменить начальную точку зоны, необходимо вновь нажать левую кнопку мыши в нужном месте и повторить вновь процесс задания зоны. Для круглой зоны сначала выводится окружность, привязанная к маркеру мыши. Ее размер меняется нажатием кнопок «стрелка вверх» и «стрелка вниз». Перемещая мышь и меняя размеры окружности, выбирается зона. Фиксация зоны производится путем нажатия любой кнопки мыши. Выбор центра эллипсоидальной зоны производится путем нажатия левой кнопки мыши. Затем перемещением маркера мыши изменяются радиусы эллипса в вертикальном и горизонтальном направлении. Фиксация зоны производится при нажатии правой кнопки мыши. Для произвольной зоны выбирается начальное положение контура с помощью левой кнопки мыши. Затем каждое нажатие левой кнопки формирует новый элемент ломаной линии контура произвольной зоны. При непрерывно нажатой левой кнопке зона формируется из смежных точек. Замыкание зоны производится нажатием правой кнопки мыши. Внимание: избегайте пересечений при формировании контура произвольной зоны, иначе результат будет некорректным. Когда в качестве типа зоны установлено все изображение, никаких действий для определения зоны не требуется. Для работы с зоной интереса, прежде всего надо установить ее номер. Подокна с номерами зон (от 1 до 8) отображены вверху окна ROI в виде горизонтального ряда; для установки нужного номера надо наехать курсором на подокно с этим номером и щелкнуть левой кнопкой мыши; подокно с установленным номером выделяется цветом. Следующий шаг - установка параметров зоны интереса. Каждая зона характеризуется набором параметров, отображаемых подокнами в правой части окна ROI: Цвет: Черный/ Синий/ Зеленый/ ЗеленоГолубой/ Красный/ Фиолетовый/ Коричневый/ СветлоСерый/ Серый/ Голубой/ СветлоЗеленый/ ЯркоЗеленоГолуб/ ЯркоКрасный/ СветлоФиолет/ Желтый/ Белый/ Выключен - цвет при выделении текущей зоны, для изменения параметра надо наехать курсором на подокно и щелкнуть левой кнопкой мыши нужное число раз, при значении Выключен - выключается цветовое выделение значений в зоне; ROI Тип: Прямоугольник/ Окружность/ Эллипс/ Произвольная/ Все изображ. - выбор типа зоны интереса: прямоугольная, круглая, эллипсоидальная, произвольная или все изображение, для изменения параметра надо наехать курсором на подокно и щелкнуть левой кнопкой мыши нужное число раз; ROI Рез: Статистика/ Гистограмма - выбор отображения статистики или статистики и гистограммы при анализе зоны, для изменения параметра надо наехать курсором на подокно и щелкнуть левой кнопкой мыши; Теперь можно выделить выбранную зону на изображении, для чего в окне ROI надо нажать кнопку Выбор, после чего надо перевести курсор на изображение и выделить зону. При включенном цветовом выделении предварительно надо выбрать точку на изображении, значение которой будет центром томографического окна выделения, то есть после нажатия кнопки Выбор надо навести курсор на нужную точку и нажать левую кнопку мыши. После выделения зоны в окне изображения отображаются данные статобработки, а если выбран параметр Гистограмма, то во вспомогательном окне отображается и гистограмма, которая гасится щелчком мыши на этом окне. При наличии в файле ct.cfg параметра multiROI и, если ему присвоено ненулевое значение, в качестве результатов выводятся только значения объемов. Выбранная зона маркируется символом * под подокном с соответствующим номером зоны. Для обсчета ранее выбранной зоны можно пользоваться кнопкой Вызов. Т.е. если под подокном с выбранным номером зоны уже есть *, можно нажать кнопку Вызов и зона выделится автоматически. При нажатии кнопки ВызВсе выделятся все ранее выделенные (помеченные *) зоны. Примечание: функции Вызов и ВызВсе не работают с произвольной зоной (параметр Тип=Произвольная). Для передачи результатов обсчета зоны или всех зон в окно с заключением надо нажать, соответственно, кнопки Экспорт и ЭксВсе. Если необходимо удалить выделенную зону следует нажать кнопку Удалить. Меню ROI (верхняя строка экрана) обеспечивает возможность запомнить, загрузить или удалить произвольную конфигурацию ROI, а также выполнить дополнительные действия, и содержит четыре элемента: Загр - загрузка ранее записанной конфигурации ROI из файла, Запс - запись текущей конфигурации ROI в файл, Удалить - удаление файла с конфигурацией ROI, Сбросить - сброс зон без перевывода изображения для измерений по более чем 8-ми областям, Суммировать - вывод окна для суммирования групповых сумм, полученных при нажатии кнопки ЭксВсе. Файл конфигурации ROI содержит информацию обо всех зонах ROI. Он может иметь произвольное имя, но должен иметь расширение roi. При выполнении любого из вышеописанных элементов меню выводится таблица файлов поддиректория ROI директория CTSYS для ввода имени файла конфигурации ROI. Далее, в зависимости от выбранного элемента меню, этот файл загружается, записывается или удаляется. Для всех зон интереса запоминаются последние результаты измерений, которые могут использоваться калькулятором в функции Калькулятор и транслироваться им в протокол измерений. При нажатии клавиши F1 выводится текст помощи. Выход из функции ROI - кнопка Выход. Функция Значения в области для выбранной зоны изображения выводит на экран значения плотности в виде чисел. Зона выбирается мышью вышеописанным (в функции ROI) способом. После выбора зоны на экран выводится окно с таблицей чисел и двумя кнопками: Печать и Отказ. Слева от таблицы по вертикали выводится столбец с номерами строк, сверху по горизонтали - строка с номерами столбцов. Если выбранный фрагмент не уместился на экране, выводится столько значений, сколько умещается на весь экран и выводятся дополнительно вертикальная и горизонтальная линейки с рычажками, позволяющими вывести не уместившиеся значения. Кроме того, над и под столбцом с номерами строк дополнительно выводятся соответственно номера начальной и конечной строки выбранной зоны, а слева и справа от строки с номерами столбцов - номера начального и конечного столбца выбранной зоны. Кроме просмотра чисел, их можно напечатать на принтере с помощью кнопки Печать. Выход из функции осуществляется кнопкой Отказ. Функция Среднее позволяет производить измерения среднего, максимального и минимального значений по квадратной зоне интереса размером 11*11 пикселей при динамическом перемещении зоны. Результаты записываются в параметры текущей зоны. Выход из функции осуществляется нажатием правой кнопки "мыши" или клавиши ESC. Функция Расстояния позволяет измерять расстояния и углы на текущем изображении. Измерения производятся с помощью резиновой линии. Нажатием левой кнопки "мыши" фиксируется начальная точка отрезка. Перемещение "мыши" приводит к изменению положения конечной точки отрезка. Значения расстояний/углов отображаются на экране в формате: D1: A1: D2: A2: и т.д. Расстояния отображаются в сантиметрах, для томограмм и в пикселях для других изображений, а углы по отношению к горизонтали в диапазоне -90 - +90 градусов. Нажатие правой кнопки "мыши" приводит к фиксации конечной точки отрезка и выводу значений, соответствующих этому отрезку, на экран. Последовательно можно зафиксировать до 8-ми отрезков. Затем каждый вновь введенный отрезок будет как бы выталкивать первый из имеющихся. Выход из функции осуществляется с помощью клавиши Esc или повторным нажатием правой кнопки. Функция Профиль осуществляет вывод профиля данных. При выборе функции Профиль выводится управляющее окно. В нем отображены два скроллера - горизонтальный и вертикальный. Выбор скроллера автоматически ведет к выбору вертикального или горизонтального сечения для построения профиля. В дополнительном окне отображается номер строки или колонки и выводится максимальное и минимальное значение для данного сечения. Для выхода из функции Профиль достаточно закрыть дополнительное окно или нажать любое другое окно. Функция Объемы позволяет вычислять объемы нескольких образований по серии томограмм с учетом толщины среза и расстояния между срезами. В случае если томограммы вводились с видеосигнала, предполагается, что расстояние между центрами смежных слоев равняется толщине среза. При вызове функции Объемы в правый верхний угол экрана выводится окно Объемы, а в верхней строке - меню Объемы. В окне Объемы находятся:
Для работы с объемом, прежде всего надо установить его номер. Подокна с номерами объемов (от 1 до 8) отображены вверху окна Объемы в виде вертикального ряда; для установки нужного номера надо наехать курсором на подокно с этим номером и щелкнуть левой кнопкой мыши; подокно с установленным номер выделяется цветом. Далее надо установить параметры зоны интереса аналогично тому, как это делается в функции ROI. Для вычисления объемов необходимо выделить зону интереса на каждом срезе. Зона интереса выделяется аналогично функции ROI кнопкой Выбор или вызывается кнопками Вызов и ВызВсе. Результаты вычисления объемов отображаются в окне Объемы в строке с соответствующим номером объема. Для смены номера среза служит кнопка IM+. Для передачи результатов вычисления выделенного объема или всех объемов в окно с заключением надо нажать, соответственно, кнопки Экспорт и ЭксВсе. Для перехода к вычислениям объемов других объектов служат три элемента меню Объемы: Нов_NO - загрузка нового объекта, NO+ - переход к следующему объекту, NO - переход к предыдущему объекту. При нажатии клавиши F1 выводится текст помощи. Выход из функции Объемы - кнопка Выход. Как пользоваться калькулятором. Для работы с калькулятором необходимо активизировать окно Изображения (если оно не было активным), в верхнем меню войти в подменю Изм и выбрать функцию Калькулятор. На экран выводится панель калькулятора, которая имеет вид:
На панели размещены следующие поля: · отображения операндов (ОП1,ОП2), операции(OП), результата (РЕЗ), памяти (П); · клавиш набора чисел; · клавиш операций; · клавиш вычислительных функций; · клавиш вспомогательных функций; · клавиш работы с памятью; · клавиш загрузки величин, измеренных ранее на изображении; Все действия осуществляются "мышью" путем наезда ее курсора на нужную клавишу и нажатия левой кнопки. При этом, если после очередного нажатия кнопки "мыши" должен получиться результат, не отпуская кнопку можно видеть в соответствующих полях оба операнда, операцию и результат. После отпускания кнопки "мыши" результат перемещается на место первого операнда, а поле второго операнда очищается. На место любого операнда можно загрузить одну из величин, измеренных ранее на изображении. Так как каждая из этих величин может иметь до восьми значений, то после выбора нужной величины (осуществляется подсветка клавиш "1"-"8") необходимо ввести нужный номер значения этой величины. Например, если необходимо ввести величину расстояния, измеренного вторым, надо нажать на клавишу "D", а затем на клавишу "2".В калькуляторе имеется память на одно число - регистр П. Поле работы с памятью имеет клавиши, позволяющие производить следующие действия: Сбр - очистка «П», ПЗ - загрузка в «П» из поля "ОП1", ПЧ - загрузка в поле "ОП1" из «П», П<>x - обмен полей "ОП1" и «П», П+ - сложение «П» с "ОП1", П- - вычитание из «П» "ОП1", П* - умножение «П» на "ОП1", П/ - деление «П» на "ОП1". Результаты арифметических операций с "П" помещаются также в "П". Помимо арифметических операций в поле вычислительных имеются клавиши SQRT - вычисление квадратного корня из "ОП1" и клавиша 1/x - вычисление значения 1/"ОП1". Вспомогательная функция "BACK" стирает последнюю цифру при наборе операнда, при многократном "нажатии" можно стереть весь операнд. Вспомогательная функция "UNDO" возвращает ситуацию, в которой находился калькулятор до последнего "нажатия", в отличие от предыдущей функции ее действие однократно. Вспомогательная функция "x>Text" помещает значение "ОП1" в файл "text", она может использоваться, когда при наборе текста в текстовом окне появляется необходимость вставки в текст нужных числовых значений. При нажатии клавиши F1 выводится текст помощи. Выход из функции - закрытие окна (щелчок мыши в левый верхний угол) Подменю элемента Манип (манипуляции)
Сложение изображений Функция позволяет получить среднее текущего изображения и выбранного при входе в функцию. При входе в функцию появляется текущий каталог изображений, аналогичный используемому в функции Откр IM. После выбора файла выполняется сложение изображений. Полученный результат замещает в памяти текущее изображение и выводится на экран. К новому изображению применимы операции фильтрации, измерений и работы с фрагментами. Вычитание изображений Функция аналогична предыдущей, но производит вычитание выбранного изображения из текущего изображения. Инверсия изображения Функция инвертирует изображение путем построения инверсной таблицы преобразования яркости при выводе на экран. Повторный вызов функции возвращает исходный режим отображения. Подменю элемента Фильтры
Некоторые алгоритмы фильтрации изображений в системе CTsoft
Smoothing Gaussian filter
Smoothing filter via mean value formation
Contour filter
Variable filter
где P(x,y) - фильтруемая центральная точка P(r) - пиксель внутри выбранной матрицы R1/R2 - радиус матрицы фильтруемого фрагмента изображения в пикселях в X,Y направлениях S1,S2 - весовой фактор в X,Y направлениях r - радиус пикселя Edge-enhancing filter
Edge-enhancing, smoothing filter
Shading filter
Smoothing filter via averaging with 2*2 pixel matrix
Contour filter with 5*5 pixel matrix
Подменю элемента Фрагменты:
Для функций сохранения фрагмента перед их записью выводится окно выбора типа файла фрагмента. Возможен выбор форматов IMG, BMP и PCX. В формате IMG фрагмент записывается в файл в виде последовательности байтов, начиная с левого верхнего угла фрагмента строчка за строчкой. В начале файла помещаются два параметра типа Int16, определяющие размер фрагмента по X и Y. После выбора типа файла выводится окно для задания имени файла. В зависимости от формата файл должен иметь расширение IMG, BMP или PCX. Функция Масштаб/ Поворот позволяет поворачивать изображение на произвольный угол и масштабировать его с произвольным коэффициентом. После вызова функции выводится окно, содержащее два числовых параметра: Масштаб и Угол. Параметр Scale имеет по умолчанию значение 1, Угол - 0. Угол поворота задается в градусах и отсчитывается против часовой стрелки. В результате поворота и масштабирования получается изображение, которое может обрабатываться, как обычная томограмма или снимок, и сохранено в файле с помощью функции Сохранить как ... Функция Увеличить позволяет выделять произвольный фрагмент изображения и увеличить его до размера текущего изображения. Функция Масштаб X Y позволяет изменить размеры изображения, задавая количество точек по каждой координате, в которое вы хотите преобразовать исходное количество точек. Функция Растянуть окно позволяет выбрать прямоугольную зону интереса и контрастировать изображение в ней. Левая верхняя граница зоны устанавливается при нажатии левой кнопки "мыши". Зона расширяется до нужного уровня и ограничивается нажатием правой кнопки. Если в процессе расширения зоны выясняется, что следует изменить начальную точку зоны, необходимо вновь нажать левую кнопку "мышки" в нужном месте и повторить вновь процесс задания зоны. Нажатие правой кнопки "мыши" фиксирует конфигурацию полученной зоны и контрастирование изображения в ней на всю шкалу яркости. Функция Окно - по среднему устанавливает значение центра окна отображения, равное среднему значению, полученному при обработке текущей зоны интереса. Если для данной зоны не производилось измерений, устанавливается значение 0. Функция перезагрузки изображения Перегрузить загружает в память и на экран исходное изображение, т.е. удаляет с экрана результаты манипуляций. Подменю элемента Серв
Функция Двойное окно позволяет выводить изображение не в одном CW-окне, а в нескольких с помощью выводимого нижеприведенного окна.
Стандартно всегда включено CW-окно с номером 1. Включение другого окна производится следующим образом:
Выключается окно приведением кнопки Вкл/ Вык в состояние Вык и нажатием кнопки Уст. Кнопка Поз при нажатии перевыводится как Нег и служит для перехода от позитива к негативу и наоборот. Функция Раскрасить позволяет раскрашивать изображение - она выводит пиксели, попавшие в один из трех заданных диапазонов, соответственно одним из трех цветов: красным, зеленым или синим. Диапазоны выбираются с помощью линеек выводимого при обращении к функции окна, приведенного ниже.
Движок вертикальной линейки меняет текущий центр всех трех диапазонов, а горизонтальной - общую ширину трех диапазонов, которая делится на три. Первый диапазон находится в пределах между числами D1 и D2, второй - между D2 и D3 и третий - между D3 и D4. Значение центра равно (D1+D4)/2. Выход из функции - гашение окна (квадрат в левом верхнем углу). Функция Создать объем обеспечивает построение объемного представления по серии последовательных срезов. При вызове функции вызывается меню настройки параметров объемного представления:
Функция Установка окон обеспечивает возможность сохранять, редактировать и выбирать текущее окно из семи пар чисел (C,W). При входе в функцию выводится окно ввода, где помимо указанных семи пар чисел, выведены 2 параметра и 7 кнопок с номерами окон (от 0 до 6) и кнопка Отказ. Текущее окно имеет номер 0. Первый параметр имеет два значения (при нажатии меняются на противоположное). Первое значение - Установка выбранного окна. При этом если нажать на кнопки с 1 по 6, соответствующие значения C и W перепишутся в текущее (0) окно пере выведется изображения и функция завершится. Второе значение Фиксация текущего в выбранном приводит к тому, что при нажатии кнопок с 1 по 6 произойдет запоминание значений C0 и W0 в соответствующей паре. Второй параметр включает/выключает двойное окно-изображение выводится одновременно в двух окнах (всегда 0 и 1). Чтобы установить двойное окно, надо при выходе нажать кнопку 0. То есть, кнопки 1-6 всегда устанавливают одинарное окно. Установить заранее подготовленные окна можно также с помощью клавиатуры - клавишами 0-6 (0-включает/выключает двойное окно) Что еще можно делать с помощью меню окна Изображения. Функция Удал производит удаление либо изображения выведенного в окно Изображения, либо заранее выделенных изображений, перед удалением выводится окно подтверждения. Функция Мфор производит подготовку экрана для вывода на мультиформатную камеру. Если в вашем компьютере имеется соответствующее оборудование (плата FrameGrabber) и к нему присоединена мультиформатная камера, происходит вывод на нее. Выход из этого режима - нажатие любой клавиши. Функция Печ действует в режиме загрузки объекта. Если есть выделенные изображения, они печатаются с ранее установленными параметрами. Какие параметры системы можно установить элементом подменю Setup меню CT. Выводится окно изменения системных параметров. В нем можно установить следующие параметры системы: - тип меню, - масштаб при импорте сечений из 3D, - шаг изменения уровня С, - шаг изменения уровня W, - цвет надписей, - цвет надписей при печати с экрана, - цвет линий, - порт принтера. Как работать с видеосигналом - окно FG Сервис Окно FG Tools состоит из шести функциональных кнопок и меню.
Функция Нов.пациент/ Стоп запрашивает информацию о новом пациенте/завершает цикл ввода изображений.
Некоторые значения предлагаются по умолчанию, но могут быть изменены. Номер пациента должен быть уникальным, иначе возможно стирание ранее введенных изображений. Ввод начального номера снимка позволяет, в случае необходимости, начать ввод изображений не с первого снимка и дополнять уже имеющиеся изображения данного пациента. Функция Запись (оцифровка и запись текущего видеоизображения) фиксирует изображение, записывает его в файл изображения и выводит его на экран. Функция Запис.фильм записывает последовательность изображений в соответствии с заданным числом кадров с максимально возможной скоростью - порядка 4 кадров в секунду. Функция Показ.фильм проигрывает записанный или загруженный фильм. Функция Фиксир.кадр сохраняет текущий кадр записанного или загруженного фильма с текущими NO и NS. Следует применять эту функцию до нажатия кнопки Стоп. Функция Загр.фильм загрузить ранее записанный фильм и запустить его проигрывание.
* - фильм должен быть загружен. Подменю элемента FG Устан Используется для настройки конкретной платы поставщиками системы при инсталляции. · H Total` - частота строчной развертки · H Displayed - количество пикселей в строке /8 · H Sync Position - сдвиг изображения по горизонтали · H Sync Width - ширина строчного синхроимпульса · V Total - частота кадровой развертки · V Adjust - плавная настройка частоты кадровой развертки · V Displayed - количество линий по вертикали · V Sync Position - сдвиг изображения по вертикали · Interplace Mode - 3 - чересстрочная развертка, 1 - прогрессивная · Max Scan Line Address - всегда 15 · Scan frame size: 128 -выбор размера области динамической визуализации · Scan X-Left: 0 -выбор левой X-координаты области динамической визуализации относительно левого верхнего угла матрицы в CT · Scan Y-Up: 0 -выбор верхней Y-координаты области динамической визуализации относительно левого верхнего угла матрицы в CT · Save X - x-координата сохраняемого прямоугольника · Save Y - y-координата сохраняемого прямоугольника · Save NX - размер по x-координате сохраняемого прямоугольника · Save NY - размер по y-координате сохраняемого прямоугольника Как работать с текстовой информацией - окно Текст. Окно предназначено для редактирования и печати предварительно загруженных текстовых файлов. Стандартный вариант - это редактирование заключения. Заключение-это текстовый файл, относящийся к пациенту с номером NO, имеющий имя формата c.txt и расположенный в директории с путем, указанным в конфигурационном файле ct.cfg в параметре ctxt (информация о ct.cfg приведена в приложении). Если этот параметр отсутствует, путь директории заключений-\ctxt. При загрузке изображения, если заключение уже имеется, оно автоматически загружается в окно Текст. Если в конфигурационном файле параметр concl равен 1, то при загрузке изображения, если заключения нет, оно создается с начальным содержимым, которое берется из файла text рабочего директория, который является текущим шаблоном. Кроме того, перед этим текстом вставляется шапка, состоящая из двух строк с названием учреждения, датой и идентификацией пациента (эта информация берется из изображения). При активизации окна Текст в верхней строке выводится меню: Файл +Автозапись Формат Печать Показ фраз. При работе со строкой меню Файл выводится подменю для работы с файлами: Загрузить текст - загружает в окно файл с расширением txt; Записать текст - производит запись в текущий файл; Очистить - очищает окно; Загрузить шаблон - загружает файл с шаблоном (должен иметь расширение txt) из директория \pattern. Записать шаблон - записывает текст окна в файл с шаблоном (должен иметь расширение txt) в директорий \pattern. Строка + Автозапись означает, что включен режим автоматической записи нового состояния окна, нажатие приводит к инверсии ситуации, строка приобретает вид - Автозапись: Формат - происходит форматирование текста, которое заключается в удалении переносов слов и в склейке строк, если следующая строка начинается с первой позиции, а не с табуляции или с пробелов. Печать - происходит печать находящегося в окне текста. При щелчке мыши на строку меню Показ фраз в правый угол экрана выводится подсказка для загрузки в окно словосочетаний, которые заранее набраны в файле phrase.txt. Гасится повторным щелчком на строку меню Показ фраз. При нажатии F1 выводится текст подсказки, который гасится нажатием клавиши Esc. При наборе теста в текстовом окне, текст справа от курсора сдвигается вправо. Он может стать невидим при превышении строкой заданной ширины, которая определяется количеством символов умещающихся в строку при выводе на принтер, но не пропадает. При достижении курсором заданной ширины строки происходит автоматический перенос курсора на следующую строку вместе с возможно ушедшей вправо частью строки, и она становится видимой.
Как работать с окном ввода формы Окно ввода формы применяется во многих местах пакета и служит для модального ввода значений параметров, т.е. выход из окна возможен только при нажатии одной из управляющих кнопок.
Редактирование строки при вводе формы (ввод имени файла и т.п.)
Как работать с архивом изображений. В случае пополнения архива работа делится на следующие два этапа:
Выполнение второго этапа производится либо автоматически, если путь архива указывает на ваш архивный носитель (например, на имя устройства магнитооптики), либо с помощью специальных программ (например, Tape для стриммера). В случае извлечения из архива этапы выполняются в обратном порядке. Для работы с архивом необходимо активизировать окно Управление (если оно не было активным) и активизировать элемент верхнего меню Архив. Выводится окно для установки параметров, выбора работы и выбора директориев. В этом окне выводятся подокна со следующими параметрами и их значениями по умолчанию:
Эти параметры можно менять. Внизу под параметрами выведены два ряда клавиш. В первом ряду четыре клавиши для выбора нужной работы: АРХИВ РАЗАРХИВ УПАКОВКА РАСПАКОВКА. Предварительно выбранная работа подсвечена зеленым цветом; если надо сменить работу щелкните левой кнопкой мыши на нужной клавише. Для каждой работы в файле pasoudes.dat заводится по две строки с путями исходной и результирующей директории в следующем порядке: распаковка, упаковка, разархивирование, архивирование. Значения этих строк, т.е. пути можно менять клавишами ПУТЬ ОТКУДА и ПУТЬ КУДА Во втором ряду - клавиши: ПУТЬ ОТКУДА для выбора пути исходного директория ПУТЬ КУДА для выбора пути директория результата Отказ отказ от функции. Значения параметров обрезки определяют процедуру, производимую над изображением перед упаковкой, которая состоит в том, что все числа, отображаемые пикселями изображения, (например, для рентгено-томограммы это числа Хаунсфилда) меньшие минимума приравниваются минимуму, а большие максимума приравниваются максимуму, все остальные числа остаются без изменения. Это означает, что при последующей распаковке мы получим числа только в диапазоне окна обрезки. То есть, при сужении окна обрезки происходит некая потеря информации; в виде компенсации за эту потерю мы получаем более эффективную упаковку. Соответственно вышеизложенному, значения минимума и максимума окна обрезки выбираются так, чтобы это окно включало бы в себя все значимые числа изображения. Значение параметра "Выполнить работу над всеми файлами или выборочно" "над всеми" приводит к тому, что после запуска работа будет выполнена над всеми файлами изображений в соответствующем поддиректории без участия оператора. Значение "выборочно" приводит к тому, что после запуска программа будет ждать от оператора действий, описанных ниже. Значение параметра "Удалять исходные файлы при работе с архивом" "да" приводит к удалению соответственно архивируемых или разархивируемых файлов; значение "нет" исключает удаление. Следующий параметр позволяет выводить сообщения о неудачах упаковки-распаковки и тогда оператор может прервать этот процесс. Следующие два параметра позволяют задать режим создания архива из упакованных или неупакованных изображений и режим разархивирования до упакованных или до неупакованных изображений. При нажатии на клавиши выбора путей ПУТЬ ОТКУДА, ПУТЬ КУДА выводится соответствующее окно. Выбранные пути отображаются в окне работы с архивом. После выбора параметров и путей для запуска программы работы с архивом надо щелкнуть левой кнопкой мыши на заранее выбранной клавише работы (т.е. на клавише зеленого цвета). Все окна исчезнут, и запустится программа упаковки/распаковки и работы с архивом, которая описана ниже. Процедура архивирования изображений заключается в упаковке файлов с изображениями (если они не были предварительно упакованы) и в соединении упакованных файлов, относящихся к одному пациенту, в один файл. Упаковка файлов с изображениями производится по определенному алгоритму и дает выигрыш в 4-5 раз. Процедура разархивирования обратна процедуре архивирования. Согласно системным соглашениям неупакованные, упакованные, и архивные изображения располагаются в разных директориях, начальные пути которых определяются в файле ct.cfg. Пути исходной и результирующей директории программа берет из файла pasoudes.dat в соответствии с выбранной работой. Процедуры архивирования и разархивирования производятся над изображениями или архивами, находящимися в соответствующих директориях. Если выполнение работы было задано с параметром "выборочно", программа работает в "ручном" режиме. На экран выводится две строки: в первой (вверху экрана) отображается вид работы и значения параметров окна обрезки, а в дальнейшем отображаются сообщения программы; во второй (внизу экрана) - меню типа Нортон. Вначале оно содержит следующее: 1Help 2WorkC 3Min 4Max 5Choic...10Quit. Оператор имеет возможность: · получить подсказку - F1; · изменить вид работы нажатием клавиши F2 или нажатием кнопки мыши при наезде на поле "F2" или поле с названием вида работы в верхней строке; · в режиме упаковка и архивирование изменить значения минимума и максимума окна обрезки данных; то осуществляется соответственно клавишами F3,F4 или нажатием кнопки мыши при наезде на поля "F3","F4" или поля со значениями границ и дальнейшим редактированием и выходом по Enter в случае правильной редакции или по Esc в случае отказа; · выбрать файлы, над которыми будет выполнена заданная работа, что осуществляется нажатием клавиши F5 или нажатием кнопки мыши при наезде на поле "F5"; · выйти из программы -F10. При выполнении оператором функции выбора файлов нижняя строка экрана модифицируется и выглядит следующим образом: 1Help 2Esc 3Exec 4+All 5+Page...8-Page 9-All 10Quit. Затем выводится таблица файлов и сообщение в верхней строке: Всего файлов NN Из них выделено 0 (NN- общее число файлов). Таблица файлов состоит из двух колонок. В первой находятся номера объектов NO в порядке возрастания, во второй - списки номеров срезов NS. Строка таблицы - это NO и список NS этого объекта. Сверху таблицы - строка, отображающая путь исходного директория. В правом верхнем углу таблицы выведено "Esc" для отказа от функции выбора с помощью мыши, а также, в случае, когда таблица не умещается на одном экране (листе), в левом верхнем углу и в правом нижнем выводится соответственно "PgDn" и "PgUp" для листания таблицы с помощью мыши. Оператор теперь имеет возможность: · получить подсказку - F1; · отказаться от функции - F2; · выйти из программы -F10. А также, осуществить выбор и инициировать выполнение работы. Выбор в таблице файлов осуществляется функциональными клавишами или специальным курсором. Текущее положение курсора отображается цветом. Движение курсора осуществляется стрелками или мышью (курсор мыши наводится на нужное место и нажимается Enter). Выбрать можно отдельное изображение, строку, лист и все файлы. Выбранные файлы выделяются цветом. Аналогично можно отменить выбор. Выбор всех файлов и всех файлов экранного листа осуществляется клавишами F4, F5; отмена - F8, F9. Выбор файлов строки или отдельного файла осуществляется подводом курсора на начало строки или на нужный файл и нажатием Enter или кнопки мыши. В процессе выбора в верхней строке отображается число выделенных файлов. Запуск выполнения работы осуществляется с помощью клавиши F3 или нажатием кнопки мыши при наезде на поле "F3". При этом в верхнюю строку выводится сообщение: Всего файлов NN Из них успешно 0 (NN- число выделенных файлов). После успешного выполнения работы над текущим файлом он "гасится" в таблице файлов и корректируется верхняя строка сообщений. Нижняя строка экрана модифицируется и выглядит следующим образом: 1Help...4Set 5Choic...10Quit. Прервать выполнение работы можно клавишей Esc. По окончании оператор имеет возможность: · получить подсказку - F1; · войти в режим установки вида работы (начало программы) - F4; · войти в режим выбора файлов (осуществить новый выбор) - F5; · выйти из программы -F10. ГЛАВА 2. Как работать с трехмерными объектами. Окна 3D визуализации
Окна 3D визуализации работают совместно с окнами Изображения и окном Текст. Все окна 3D визуализации имеют общее меню, отдельные элементы которого связаны с различными окнами, а другие воздействуют на активное в данный момент окно. Некоторые элементы меню активизируются только при наличии определенного типа данных в памяти. К окнам 3D визуализации относятся: Окно 3D preview для предварительного просмотра аксиального, коронарного и сагиттального сечений и ориентации отображения в окне 3D view. Окно 3D view для просмотра объемного представления в различных ракурсах с наложенными аксиальным, коронарным, сагиттальным и произвольным сечениями и внешним видом объекта. Окно Animator для построения и просмотра анимационных последовательностей, позволяющих просматривать траекторию прохождения инструмента при вмешательстве и корректировать ее путем изменения координат точек входа и цели. Окно 3D Measure для измерений координат, плотностей и расстояний в объеме и задания траектории оперативного вмешательства. Структура меню окон 3D визуализации имеет следующий вид:
Параметры 3D визуализации
Управление при работе с анимационными последовательностями
Кнопки окна 3D measure
Приложение. Конфигурационный файл системы ct.cfg. Стандартные пути системных директорий image = c:\ctsys\images\*.* ; неупакованные изображения формата ct_soft imagep = c:\ctsys\images_p\*.* ; упакованные изображения формата ct_soft archiv = c:\ctsys\ima_arch\*.* ;архивные файлы формата ct_soft select = c:\ctsys\box\ ;отобранные изображения формата ct_soft proi = c:\ctsys\roi\*.roi ;конфигурационные файлы зон интереса pattern = c:\ctsys\pattern\*.txt ;файлы шаблонов заключений ctxt = c:\ctsys\ctxt\ ;файлы заключений help = c:\ctsys\help\ ;файлы подсказок ljconf = c:\ctsys\roi\*.clj ; конфигурационные файлы печати frag = c:\ctsys\scrfrag\*.img ;файлы фрагментов изображений формата ct_soft pcx = c:\ctsys\scrfrag\*.pcx ;файлы формата PCX bmp = c:\ctsys\scrfrag\*.bmp ;файлы формата BMP img = c:\ctsys\img\ ;файлы формата ОБРАЗ 3dvol = c:\ctsys\3d\*.vol ;файлы 3D cinema = c:\ctsys\cin\*.cin ;анимационные файлы 3D films = c:\ctsys\films\*.* ; анимационные файлы FG Общие параметры 3dscale = 1 ;начальное значение масштаба изображения 2dmode = 1 cell = 280x16 ; не менять menu = fix ;не менять (menu= fall) ct_type = 0 ;начальный тип изображения 0 - РТ , 1 - МР multiROI= 0 ;0 - до восьми зон интереса 1- больше восьми с выводом только объёмов concl = 1 ; 1 - создается (если его нет) заключение (c.txt) по шаблону text; 0 - не создается FG-параметры fgtype = 0 ; 0 - FG, 1 - VS54 fgnx = 512 fgny = 512 fgx0 = 0 fgy0 = 0 ; fgscale = 0 - ввод 512*512 1 - 256*256 fgscale = 1 ; fgrem = 0 - ввод через мышь 1 - с кнопкм fgrem = 0 fgboard = 0 ; присутствие панели FG Параметры печати lj_res = 1 ; разрешение принтера при печати изображений 0 - 300, 1 - 600 , 2 - 1200 dpi- lj_rgn = 0 ; обрезка перед печатью 1 - прямоугольник pix_res = 0 ; размер матрицы пикселя 0 - 4*4 , 1 - 8*8 ncopy = 1 ; количество копий prprot = 1 ; 0 - не печатать протокол, 1 - печатать margine = 10 ; отступ при печати по X в мм. martxt = 0 ; отступ при печати текста по X в мм. interx = 1 intery = 1 ; промежутки между изображениями при печати в мм. prscale = 1.0 ; коэфф.увеличения(>1. .3) IMG при печати fl_5L = 0 ; альтернативный код готовности принтера fonthead= 0 ; признак крупного фонта для печати заголовка corc = 0.1 ; коррекция центра окна для печати (c=c-corc*w) prnport = 0 ;LPT 0 - 2 2-отсутствие принтера format = 0 ;0 текст не форматируется ;1 текст форматируется fbnum = 6 pr_arch = 0 ; параметр выбора работы с протоколом архивирования ; отсутствие , 0 или не (1,2,3) - не просматривать и не печатать ; 1 - просмотр (протокол вводится в окно "text") ; 2 - печать с запросом подтверждения ; 3 - печать без запроса подтверждения
25 Темой моего дипломного проекта было передача информации из ультразвуковой медицинской диагностической установки в персональный компьютер. Данный дипломный проект выполнялся в рамках программы «телемедицина» на базе института хирургии им. А. В. Вишневского. На сегодняшний день от 60 до 80% медицинской диагностической информации хранится в виде изображений. В связи с этим наиболее актуально стоит вопрос передачи информации из медицинского диагностического оборудования в персональный компьютер для дальнейшего анализа, обработки, хранения и передачи по современным линиям связи. Получение, обработка и анализ информации из ультразвуковой медицинской диагностической установки связано с определенными трудностями, которые можно разделить на три группы:
Для решения данных проблем разработана следующая схема передачи данных из ультразвуковой медицинской диагностической установки в персональный компьютер. (плакат 1) Я осуществлял подключение ультразвуковой диагностической установки ALOCA SSD 650. Она осуществляет срез информации органов исследуемого пациента на глубину до 30 см. от места контакта с телом пациента и работает на частоте от 2 до 7,5 мГц. И выводит информацию на экран с разрешением 640 * 480 с 64 уровнями градации серого. Полученная информация преобразуется в стандартный видеосигнал, который может быть снят с специализированных выходов. Захват и обработку информации из ультразвуковой медицинской установки осуществляется устройством, называющимся frame grabber. Оно позволяет в «реальном времени» преобразовать видеосигнал в цифровое изображение и сохранить его в персональном компьютере. К frame grabber’у предъявляется ряд характерных требований. Это должно быть устройство, позволяющее длительную оцифровку видеосигнала в реальном времени, обладать высокоскоростной «шиной», для быстрой передачи полученной информации в персональной компьютер. В нем должна быть предусмотрена возможность настройки яркости и контрастности для первоначальной настройки при подключении к медицинской диагностической установке и оно должно быть совместимо со всеми основными современными операционными системами. Всем этим требованиям удовлетворяет frame grabber HI*DEF PLUS фирмы IMAGRAPH. Данный frame grabber позволяет получать 256 уровней градации серого, что позволяет иметь запас по разрешению изображения для ультразвуковых медицинских установок более высокого класса и получать изображения, над которыми можно производить определенные операции. Кроме того, это сравнительно недорогое устройство, в своем классе, что является преимуществом, т.к. наши медицинские учреждения финансируются не достаточно. Frame grabber передает информацию в передает информацию в персональный компьютер первичного пользователя. Оптимальной конфигурацией персонального компьютера первичного пользователя является P2 – 400, 128, 4.3 + 18 SCSI, 8 V I740. Данная конфигурация предоставляет возможность осуществлять захват изображения из ультразвуковой медицинской диагностической установки, поддерживать режим телеконференций, осуществлять передачу получаемого сигнала по сети в реальном времени и обрабатывать получаемую информацию. Но т.к. парк персональных компьютеров в медицинских учреждениях России, на данное время, состоит из персональных компьютеров устаревших моделей, то в этом случае можно использовать лишь основные функции - захват и обработку изображений. Это можно осуществлять на персональных компьютерах класса DX4 – 100 с 16 мБ оперативной памяти, размером жесткого диска 800 мБ и сетевой картой NE2000 или совместимой. Персональный компьютер первичного пользователя позволяет передавать полученную информацию по компьютерной сети. Вопросы передачи информации по компьютерной сети подробно рассматриваются в дипломном проекте Еремеева Артема, который также выполнял дипломную работу в рамках проекта «телемедицина». К персональному компьютеру вторичного пользователя предъявляются те же требования, что и к персональному компьютеру первичного пользователя, за исключением того, что у в нем не устанавливается frame grabber для захвата изображения с ультразвуковой медицинской диагностической установки. В результате захвата изображения получается файл в котором необходимо отобразить не только информацию собственно о картинке, но и дополнительную. Для этого был разработан формат файла плакат 2 , который содержит в себе следующие поля:
Информационное поле данного файла на прямую связано с характеристиками ультразвуковой медицинской диагностической установки, frame grabber’а и персональным компьютером. В рамках данной работы, в результате взаимодействия с медицинским персоналом, возникла необходимость преобразования изображений для выделения областей, контуров этих областей, границ образований. Для этого мною были внедрены ряд фильтров. Это сглаживающий фильтр, медианный сглаживающий фильтр, контурный фильтр и полутоновой фильтр. Результаты воздействия данных фильтров на изображение можно наблюдать плакат 3. По результатам консультирования с врачами, было выявлено, что их применение дает наиболее хороший эффект при последовательном воздействии на изображение нескольких фильтров. Это можно наблюдать на плакате 4. Это было апробировано специалистами и было выявлено, что результаты воздействия этих фильтров на изображение несут в себе высокую практическую ценность. В данной дипломной работе было:
Данную систему можно внедрять в рамках проекта «телемедицина», для развития медицинских телеконференция и телеконсультаций. Отзыв руководителя На дипломный проект «Передача информации из ультразвуковой медицинской диагностической установки ALOCA SSD – 650», выполненный студентом – дипломником Максимовым Дмитрием Вячеславовичем. На дипломном проектировании перед Д.В. Максимовым была поставлена задача – разработать систему передачи информации из ультразвуковой медицинской диагностической установки на персональный компьютер с дальнейшей обработкой получаемой информации. В процессе работы дипломант показал хорошее понимание поставленной задачи, умение самостоятельно разыскать и разобраться в литературе, умение грамотно использовать современные средства программирования. Исследованные и реализованные в проекте принципы будут использованы в дальнейшей разработке математического обеспечения медицинского назначения. Д.В. Максимов с заданием справился полностью. Над проектом работал самостоятельно, организованно и ритмично.
Считаю,
что дипломный
проект заслуживает
оценки ОТЛИЧНО,
а Руководитель, Зав. лабораторией кибернетики Института хирургии им. А.В. Вишневского РАМН кандидат физ – мат наук Е.Н. Тимин МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РФ МОСКОВСКИЙ ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ ИНЖЕНЕРНО - ФИЗИЧЕСКИЙ ИНСТИТУТ (технический университет)
ВЕЧЕРНИЙ ФАКУЛЬТЕТ Кафедра № 25ПОЯСНИТЕЛЬНАЯ ЗАПИСКАк дипломному проекту на тему : «Передача информации и ультразвуковой медицинской диагностической установки ALOKA SSD – 650» Студент – дипломник: Д. В. Максимов.
Руководитель
проекта: зав.
лаб. кибернетики,
канд. физ. - мат.
наук
Консультант:
зав. лаб. РНЦ
«Курчатовский
институт»,
канд. физ. – мат.
наук
Рецензенты:
директор ООО
«КДС» канд.
физ. - мат. наук,
лауреат Гос.
премии СССР
Ген.
Директор ООО
«ЦВС (DiViSy)»
канд.
физ. - мат. наук
Зав. кафедрой 25: доктор физ. - мат. наук, профессор Ю. А. Быковский. Москва -1999 г. Аннотация Дипломный проект посвящен разработке системы передачи данных из ультразвуковой медицинской диагностической установки, а также получением диагностически адекватного изображения для дальнейшей диагностики, анализа и хранения. Обработка полученных изображений базируется на программном комплексе CTsoft. Система предназначена для работы в отделениях ультразвуковой диагностики и не требует от пользователя дополнительных знаний по программированию и техническому обслуживанию персональных компьютеров. Она предоставляет пользователю удобный экранный интерфейс для получения и обработки высококачественных изображений, переданных из ультразвуковой медицинской диагностической установки, кроме того, она предусматривает возможность дальнейшей передачи полученных данных по компьютерной сети. Система прошла опытную эксплуатацию в институте хирургии им А. В. Вишневского в рамках проекта «телемедицина». Отчетные материалы к дипломному проекту включают пояснительную записку, 3 приложения и графический материал. СодержаниеВведение 4 Обзор литературы 7 Разработки телемедицины в мире 7 Необходимость “телемедицины” в России 9 Задачи здравоохранения, решаемые с применением телемедицинских технологий 12 Станции глобальной связи 14 Локальный сервер клиники 14 Локальные рабочие станции 14 Формы применения телемедицинских технологий для решения задач здравоохранения 15 Приложения телемедицины в клинической практике 16 Требования к передаче телемединформации 17 Анализ возможности передачи медицинских данных существующими программно – аппаратными средствами 20 Подключение ультразвуковой медицинской диагностической установки ALOKA SSD - 650 23 Ультразвуковая
диагностическая
установка Общие характеристики устройства 25 Принцип построения выходного сигнала 27 Устройство согласования УЗИ с персональным компьютером первичной обработки данных 29 Основные характеристики HI*DEF Plus LF 31 Формат файла получаемого изображения 32 Персональный компьютер первичной обработки 35 Локальная вычислительная сеть 38 Особенности построения компьютерной сети для института хирургии им. А. В. Вишневского 38 Программное обеспечение и сетевое оборудование 43 Персональный компьютер консультанта 45 Использование фильтров 46 Фильтр сглаживания 48 Фильтр усредненного сглаживания 49 Фильтр подчеркивания контуров 50 Фильтр обработки полутонов 51 Последовательное использование фильтров 52 Заключение 54 Выводы и результаты: 55 Список литературы 56 Приложение 1 58 Формат информационного поля файла изображения 58 Приложение 2 62 Модуль формирования фильтров изображений (С++) 62 Приложение 3 94 Описание программы обработки изображений Ctsoft 94 ВведениеНесмотря на сложность экономической ситуации, в стране быстро нарастает парк современной медицинской аппаратуры: ультразвуковые аппараты, компьютерные томографы, биохимические анализаторы и т.д. Однако, в силу неполного использования современных медицинских знаний, новые методики внедряются на местах крайне неэффективно. Как показывает опыт, уровень диагностики и лечения в центральных клиниках (а они сосредоточены главным образом в Москве) значительно превосходит уровень практического здравоохранения в стране, даже при том, что разница в уровне оснащения не велика. При этом в медицине объем знаний удваивается в 1,5 - 2 раза быстрее по сравнению с другими разделами науки. Таким образом, стратегически важной задачей становится организация принципиально нового взаимодействия работников практического здравоохранения с центральными научно-диагностическими учреждениями, так чтобы практическое здравоохранение в регионах могло бы оказывать высококвалифицированную помощь населению, используя имеющееся оборудование и интеллектуальный потенциал лучших клиник страны. Экономическая ситуация в стране изменилась таким образом, что диагностическая помощь населению регионов со стороны центральных клиник становится практически недоступной, при том, что ресурсы ведущих медицинских центров вполне позволяют оказывать эту помощь. Затраты на приезд в Москву становятся сравнимыми, а подчас и превосходят саму стоимость диагностики и лечения. Как показывает статистика широкопрофильного медицинского центра (Института хирургии им. А.В. Вишневского РАМН) до 1995 года за диагностической помощью обращалось порядка 10-12 тыс. пациентов в год из различных регионов страны, сейчас это количество упало до 1 тыс., при этом Институт в год проводит обследования до 70 тыс. пациентов (москвичи) и в состоянии довести это число до 120-150 тыс. Имеющиеся и активно развивающиеся в стране современные средства связи (спутниковая, оптоволоконная, радиорелейная) позволят объединить региональные и центральные лечебные учреждения в единую сеть и таким образом обеспечить “доставку интеллектуального потенциала лучших клиник страны в те места, где в нем экстренно нуждаются”. Очень большие перспективы в этом плане сулит “телемедицина” - сочетание современных научных методов диагностики и лечения заболеваний с ускоренной обработкой и анализом клинико-физиологической и медико-социальной информации на базе электронно-вычислительной техники и средств связи в режиме теледоступа. Выполнение перечисленных выше задач невозможно без технической базы, которая должна быть реализована в каждом медицинском учреждении, входящим в проект «телемедицина». Эта техническая база должна включать в себя парк персональных компьютеров, объединенных в единую сеть с централизованной базой данных, подключением к медицинским диагностическим установкам и иметь выход на внешние линии связи. Вопросы рассматриваемые в рамках нашего дипломного проекта включают в себя решение следующих задач:
В дипломном проекте рассмотрен вопрос подключения ультразвукового диагностического аппарата к сети и решение обеспечения качественной передачи данных по сети. С возможностью вывода на печать с использованием печатающих устройств общего назначения. А также анализ полученных данных. Обзор литературыРазработки телемедицины в миреПервой страной, поставившей телемедицину на практические рельсы стала Норвегия, где имеется большое количество труднодоступных для традиционной медицинской помощь мест. Второй проект был осуществлен во Франции для моряков гражданского и военного флотов. А сегодня уже трудно назвать западно — европейскую и американскую страну, где бы не развивались телемедицинские проекты, причем особый размах нарастание сеансов «телемедицины» получило в США.[8]
Получают развитие и международные сети медицинских телекоммуникаций, направленных на разные цели: система “Satellife” для распространения медицинских знаний в развивающихся странах и подготовки кадров, “Planet Heres” — предложенная ВОЗ система глобальных научных телекоммуникаций, международной научной экспертизы и координации научных программ, другие системы и сети. Толчком к развитию телемедицины стало и то, что быстрый прогресс современных методов исследования привел реально к социально неприятному следствию: отставанию уровня диагностики в учреждениях практического здравоохранения в регионах сколь угодно развитой страны от центральных исследовательских и клинических медицинских центров. И по мере бурного развития медицинской науки этот разрыв не сокращается, а увеличивается. Поэтому стратегически важной задачей во многих странах стала организация принципиально нового взаимодействия работников практического здравоохранения с центральными научно—диагностическими учреждениями, направленного на обеспечение эффективной, высококвалифицированной и эшелонированной медико — санитарной помощи.[5] Необходимость “телемедицины” в РоссииРазвитие телемедицины в России необходимо по ряду причин и, более чем в любой другой развитой стране, должно опираться на учет многолетних традиций эшелонированной медико–санитарной помощи, больших расстояний, трудностей оснащения всех медицинских учреждений современной диагностической и другой медицинской техникой. 1. Разрыв между уровнем диагностики в сети практического здравоохранения и в ведущих медицинских центрах России больше, чем в Германии, Франции или США. Десять лет назад это было связано с большой разницей в уровне оснащения, сегодня – с системным кризисом здравоохранения, резким сокращением финансирования, буквальным «отрывом» периферии от центра. 2. Социально–экономические изменения в стране сделали диагностическую и консультативную помощь населению регионов со стороны центральных клиник практически недоступной, притом что ресурсы ведущих медицинских центров вполне позволяют оказывать эту помощь. Затраты на приезд в Москву становятся сравнимыми, а подчас и превосходят саму стоимость диагностики и лечения. Социальное напряжение в регионах и их претензии к центру растут, способствуя и росту центробежных тенденций. 3. В случае, если заболевание попадает в разряд бюджетной или страховой медицины и обходится больному бесплатно, пациент обычно находится в региональной клинике 10–15 дней и в результате диагностики устанавливается, что ему могут помочь только в центре. Он направляется в центр, госпитализируется, и процесс диагностики повторяется в течение тех же 10 – 15 дней. Это неоправданное расходование ресурсов может быть предотвращено за счет дистанционного консилиума при унификации диагностических процедур на базе современной техники и полноценной передачи диагностической информации. 4. Между тем страна связывалась воедино разными способами, в т.ч. и эшелонированной системой медицинской помощи как в годы мира. так и войны. Это было основой военно – медицинской доктрины периода ВОВ, специализированной помощи в послевоенные годы. Эта психология воспринята народом. Сегодня эта доктрина разрушена, управленческая вертикаль разрушена. Но разрушена и методологическая вертикаль медицинской помощи, разрушено единство научного сообщества.[7] Телемедицина позволяет компенсировать значительную часть потерь, но больше того, она компенсирует это не на прежнем, а на качественно новом уровне телекоммуникаций и неизмеримо больших возможностей быстрого получения , обработки, передачи и анализа больших массивов информации, что делает качественно новым и уровень диагностики болезней, изменяет связи центра и периферии без простого патронажа со стороны центра (в отношении науки). Это скачок в новую информационную эпоху, причем вполне вероятно, что в России телемедицина даст даже больший эффект, чем за рубежом, именно в силу наших традиций и менталитета. При этом могут быть использованы традиционные преимущества системы здравоохранения, при которой звенья первичной медико–санитарной помощи (ПМСП) выдвигаются как можно ближе к населению, туда, где люди живут и работают, а специализированная и высококвалифицированная помощь оказывается в тех городах, где для организации такой помощи имеются финансовые и техническое возможности и где численность населения обеспечивает достаточное количество сложных клинических случаев заболеваний. Это будет не простая компенсация прошлых функций, а перевод их на качественно новый технический и методологический уровень (равный переходу от писем и курьеров к современному телефону, телевидению и пр.). Реализация проекта “Телемедицина” позволит повысить уровень медико–санитарной помощи населению, обеспечить ускоренный рост научно–практического потенциала медицинских учреждений регионов.[17] Задачи здравоохранения, решаемые с применением телемедицинских технологийВозможности использования телемедицины разнообразны и раскрываются по мере накопления опыта, они, несомненно, могут оказать значительное воздействие на решение всех функций системы здравоохранения: на развитие и координацию науки, профилактику заболеваний, экстренную и плановую помощь при заболеваниях, подготовку и усовершенствование кадров, маневрирование материально–техническими ресурсами, управление системой и повышение эффективности ее функционирования как в чрезвычайных ситуациях, так и при решении типовых задач в плановом порядке.[18] В самом общем виде можно сказать, что здравоохранение нуждается в обработке больших массивов информации и телекоммуникациях для:
Станции глобальной связиЛокальный сервер клиникиЛокальные рабочие станции
Формы применения телемедицинских технологий для решения задач здравоохранения
Приложения телемедицины в клинической практике
Требования к передаче телемединформацииДля решения большинства задач телемедицины необходим режим телеконференции, когда врачи в отдаленном медицинском учреждении и в центральном институте видят друг друга и пациента, могут разговаривать между собой. Однако этого недостаточно, поскольку основную информацию при сложных диагностических случаях врач получает в виде изображений внутренних органов или биопсий. Это — микроскопические, рентгеновские, ультразвуковые, радиоизотопные исследования и их более сложные и аналоги, как компьютерная томография, динамическая ангиография. Поэтому системы телемедицины (СТМ) должны быть готовы к передаче (без потери качества) следующих видов информации: изображения, получаемые с диагностической аппаратуры, аналоговые сигналы, таблицы закодированной информации и/или свободный текст.[16] Необходимы единые стандарты для объединения разнородных форматов изображений и создания единого цифрового набора для его дальнейшей пересылки. Существующие в Германии "Sienet", в США "PAКS" и другие еще не удовлетворительны по "интеллектуальной" наполненности , поэтому аналогичные подходы развиваются в России (в МГУ, ИКИ и др.) на уровне, заметно превосходящем упомянутые коммерческие системы. Требования к аппаратуре для передачи и воспроизведения изображений высоки. При воспроизведении компьютерно—томографических, рентгеновских и ультразвуковых изображений необходимы не менее 256 градаций "серого" цвета. Высокой должна быть и скорость передачи изображений. Поэтому во избежание быстрого морального старения системы необходимо закладывать скорость передачи порядка 2,048 мБит/с. Существенную часть информации о больном составляют аналоговые сигналы (ЭКГ, ЭЭГ, реограммы и др.), которые практически повсеместно эти кривые оцифровываются до введения в компьютер. Частотный диапазон всех физиологических сигналов не превышает 1 кГц, обычно у одного пациента регистрируется несколько (от 2 до 5) аналоговых кривых. Здесь будет требоваться разработка протоколов обмена информацией и стандартов на форматы передачи данных. Таблицы закодированной информации не будут составлять большого объема и не потребуют скоростей выше, чем при передачи изображений. Основные трудозатраты потребуются на формализацию медицинских данных и унификацию протоколов обмена информацией. Иначе будут неизбежными разночтения (а в результате — повторение диагностики) при переходе пациента из одного лечебного учреждения в другое. Передача свободных текстов не предъявляет особых требований к системе передачи информации, но избежать передачи свободных текстов не удастся, т.к. не вся медицинская информация может быть формализована и закодирована.[15] Для эффективной диагностики заболеваний (особенно хирургических) на одного пациента требуется получение от 3 до 20 изображений разного характера. Так, например, для диагностики опухолей печени и поджелудочной железы требуются компьютерно—томографическое, ультразвуковое, ангиографическое исследования одновременно. Для диагностики сердечных и сосудистых заболеваний необходимы рентгеновские, магниторезонансные, ангиографические исследования. Анализ возможности передачи медицинских данных существующими программно – аппаратными средствамиПри организации передачи данных от медицинского диагностического оборудования возникает ряд технических проблем, связанных с высокими требованиями предъявляемыми к качеству передаваемой информации. Эти проблемы можно разделить на три основные группы:
Первая проблема связана в первую очередь с психологией восприятия специалистами – врачами результатов получаемых от медицинских диагностических установок, т.е. они чаще всего, не подготовлены к работе с альтернативными вариантами предоставления медицинской, такими как, например, изображение на мониторе персонального компьютера. В связи с этим информация, с которой предполагается работать на персональных компьютерах, должна быть предоставлена в «привычном» для специалистов виде. Кроме того, программа обработки информации, должна быть простой в использовании и интуитивно понятной, что позволит сократить время адаптации и обеспечить быструю возможность перехода к работе с новыми методами предоставления медицинских данных. Вторая проблема связана с тем, что не существует единого стандарта формата предоставления и хранения медицинских данных. Фирмы – разработчики медицинского оборудования основываются на собственных стандартах, которые закрыты, зачастую несовместимы с аналогичными системами других фирм, и могут изменяться в последующих разработках и модификациях уже существующего оборудования. Попытки стандартизирования форматов хранения и отображения медицинских данных привели к появлению нескольких стандартов, наиболее известным из которых является DICOM3, но которые всеобщего распространения не получили. Исходя из всего выше сказанного, можно заключить, что каждая медицинская диагностическая установка требует индивидуального подхода для обеспечения возможности передачи информации. Также существует ряд проблем возникающих при попытках обеспечения высокого качества передаваемой медицинской информации, связанных с тем, что современные программно – аппаратные средства не специализированы для передачи данных подобного рода. Это накладывает определенные требования к подбору оборудования для передачи информации из медицинской диагностической аппаратуры на персональные ЭВМ. Специализированных (стандартных) программных средств, предназначенных для обработки медицинской информации (изображений) на персональных ЭВМ на данный момент практически не существует. Использование программ общего назначения, для работы с медицинскими данными, практически невозможно. Это связано с тем, что требуется высокий уровень специальной подготовки специалистов – врачей, и требования, предъявляемые к персональным ЭВМ, для установки программ такого класса, неоправданно высоки, что практически невозможно из-за неоправданно высоких материальных и временных затрат. Третья проблема связана с ограничениями, накладываемыми на передаваемую информацию, современными средствами связи. Медицинские данные (изображения, звук, видео) невозможно передавать в «реальном времени» по современным каналам связи, с тем качеством, которое требуется для удовлетворительной работы специалиста. Объемы информации требуют разработки специальных алгоритмов сжатия данных и выработки новых методик передачи информации. Предлагаемые методы решения вышеперечисленных проблем описаны в настоящем дипломном проекте на базе подключения для передачи данных ультразвуковой диагностической установки ALOKA SSD – 650 к персональному компьютеру с последующей передачей данных по компьютерной сети. Подключение ультразвуковой медицинской диагностической установки ALOKA SSD - 650В связи с тем, что для осуществления удаленных консультаций необходимо качественная передача данных от медицинских установок к специалистам, к оборудованию захвата, передачи и отображения информации предъявляются определенные требования, которые будут рассмотрены ниже. Общая схема передачи изображения от ультразвуковой диагностической установки к врачу – консультанту представлена на рис 1.
рис. 1 Общая схема передачи изображения от УЗИ к врачу - консультанту. Исходя из схемы, можно выделить основные рабочие блоки:
Основными предпосылками для создания данной схемы послужило то, что захват изображения с медицинских установок (в данном дипломе – ультразвуковая диагностическая установка (в дальнейшем УЗИ)), осуществляется через frame grabber HI*DEF Plus LF фирмы IMAGRAPH. Который установлен в компьютере первичного пользователя подсоединен к видеовыходу УЗИ. Первичный пользователь, осуществляющий управление УЗИ, обеспечивает захват изображения с УЗИ и передачу его на персональный компьютер. Далее с персонального компьютера первичного пользователя осуществляется передача изображения по сети до конечного пользователя. В случае необходимости, через сеть может быть организована телеконференция между первичным и конечным пользователями. Предусматривается также передача изображения в базу данных локальной сети первичного пользователя с последующей дальнейшей пересылкой в базу данных сети конечного пользователя, если осуществляется консультация специалистов в различных медицинских учреждениях. Или в общую базу данных локальной сети одного медицинского учреждения, в том случае, когда первичный и конечный пользователь работают в рамках одного медицинского учреждения. Далее будут рассмотрены отдельные блоки данной схемы. Ультразвуковая
диагностическая
установка
|
Общие сведения: | |
Метод сканирования: |
|
Режим отображения: |
|
Регулировка чувствительности: | |
Усиление (GAIN): | Макс. 90 дБ, регулируется непрерывно |
Временная компенсация чувствительности (STC): | 11 – точечные скользящие регуляторы. |
Контраст: | 7 переключаемых степеней, независимых для режимов В и М. |
Градации серого: | 64 уровня. |
Емкость памяти изображения: | 512 х 512 х 6 бит. |
Обработка изображения: | |
АРУ (AGC): | Режимы В и М, непрерывная регулировка. |
(FTC): | Вкл./Выкл. для режима М. |
Усиление края (Edge Enhance): |
3 – шаговое переключение. |
Последующая обработка (Post – Processing) |
5 видов выбираемых кривых |
Направление изображения: | Возможно изменение в поперечном и продольном направлениях (только режим В) |
Знаковое отображение: | С использованием всей буквенно – цифровой клавиатуры. |
Режимы автоматического отображения: | Дата и время, данные зонда (основная частота), установка усиления, диапазон отображения, фокальные области, данные измерения и расчета и пр., сегмент шкалы серого, метки шкалы. |
Другие режимы отображения: | Метка тела (16 картин), направление пункции, курсор режима М. |
Функции измерения: | Расстояние, площадь, окружность, объем, скорость, временной интервал, размеры. |
Функции расчета: | Анализ левожелудочковой функции, акушерские расчеты (возраст плода, оценка веса плода), доплеровский анализ, отношение, процентный стеноз, гистограмма. |
Просмотровый монитор: | 9 дюймов по диагонали. |
Питание: |
115/120/220/240 B10%; 50/60 Гц, 420 ВА. |
Вес: | Приблизительно 180 кг. |
Требования к безопасности: | Соответствуют IEC 601 – 1, класс 1, тип В. |
Принцип работы устройства построен на доплеровском эффекте. Считывающий элемент содержит пьезоэлементы (матрицу элементов), которые генерируют сигнал с частотой 2 – 7,5 МГц (стандартный – 3,5 МГц). Отраженный сигнал показывает поверхность отражения (стенки тканей и сосудов). За счет того, что скорость звука различается в разных средах, наблюдаемый результат показывает эквивалент скорости прохождения в данной среде. С этим же связаны и получаемые на изображении полутона. Не смотря на то, что УЗИ видит только «стенки», оно работает только в сплошной среде. Небольшие полости огибаются, более обширные не видны. Отраженный сигнал принимается линейкой датчиков, которые и формируют сигнал структур на пути прохождения сигнала.
Датчик формирует электрический сигнал. Все современные УЗИ – устройства снабжены цифровой памятью. Матрица датчика содержит ~300 элементов. Учитывая частоту развертки и количество принимаемых сигналов мы получаем сигнал, сравнимый по качеству с телевизионным. Более высокое качество практически не достижимо за счет дребезга длины волны.
Полученный сигнал разворачивается построчно и пишется в цифровую матрицу. Обычно используются несколько матриц – основная и несколько дублирующих. Далее сигнал преобразуется в ЦАП, и в результате на выходе мы наблюдаем телевизионный сигнал на мониторе устройства. Видеосигнал также поступает на коммутационную панель. На коммутационной панели обычно присутствуют несколько выходов видео информации, такие как:
Стандартный видео сигнал формата CR170.
Видеосигнал в формате RGB + Y.
В данной установке мы имеем разъем стандартного видео, и разъем видео VTR, а также выход для многоформатной камеры. Сигнал стандартного видео подается на frame grabber. Обычно желательно использовать систему 2 канальной передачи данных. 1-й канал используется для передачи обзорного видео сигнала. 2-й для захвата качественной картинки, которая позволит производить какие – либо измерения с полученным результатом и делать какие – либо выводы о состоянии обследуемого пациента.
Возможность 2 канальной передачи данных осуществляется несколькими способами:
Сигнал «разводится» BNC тройником. (Наихудший вариант из-за потери качества)
Использование двух frame grabber’ов, медленным, но высококачественным, для получения изображений хорошего качества, и быстрым, использующимся для получения обзорного видеосигнала.
Использования двухвходового frame grabber’а.
Описание одного из возможных frame grabber’ов представлено ниже.
Для согласования персонального компьютера с УЗИ наиболее часто используются устройства захвата изображения – frame grabber’ы. Для получения качественных изображений и уменьшения потерь сигнала при передачи, к данным устройствам предъявляется ряд требований:
Возможность захвата стандартного видео сигнала: черно – белого или RGB сигналов, или захват сигналов «укороченных» форматов;
Стандартная синхронизация;
Возможность подстройки яркости и контрастности.
Одним из возможных вариантов, является frame grabber, описанный ниже.
Устройство согласования персонального компьютера с УЗИ представляет собой frame grabber HI*DEF Plus LF фирмы IMAGRAPH. Он осуществляет захват видеоизображения со стандартного видеовыхода УЗИ. Оцифрование полученного сигнала и преобразование в стандартный цифровой видео сигнал формата MPEG3 или сохранения кадра в виде картинки, форматов BMP, JPEG, TIF, PCX или, если захват картинки осуществляет программа диагностики, то в специализированном формате.
HI*DEF Plus LF фиксирует изображения из любого аналогового источника видеосигнала с высокой точностью и качеством, предоставляет диагностически - качественные изображения для программы коррекции изображения. Некоторые из этих программ включают медицинское отображение типа Teleradiology и PACS, а также сбора данных из компьютерных рабочих станций с высоким разрешением. Самое высокое качество изображения гарантируют режимы HI*DEF: 0.5 ns pixel jitter, 50 dB – отношение сигнала к шуму, минимальная нелинейность, и авто - стабилизация температуры.
Bus | ISA |
|
Pixel Rate | Up to 30 MHz | |
Horizontal Frequency | Up to 25 kHz | |
Inputs | Up to 4 | |
Memory | 2 MB | |
Pixel Jitter | ±0.5 ns | |
vBits per Pixel | 8 bits | |
External Trigger | Yes | |
Software Platforms |
Windows 95 |
Изображения, переданные в персональный компьютер, сохраняются в определенном специализированном формате. Этот формат подразумевает сохранение в файле изображения дополнительной информации о пациенте, исследовании, физических параметрах изображения и т. п.. Структурная схема данного формата представлена на рис. 2.
рис. 2 Формат файла изображения.
Два килобайта в данном файле выделяются под информационное поле. В этом поле содержится:
Идентификация пациента;
Режимы, в которых было получено изображение;
Размер матрицы изображения Nx, Ny;
Дата исследования;
Разрешение изображения (бит/пиксель);
Индивидуальный номер изображения;
Специализированная информация.
(Полная информация о содержании информационного поля представлена в приложении 1).
Далее следует матрица значений, содержащая в себе само изображение в специализированном формате.
Имя файла изображения, тоже имеет специализированный формат, показанный на рис.3.
рис. 3 Формат заголовка файла изображения.
В имени файла, первый символ ( i или p ) указывает на метод сохранения файла. ( p – с сжатием, i – без сжатия ). Последующие 7 символов являются уникальным номером пациента или исследования (в зависимости от того, где применяется данная программа). В расширении файла, первый символ указывает на номер исследования, последующие две указывают на номер среза (измерения).
Основные требования, предъявляемые к персональным компьютерам, осуществляемым первичную обработку данных, с дальнейшей их пересылкой по сети можно разделить на 3 группы:
Осуществление быстрой и качественной передачи данных из компьютерного томографа в персональный компьютер.
Возможность первичной обработки и визуализации полученных данных.
Осуществление быстрой передачи данных в компьютерную сеть для осуществления дальнейшей обработки.
В компьютере должна быть установлена система, обеспечивающая возможность организации телеконференции с удаленным пользователем в реальном времени. Обеспечена возможность подключения печатающего устройства и устройства архивации данных. Очень высокие требования выдвигаются к визуализации изображения, полученного с компьютерного рентгеновского томографа. Разрешение картинки должно быть не менее 1280 х 1024, и цветностью в 16 тыс. цветов (256 градаций серого). Для обеспечения возможности быстрого отображения, видеокарта должна содержать не менее 8 Мбайт памяти. Монитор должен поддерживать данное разрешение и обеспечивать частоту развертки не менее 75 гц. Размер зерна не более 0.26 dpi, и иметь размер диагонали не менее 15 дюймов. Необходимость обеспечения быстрой обработки данных должно быть обеспечено за счет высокопроизводительной системы на базе микропроцессора Pentium II, с тактовой частотой не менее 500 МГц, наличие 128 и более Мбайт памяти. Для временного хранения информации в персональном компьютере должен быть установлен жесткий диск размером не менее 3.2 Гбайта, поддерживающий стандарт Ultra SCSI2. Для обеспечения надежности передачи и сохранности информации к персональному компьютеру должен быть подключен источник бесперебойного питания. Для высокоскоростной передачи данных по сети, в персональном компьютере должна быть установлена сетевая карта со скоростью передачи не менее 10 Мбит/сек. Для обеспечения телеконференции в компьютере должен быть установлен frame grabber с поддержкой формата сжатия видео сигнала MJPEG и встроенным звуком. Для обеспечения возможности архивации данных в нештатных ситуациях в ПК должно быть предусмотрено подключение ZIP драйвера, для сохранения информации на магнитном ленточном носителе. Исходя из всего вышесказанного, приблизительная конфигурация ПК первичной обработки информации представлена в таблице 1.
Для обеспечения работы ПК на нем устанавливается операционная система WindowsNT Workstation. А так же программное обеспечение управления видеоконференциями (Microsoft NetMeteeng или подобная). А также специализированна независимая сервисно – диагностическая консоль для управления и обработки поступающей медицинской информации.
Таблица 1 Комплектация компьютера первичного пользователя.
Основная комплектация: |
|
Корпус | ATX 80List (InWin A500) |
Processor | Pentium II 400 |
Matherboard | ASUS P2B - D |
Ram | 256 Mb |
HDD first | SCSI WDE 4550 – 0025 |
HDD second | SCSI Wde 18300 – AV0038 |
SCSI controller | ADAPTEC AHA – 8945 |
VideoCard | I740 |
Network Card | Fast EthernLink XL PCI TX – 3C9005B – TX |
Monitor | ViewSonic “GA655” |
Mouse | Стандартная мышь PS/2 |
Видеоконференции: |
|
Плата | miroVideo DC30 plus |
Камера | MUSTEK VidCam |
Дополнительное оборудование: |
|
Frame Grabber | IMAGRAPH HI*DEF Plus LF |
Локальная вычислительная сеть представляет собой высокоскоростное соединение различных устройств, таких как сервера, рабочие станции и периферийные устройства (принтеры, модемы и т.п.), с общей средой передачи. Что позволяет распределять информацию и ресурсы ЛВС между пользователями.
Выбор топологии и типа ЛВС, а так же сетевых стандартов зависит от задач предъявляемых к ЛВС института хирургии.
Локальная сеть института предназначена для:
Обеспечения общего доступа к базам данных и другой медицинской информации;
Передача и обработка видеоинформации;
Обеспечение аудиовизуального взаимодействия сотрудников института в реальном времени. с помощью системы видеоконференций;
Предоставление доступа к ресурсам Интернет;
Предоставление услуг электронной почты.
Отличительной особенностью данной сети является необходимость передачи видеоинформации и взаимодействие сотрудников с помощью видеоконференций. Данные приложения предъявляют жесткие требования к пропускной способности и скорости передачи, создавая значительную нагрузку на локальную сеть.
Изображение в аналоговом видео состоит из 625 для PAL/SECAM (525 для NTSC) строк и состоит из 2 полей по 312,5 (262,5). За 1 секунду передаются 25 (30) кадров или 50 (60) полей. Полоса, занимаемая видеосигналом, достигает 6 МГц.
В цифровом ТВ принято разбиение одного ТВ кадра на пиксели, что наиболее удобно для дальнейшей цифровой обработки. Каждый ТВ кадр разбивается на 768 точек по горизонтали и 576 точек по вертикали для сигналов PAL/SECAM (640 на 480 для NTSC) при стандартном для ТВ соотношении ширины к высоте изображения равным 4:3. Таким образом, получается два полукадра (поля) с разрешением 384Х288 (320Х240 для NTSC) при частоте 50(60) полей или 25(30) кадров в секунду. Для передачи цвета используется принцип сложения основных цветов: красного(R), синего(B) и зеленого(G) цветов. Цветной ТВ сигнал состоит из яркостной (Y) и двух цветоразностных (R-Y и B-Y) составляющих. Для этого используя специальные схемы суммирования из трех составляющих (Y, R-Y и B-Y) восстанавливают исходные составляющие цвета красный (R), синий (B) и зеленый (G) цвета, которые подаются на соответствующие электронные пушки кинескопа.
Для полного восприятия информации о яркости и цвете необходимо каждую точку изображения передавать как минимум 256 уровнями или 8 битным кодированием. Каждая точка цветного видеоизображения должна кодироваться 24 разрядным словом (8 бит Х 3 составляющие) или по компьютерной терминологии 24 бит/пиксель (24bpp). Таким образом, перемножив 24х768х576х25 получаем цифровой поток в 265420800 бит/сек или около 265 Мбит/сек для сигналов PAL/SECAM (221 Мбит/сек NTSC).
Практически кодирование ТВ сигнала происходит несколько иначе, учитывая, что для передачи ТВ изображения используется формат Y, R-Y, B-Y, то по сигналу Y производится полное кодирование (8 бит по 768х576 pics), а по сигналам R-Y и B-Y кодируется либо половина (8 бит по 384х288 pics), либо четверть (8 бит по 192х144 pics) для каждого из сигналов R-Y и B-Y. Для простоты используется запись в виде дроби 4:2:2 (иногда 8:4:4) или 4:1:1 (8:2:2). Следует иметь в виду, что данная дробная запись говорит о количественном соотношении кодируемых точек. Разрядность кодирования каждой точки всегда равна 8, иногда и больше. Перемножив полученные данные, получаем цифровой поток до 177 Мбит/сек для разрешения 4:2:2 и около 111 Мбит/сек для 4:1:1 (Все данные приведены для разрешения PAL/SECAM 768х576х25 кадр/сек).
Для ограничения цифрового потока видеоданных используют алгоритмы сжатия(компрессии). В основном используется два вида очень схожих между собой метода компрессии. Это метод M-JPEC, основанный на графическом формате JPEG, и MPEG (в разных вариациях). Оба метода основаны на дискретно-косинусном преобразовании (DCT) изображения разбитого на блоки. Разница этих методов заключается в исключении избыточной информации из исходного видеоизображения. Если M-JPEG использует только внутрикадровую избыточность (так называемую пространственную), то формат MPEG дополнительно использует и межкадровую избыточность (временную). Сжатие характеризуется коэффициентом компрессии - качественным соотношением между исходным и полученным кадром исходя из необходимости сохранения качества исходного изображения и ограничения цифрового потока видеоданных. На практике применяются коэффициенты от 1:1 (без сжатия) до 20:1 (сжатие исходного кадра в 20 раз). Это соответствует качеству ТВ сигнала от эталона (1:1) до стандарта VHS (20:1).
С учетом сжатия видеосигнала, формату видеозаписи VHS(стандарт PAL, оцифровка 768х576, 384х576 или 384х288, 8 бит 4:2:2) соответствует цифровой поток до 24 Мбит/сек.
Формату видеозаписи SVHS или DV/DVCAM (Стандарт PAL, оцифровка 768х576 8 бит 4:2:2 для SVHS и 4:1:1 или 4:2:0 для DV/DVCAM/DVCPRO) соответствует цифровой поток от 24 Мбит/сек.
Система видеоконференций с разрешением 640х480х25(30) кадров/сек дает цифровой поток 128-512 кбит/с (0,12 – 0,5 Мбит/сек). Рекомендуется для проведения видеоконференций уровня предприятия использовать полосу пропускания 384 кбит/с (0,4 Мбит/сек).
Соответственно, общий цифровой поток ~ 25 Мбит/сек.
Локальная вычислительная сеть способна обеспечить высокую пропускную способность, а следовательно, высокое качество изображения и звука. Однако традиционные ЛВС представляют собой сети с разделяемой средой передачи, т.е. когда одно из устройств передает данные в сеть, все остальные должны ждать окончания передачи, не делая попыток передать в сеть свои данные(доступ сетевых устройств к среде передачи регулируется сетевыми стандартами). Однако широкая полоса пропускания используется и для передачи других потоков данных, а соответственно, возможны задержки передачи, к которым видеопотоки крайне чувствительны, поэтому оптимальным решением является коммутируемая ЛВС. Преимущества коммутации заключаются в сегментировании сетей - делении их на более мелкие фрагменты со значительным снижением числа станций в каждом сегменте. Изоляция трафика в небольшом сегменте приводит к многократному расширению доступной каждому пользователю полосы, а поддержка виртуальных ЛВС (VLAN) значительно повышает гибкость системы. Для обеспечения передачи цифрового потока без задержек необходима полоса пропускания 100/1000 Мбит/сек. Оптимальным решением является сеть Fast Ethernet(10/100Base-TX)/Gigabit Ethernet (1000Base-SX). На уровне сегмента обеспечивается скорость передачи 100 Мбит/сек, на уровне здания 1000 Мбит/сек.
Данная сеть характеризуется следующими параметрами:
Топология сети – “звезда”;
Архитектура сети: “Клиент - Сервер/Файл – Сервер”;
Основной сетевой протокол TCP/IP;
Физическая среда передачи – кабель на основе неэкранированной витой пары (UTP 5 категории) и многомодовый оптоволоконный кабель.
Коммутаторы с высокоскоростной шиной и разделяемой памятью.
Возможность объединения сетей Fast Ehernet и ATM
1. Программное обеспечение для управления и работы с серверами и рабочими станциями:
Сетевая ОС - Windows NT Server 4.0
Клиентская ОС - Windows NT Workstation 4.0
Сервер БД - MS SQL Server 7.0
Почтовый сервер - MS Exhange Server 5.5
В качестве программного обеспечения для работы с базами данных и сетью можно использовать пакет MS Back Office - 4.0 (Включает в себя NT Server, SQL Server 7.0 Exhange Server 5.5, SMS 2.0, IIS, SNA Server)
2. Программное обеспечение для управления сетью.
MS SMS 2.0 - Мониторинг сети и рабочих станций, управление рабочими станциями, установка ПО по сети
Программное обеспечение фирмы 3Сom - Transcend Network Control Services(включает сл. продукты Transcend Enterprise Manager и Transcend Workgroup Manager), Traffix Manager - позволяют управлять сетевыми устройствами, анализировать трафик и статистику приложений, управлять работой сети(реализуется редствами протокола RMON/RMON2). Все программное обеспечение работает под управлением Windows NT Server, Transcend Network Control так же работает под управлением Sun Solstice Domain Manager.
Сетевое оборудование фирмы 3Com: Коммутаторы серии: SuperStack II 3300 для Ehernet 10/100 Base-TX (витая пара 5 категории, разъем RJ 45), SuperStack II 9000/9300 для Ehernet 100/100 Base-SX (многомодовое оптоволокно).
Персональный компьютер консультанта использует конфигурацию, аналогичную той, которая была использована для персонального компьютера первичной обработки данных. За исключением установки в ПК сетевой карты для работы с компьютерным рентгеновским томографом и увеличением быстродействия для более детальной и оперативной обработки принимаемой информации, а так же работы с базой данных. Рекомендуемая конфигурация представлена в таблице 2.
Таблица 2 Комплектация персонального компьютера консультанта.
Корпус | ATX 80List (InWin A500) |
Processor | Pentium II 500 |
Matherboard | ASUS P2B - D |
Ram | 256 Mb |
HDD first | SCSI WDE 4550 – 0025 |
HDD second | SCSI Wde 18300 – AV0038 |
SCSI controller | ADAPTEC AHA – 8945 |
VideoCard | I740 |
Network Card | Fast EthernLink XL PCI TX – 3C9005B – TX |
Monitor | ViewSonic “GA771” |
Mouse | Стандартная мышь PS/2 |
Видеоконференции: |
|
Плата | miroVideo DC30 plus |
Камера | MUSTEK VidCam |
Для эффективной работы с полученными из УЗИ изображениями необходимо применять программные средства, которые бы обеспечили возможность обработки изображения и при этом не требовали высокой квалификации обслуживающего их персонала. Данная программа была разработана в РНЦ «Курчатовский институт» и называется CTsoft. В создании этого программного продукта и приняла участие и наша группа дипломников. В размерах данного проекта были предоставлены алгоритмы обработки изображения, позволяющие преобразовывать полученные картинки по специализированным алгоритмам – фильтрам. Данные фильтры предназначены для сглаживания и выделения областей на изображении. Рассматривалось четыре вида фильтров:
Фильтр сглаживания – Smooth;
Фильтр усредненного сглаживания – Mean;
Фильтр подчеркивания контуров на основе матрицы размером 3*3 пикселей – Contour;
Фильтр обработки полутонов – Shading.
Все вышеуказанные фильтры работают по алгоритмам на базе матрицы размером 3*3 пикселей. Для описания алгоритмов фильтрации используем условные обозначения для каждого элемента данной матрицы см. таблицу 3.
Таблица 3 Матрица пикселей, использованная для построения фильтров.
A |
B |
C |
D |
E |
F |
G |
H |
J |
Для того, чтобы можно было бы сравнить действия этих фильтров, далее будут показано изображение, полученное путем передачи данных из УЗИ в персональный компьютер. Исходное изображение показано на рис. 4. И в конце данного раздела будет показано действие нескольких фильтров для отображения определенных областей на данном изображении.
рис. 4 Исходное изображение.
Фильтр сглаживания используется для уменьшения общей контрастности изображения. Основной алгоритм, использующийся в данном фильтре:
Изменение изображения при использовании данного фильтра показано на рис. 5.
рис. 5 Фильтр сглаживания.
Фильтр усредненного сглаживания используется для того, чтобы устранить дефекты изображения, могущие появиться в процессе оцифровки. Одним из самых распространенных дефектов является появление в темной области светлого пикселя или наоборот. Данный дефект устраняется при помощи алгоритма:
Пример использования данного фильтра представлен на рис. 6.
рис. 6 Фильтр усредненного сглаживания.
Фильтр подчеркивания контуров на основе матрицы 3*3 пикселя используется для отображения на изображении областей имеющих «ярко выраженную» границу с другими областями. Алгоритм, использующийся для получения данных областей:
Пример использования данного фильтра показан на рис. 7.
рис. 7 Фильтр подчеркивания контуров.
Фильтр обработки полутонов используется для построения псевдорельефа. Алгоритм используемый в данном фильтре:
Результат применения данного фильтра к изображению показан на рис. 8.
рис. 8 Фильтр обработки полутонов.
Часто встречается ситуация, когда использование одного фильтра не дает желаемого результата. В таких случаях бывает необходимо последовательное использование нескольких фильтров для получения желаемого результата. В данном разделе мы рассмотрим две комбинации последовательного использования фильтров представленных на рис. 9 и рис. 10. На рис. 6 рассматривается комбинация фильтров: сглаживания – усредненного сглаживания – подчеркивания контуров. На рис. 7 рассматривается комбинация фильтров: сглаживания – усредненного сглаживания – обработки полутонов.
рис. 9 Smooth - Mean - Contour.
рис. 10 Smooth - Mean - Shading.
Реформа системы здравоохранения обеспечила рывок в развитии диагностических служб региональных клиник, но одновременно и привела к утере ряда несомненных достижений советского здравоохранения. В частности практически полностью разрушена целостность системы, в результате чего жители регионов не в состоянии получить высококвалифицированную помощь, которая осталась сосредоточенной в центральных московских клиниках. Развитие проекта «Телемедицина» направлено на сохранение и усиление положительных аспектов реформ и на нивелирование возникших негативных последствий.
Объединение клиник страны в медицинскую информационную сеть позволит организовать взаимодействие опытных специалистов центра с начинающими докторами регионов. Работа в этом направлении уже начата, однако до сих пор внутригоспитальные сети, позволяющие обмениваться информацией о больном, находятся на уровне научных разработок. До сих пор не существует единый стандарт формирования пакета медицинской информации, включая изображения (рентген, УЗИ, КТ и т.п.). Только единичные клиники работают над построением сетей, собирающих информацию.
Дипломная работа посвящена решению задачи подключения к сети ультразвукового медицинского диагностического аппарата ALOKA SSD - 650, на выходе которого появляется изображение (УЗИ). Главной задачей работы была передача изображения через локальную сеть в другую часть института. Были разработаны и реализованы алгоритмы предварительной обработки изображений. На момент начала исследования в Институте хирургии им. А. В. Вишневского была начата работа по прокладке оптоволоконного кабеля между двумя зданиями: главным корпусом (в котором расположены диагностические службы) и лаб. Кибернетики (в которой расположены вычислительные мощности и внешние коммуникации). На сегодняшний день фрагмент сети, обеспечивающий передачу изображений, построен, испытан и реально функционирует.
В результате проведенного исследования получены следующие выводы и результаты.
Построена система передачи изображения из ультразвуковой диагностической установки в ПК с последующей передачей по компьютерной сети;
Полученные и переданные изображения были оценены медицинскими экспертами как адекватные;
Установлено,
что пропускная
способность
коммуникационного
канала на удаленных
моделях связи
должна быть
не менее
64 кб/с;
Установлено, что разрешающая способность при регистрации изображения должна составлять не менее 768 * 586, при отображении серого клина разрешение должно составлять не менее 10 бит.
A CASE OF GASTROSCHISIS, Dr. German Quevedo P, Santa Cruz de la Sierra, Bolivia, June 1 st, 1997.
ELEMENTS OF SUCCESS IN TELEMEDICINE PROJECTS, Mary Moor, Ph.D., October, 1996.
EUROPEAN COMMITTE FOR STANDARDIZATION.
Implementing a Telemedicine Programm Across the Mexican-U.S. Border, 1996.
TELEMEDICINE: ITS PLACE ON THE INFORMATION HIGHWAY, Frederic Williams and Mary Moor, 1995.
V.D. The Virtual Doctor - медицинские ресурсы Internet в Санкт-Петербурге.
Видеоконференции в российских клиниках. Е. Тимин, В. Столяр, А. Сильков. Журнал «Открытые Системы» Изд: «Открытые Системы», 1999г.
Журнал «Медицинская визуализация», Выпуски 1 – 4, издательство "ВИДАР" 1999.
Журнал Американского Международного Союза Здравоохранения, "Наше Здоровье", Том 5, Выпуск 1, Зима 1997, Раздел "Развитие информационных технологий", Марион Болл и Джудит Дуглас, Статья "Медицинская информатика: там, где встречаются технология и медицина", с. 18.
Журнал Американского Международного Союза Здравоохранения, "Наше Здоровье", Том 5, Выпуск 2, Весна 1997, Раздел "Активное сотрудничество", Статья "Бишкек-Канзас-Сити", с. 39.
Информационные технологии в охране здоровья, Санкт-Петербург, 1997.
Комплекс ИНФОРМАЦИОННО-ВЫЧИСЛИТЕЛЬНЫХ СЕТЕЙ "Телемедицина", Проект "КИВС-МСЧ. ТП", редакция 1, Санкт-Петербург, Февраль 1997.
Программа первоочередных мероприятий по реализации программы создания системы телемедицинских услуг в Российской Федерации («Телемедицина»); Главный информационно-аналитический центр при Минздраве РФ, Управление информатизации Федерального Фонда ОМС. Москва 1998г.
ТЕЛЕКОНФЕРЕНЦИЯ GlobChat, Copyright © 1997, Julius Edlavitch M.D., В. Теплинский, Ноябрь 1997.
ТЕЛЕМЕДИЦИНА - INTERNET, Copyright © 1997, Марк Стори, В. Теплинский, Январь 1997.
ТЕЛЕМЕДИЦИНА - АМСЗ, Copyright © 1997, В. Теплинский, Февраль, 1997.
Телемедицина. Новые информационные технологии на пороге XXI века; Р. М. Юсупов, Р. И. Полонников. – СПб.:СПИИРАН, 1998. – 486с.
ФЕДЕРАЛЬНАЯ ЦЕЛЕВАЯ ПРОГРАММА «ТЕЛЕМЕДИЦИНА»: Министерство здравоохранения Российской Федерации. Министерство науки и технологий Российской Федерации. Москва 1997г.
Физика визуализации изображений в медицине; т. 2 под. ред. С. Уэбба. Москва, «Мир», 1991.
Позиция |
Название |
Значение |
Описание |
0 |
n |
360 |
Число проекций |
1 |
m |
512 |
Число отсчетов в проекции |
2 |
nx |
512 |
Число элементов в строке изображения |
3 |
ny |
512 |
Число строк в изображении |
4 |
fi |
360 |
Угол сканирования |
5 |
fi0 |
0 |
Начальный угол сканирования |
6 |
r0 |
125 |
Радиус зоны обследования |
7 |
ri |
150 |
Радиус зоны реконструкции |
8 |
xi |
0 |
X-координата центра зоны реконструкции |
9 |
yi |
0 |
Y-координата центра зоны реконструкции |
10 |
l |
110 |
Уровень окна отображения |
11 |
w |
250 |
Ширина окна отображения |
12 |
ko |
185 |
Номер объекта реконструкции |
13 |
ks |
1 |
Номер среза реконструкции |
14 |
no |
877 |
Номер объекта визуализации |
15 |
ns |
5 |
Номер среза визуализации |
16 |
alm |
5000 |
Мантисса ALFA*1000 |
17 |
alex |
-7 |
Экспонента ALFA |
18 |
pp |
400 |
Порядок регуляризации * 100 |
19 |
mk |
9 |
m*2 = 2**mk |
20 |
0 |
Тип: 0-CTSYS, 1- СРТ-1000М, 2- СТ1010 |
|
21 |
lstp |
5 |
Шаг изменения по уровню окна |
22 |
wstp |
20 |
Шаг изменения по ширине окна |
23 |
scrl |
2 |
Шаг при сдвиге изображения по вертикали |
24 |
ybig |
0 |
Начальный номер строки отображения |
25 |
rd |
0 |
Расстояние от центра до фокуса в мм/10 |
26 |
nj |
480 |
Число измеряемых проекций |
27 |
mj |
384 |
Число измеряемых отсчетов |
28 |
nkad |
32 |
Число кадров в фильме |
29 |
nsl |
100 |
Число срезов для 3D визуализации |
30 |
xw1 |
20 |
Левая X-координата |
31 |
yw1 |
65 |
Верхняя Y-координата |
32 |
xw2 |
147 |
Правая X-координата |
33 |
yw2 |
192 |
Нижняя Y-координата |
34 |
hz |
10 |
Шаг между слоями в мм |
35 |
max |
8000 |
Максимум |
36 |
min |
80 |
Минимум |
40 |
surf |
20 |
Порог плотности для выделения 3d-поверхности |
41 |
tr |
3500 |
Время повторения |
42 |
te |
150 |
неизменяемый параметр |
43 |
ti |
0 |
Время инверсии |
44 |
nsli |
9 |
Количество срезов на томограмме |
45 |
acc |
4 |
Количество накоплений |
46 |
fov |
300 |
Поле обзора |
47 |
matx |
252 |
X матрицы |
48 |
maty |
252 |
Y матрицы |
49 |
1 |
||
50 |
7 |
||
51 |
pmin |
-140 |
Минимум для обрезки перед упаковкой |
52 |
pmax |
220 |
Максимум для обрезки перед упаковкой |
53 |
ncic |
0 |
Количество полос длинной картинки минус 1 |
54 |
yloc |
0 |
Количество строк полной полосы |
60 |
sh2s |
180 |
Сдвиг для второго слоя в микронах |
61 |
sfd |
6 |
Число сдвигов для прямого БПФ |
62 |
nfd |
1 |
(*10) Делитель для спектра |
63 |
nfl |
480 |
(*10) Делитель спектр*фильтр |
64 |
sfi |
6 |
Число сдвигов обратного БПФ |
65 |
nfi |
7 |
(*10) Делитель свернутых проекций |
66 |
imgn |
300 |
(*10) Делитель для изображения |
67 |
? |
360 |
Так надо ??? |
70 |
hx0 |
x0 - координаты прямоугольника обрезки (печать) |
|
71 |
hy0 |
13 |
y0 |
72 |
hx1 |
47 |
x1 |
73 |
hy1 |
217 |
y1 |
74 |
242 |
||
75 |
128 |
||
76 |
40 |
||
77 |
128 |
||
78 |
40 |
||
79 |
12 |
||
80 |
88 |
||
81 |
230 |
||
82 |
190 |
||
83 |
128 |
||
84 |
125 |
||
85 |
128 |
||
86 |
sque |
142 |
Параметр квадрата |
89 |
3 |
Нач. отсчет (для теста каналов) |
|
90 |
568 |
Кон. отсчет (для теста каналов) |
|
91 |
6 |
Число отсчетов в калибровочных зонах |
|
92 |
39 |
Рабочая зона детектора 1 и 9 |
|
93 |
46 |
2 и 10 |
|
94 |
53 |
3 и 11 |
|
95 |
60 |
4 и 12 |
|
96 |
67 |
5 и 13 |
|
97 |
74 |
6 и 14 |
|
98 |
81 |
7 и 15 |
|
99 |
88 |
8 и 16 |
|
100 |
527 |
Калибровочная зона детектора 1 |
|
101 |
534 |
2 |
|
102 |
541 |
3 |
|
103 |
548 |
4 |
|
104 |
9 |
5 |
|
105 |
16 |
6 |
|
106 |
23 |
7 |
|
107 |
30 |
8 |
|
108 |
513 |
Темновая зона детектора 1 |
|
109 |
520 |
2 |
|
110 |
527 |
3 |
|
111 |
534 |
4 |
|
112 |
542 |
5 |
|
113 |
549 |
6 |
|
114 |
556 |
7 |
|
115 |
563 |
8 |
|
116 |
28 |
mA |
|
117 |
0 |
Угол топограммы (0-359) |
|
118 |
0 |
Длина топограммы (512/256) |
|
119 |
4590 |
Полная доза, mAs |
|
120 |
120 |
Число пикселей в 10 см. |
|
121 |
4620 |
Время сканирования (сек.*10) |
|
122 |
60 |
Доза, mAs |
|
123 |
120 |
Напряжение ,kV |
|
124 |
4 |
Наклон плоскости сканирования в градусах |
|
125 |
8 |
Толщина слоя в мм. |
|
126 |
22 |
Позиция стола пациента в мм. от начала |
|
127 |
410 |
Тип системы |
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "color.h"
#include "vectlib.h"
#include "winds.h"
#include "win2d.h"
#include "3d.h"
#include "filtr.h"
#include "config.h"
#include "ctmenu.h"
#include "setup.h"
#include "measure.h"
#include "ct.h"
#include "ct_ext.h"
#include "console.h"
#include "language.h"
#define POROG (GRAY_BASE+GRAY_LVLS*4/5)
extern int ExistWindow(WinHandle w);
extern WinHandle MainControl;
extern WinHandle H3d_view;
extern void InvRect(int x0, int y0, int x1, int y1, WinHandle w, char *s);
extern void redraw_window(WinHandle w);
extern void redraw_cw(WinHandle w);
extern void SetupLUT(DWIND *winds);
extern void Screen_Save(void);
extern Rect correct_rect(Rect r);
extern Rect Set_Rect(WinHandle w);
extern Rect Set_Sqr(WinHandle w);
extern void cell_to_pcx(char *pcx_name, GCHandle ch,
int xmax, int ymax, char *pallet);
/***********************************************************/
void Do_AddSub_Img(WinHandle w, int fl_sub)
{ GWHandle chl;
HFILE img_fil,tmp_fil;
long *L,*L1;
int *p,*p1,*p2,*p0,*pp,k,i,j,jz,nx,ny,*pq;
char *hc,*c,name[81];
char *s;
unsigned char *uhc,*pc;
Win2d *ud = h_data(w);
if(!ud->img_name || !ud->ch) return;
if(ud->frag) return;
chl = ud->ch;
s = GetFileName(GetCfgItem("image"),H_CREATE); if (*s == 0) return;
img_fil = HOpen(s,H_READ); if (img_fil == 0) return;
HLocate(img_fil,0l,2048); p = HPosit(img_fil);
L = (long*)p; nx = L[2]; ny = L[3]; ud = h_data(w);
if(nx != ud->iw) { HClose(img_fil); return;}
if(ny != ud->ih) { HClose(img_fil); return;}
if (chl == 0) { HClose(img_fil); return;}
ud = h_data(w);
uhc = (char*)&p[256+128];
if(uhc[249] != 2-ud->ps) return;
if(ud->scale2d == 1)
{
pp = h_malloc(nx*4);
pq = h_malloc(nx*4);
for (j = 0; j < ny; j++)
{ ud = h_data(w);
if(ud->ps == 2)
{ HLocate(img_fil,(long)j*nx*2+2048L,nx*2); p = HPosit(img_fil);
}
else
{ HLocate(img_fil,(long)j*nx+2048L,nx); pc = HPosit(img_fil);
for(i = 0; i < nx; i++) pq[i] = (int)pc[i];
p = pq;
}
GetGWL(chl,(short*)pp,nx,j);
for(i = 0; i < nx; i++)
if(fl_sub) pp[i] = (pp[i]-2048 - p[i])/2 + 2048;
pp[i] = (pp[i]-2048 + p[i])/2 + 2048;
PutGWL(chl,(short*)pp,nx,j);
}
h_mfree(pp); h_mfree(pq);
}
else
{ p1 = h_malloc(nx*4); p2 = h_malloc(nx*4);
p0 = h_malloc(nx*4); pp = h_malloc(nx*4);
// Image interpolation
HLocate(img_fil,2048l,nx*2);
p = (int*)HPosit(img_fil);
for (i = 0, k = 0; i < nx-1; i++, k += 2)
{ p1[k] = p[i]; p1[k+1] = (p[i]+p[i+1])/2;
}
p1[k] = p[i];
for (j = 0, jz = 0; j < ny-1; j++, jz += 2)
{ // Write 1 line
GetGWL(chl,(short*)pp,nx*2-1,jz);
for(i = 0; i < nx*2-1; i++)
if(fl_sub) pp[i] = (pp[i]-2048 - p1[i])/2 + 2048;
pp[i] = (pp[i]-2048 + p1[i])/2 + 2048;
PutGWL(chl,(short*)pp,nx*2-1,jz);
//Read 2 line
HLocate(img_fil,(long)(j+1)*nx*2+2048l,nx*2);
p = (int*)HPosit(img_fil);
for (i = 0, k = 0; i < nx-1; i++, k += 2)
{ p2[k] = p[i]; p2[k+1] = (p[i]+p[i+1])/2;
}
p2[k] = p[i];
for (i = 0; i < nx*2-1; i++) p0[i] = (p1[i]+p2[i])/2;
// Write 2 line
GetGWL(chl,(short*)pp,nx*2-1,jz+1);
for(i = 0; i < nx*2-1; i++)
if(fl_sub) pp[i] = (pp[i]-2048 - p1[i])/2 + 2048;
pp[i] = (pp[i]-2048 + p0[i])/2 + 2048;
PutGWL(chl,(short*)pp,nx*2-1,jz+1);
// Line2 to Line1
for (i = 0; i < nx*2-1; i++) p1[i] = p2[i];
}
GetGWL(chl,(short*)pp,nx*2-1,jz);
for(i = 0; i < nx*2-1; i++)
if(fl_sub) pp[i] = (pp[i]-2048 - p1[i])/2 + 2048;
pp[i] = (pp[i]-2048 + p1[i])/2 + 2048;
PutGWL(chl,(short*)pp,nx*2-1,jz);
h_mfree(p1); h_mfree(p2); h_mfree(p0); h_mfree(pp);
}
HClose(img_fil);
ud = h_data(w);
ud->x0 = (ud->iw-ud->w)/2; // Центровка
ud->y0 = (ud->ih-ud->h)/2; // изображения
redraw_cw(w);
}
/***********************************************************/
void Do_Inversion(WinHandle w)
{ int i,k; int imin,imax;
Win2d *ud = h_data(w);
WinCon *udc;
DWIND *p = &ud->dw[0];
if(!ud->img_name || !ud->ch) return;
if (p->on) { if(p->neg) p->neg = 0; else p->neg = 1;
if(!ExistWindow(H3d_view))
{ udc = h_data(MainControl);
udc->inv_prn = p->neg;
}
}
SetupLUT(ud->dw);
redraw_cw(w);
}
/***********************************************************/
// Image filtration functions
static void inch(int *u,int *v)
{int temp;
temp=*u; *u=*v; *v=temp;
}
static int f9(int *mf)
{
int *max,i,j;
for(i = 0;i < 9; i++)
{max=&mf[i];
for(j = i+1;j < 9; j++) if(*max < mf[j]) max = &mf[j];
if(max != &mf[i]) inch(max,&mf[i]);
}
return(mf[4]);
}
static int f1(int *mf)
{long s;
s=(long)mf[0]+2*(long)mf[1]+(long)mf[2]+2*(long)mf[3]
+4*(long)mf[4]+2*(long)mf[5]+(long)mf[6]+2*(long)mf[7]+(long)mf[8];
return(s/16);
}
static int f2(int *mf)
{long s;
s=(long)mf[0]+(long)mf[1]+(long)mf[2]+(long)mf[3]
+(long)mf[5]+(long)mf[6]+(long)mf[7]+(long)mf[8];
return(s/8);
}
static int f3(int *mf)
{long r1,r2;
r1 = (long)mf[0]+(long)mf[1]+(long)mf[2]-(long)mf[6]-(long)mf[7]-(long)mf[8];
r1 = r1*r1;
r2 = (long)mf[0]+(long)mf[3]+(long)mf[6]-(long)mf[2]-(long)mf[5]-(long)mf[8];
r2 = r2*r2;
return((int)(2.0*sqrt((double)(r1+r2))));
}
static int f4(int *mf)
{return( mf[4]);
}
static int f5(int *mf)
{long s;
s=(-2*(long)mf[0]+(long)mf[1]-2*(long)mf[2]+(long)mf[3]
+6*(long)mf[4]+(long)mf[5]-2*(long)mf[6]+(long)mf[7]-2*(long)mf[8])/2;
return((int)s);
}
static int f6(int *mf)
{int e,s;
s = f1(mf); e = mf[4];
if((2*e - s) > 30) e = 2*e - s;
else e = s;
return(e);
}
static int f7(int *mf)
{long s;
s=-(long)mf[0]-(long)mf[1]-(long)mf[2]+(long)mf[3]
+3*(long)mf[4]-(long)mf[5]+(long)mf[6]+(long)mf[7]-(long)mf[8];
return((int)s);
}
static int f8(int *mf)
{long s;
s=((long)mf[0]+(long)mf[1]+(long)mf[2]+(long)mf[3])/4;
return((int)s);
}
static int f10(int *mf)
{return( mf[4]);
}
static void filt(int *p1,int *p2,int *p3,int *po,int str,int nfilt)
{
int mf[9],i,tr;
str=str-1; tr=str-1;
mf[0]=*(p1+str);mf[1]=*p1;mf[2]=*(p1+1);
mf[3]=*(p2+str);mf[4]=*p2;mf[5]=*(p2+1);
mf[6]=*(p3+str);mf[7]=*p3;mf[8]=*(p3+1);
switch (nfilt)
{ case 1: *po=f1(mf); break;
case 2: *po=f2(mf); break;
case 3: *po=f3(mf); break;
case 4: *po=f4(mf); break;
case 5: *po=f5(mf); break;
case 6: *po=f6(mf); break;
case 7: *po=f7(mf); break;
case 8: *po=f8(mf); break;
case 9: *po=f9(mf); break;
case 10: *po=f10(mf); break;
}
for(i = 0; i < tr; i++)
{mf[0] = *(p1+i); mf[1] = *(p1+i+1); mf[2] = *(p1+i+2);
mf[3] = *(p2+i); mf[4] = *(p2+i+1); mf[5] = *(p2+i+2);
mf[6] = *(p3+i); mf[7] = *(p3+i+1); mf[8] = *(p3+i+2);
switch (nfilt)
{ case 1: *(po+i+1) = f1(mf); break;
case 2: *(po+i+1) = f2(mf); break;
case 3: *(po+i+1) = f3(mf); break;
case 4: *(po+i+1) = f4(mf); break;
case 5: *(po+i+1) = f5(mf); break;
case 6: *(po+i+1) = f6(mf); break;
case 7: *(po+i+1) = f7(mf); break;
case 8: *(po+i+1) = f8(mf); break;
case 9: *(po+i+1) = f9(mf); break;
case 10: *(po+i+1) = f10(mf); break;
}
}
mf[0]=*(p1+tr);mf[1]=*(p1+str);mf[2]=*p1;
mf[3]=*(p2+tr);mf[4]=*(p2+str);mf[5]=*p2;
mf[6]=*(p3+tr);mf[7]=*(p3+str);mf[8]=*p3;
switch (nfilt)
{ case 1: *(po+str)=f1(mf); break;
case 2: *(po+str)=f2(mf); break;
case 3: *(po+str)=f3(mf); break;
case 4: *(po+str)=f4(mf); break;
case 5: *(po+str)=f5(mf); break;
case 6: *(po+str)=f6(mf); break;
case 7: *(po+str)=f7(mf); break;
case 8: *(po+str)=f8(mf); break;
case 9: *(po+str)=f9(mf); break;
case 10: *(po+str)=f10(mf); break;
}
}
void Do_Filters(WinHandle w, int nfilt)
{ GWHandle chl;
int i,k;
int *po,*p1,*p2,*p3,*p4,*p5,*pn,iw,ih;
double d1,d2;
Win2d *ud = h_data(w);
if ((chl = ud->ch) == 0) return;
iw=ud->iw; ih=ud->ih;
if(nfilt == 10)
{
po = (int*)h_malloc(iw*2); pn = (int*)h_malloc(iw*2);
p1 = (int*)h_malloc(iw*2); p2 = (int*)h_malloc(iw*2);
p3 = (int*)h_malloc(iw*2); p4 = (int*)h_malloc(iw*2);
p5 = (int*)h_malloc(iw*2);
i = 2;
GetGWL(chl,(short*)p1,iw,i-2);
for(k = 0; k < iw; k++) p1[k] = p1[k]-2048;
GetGWL(chl,(short*)p2,iw,i-1);
for(k = 0; k < iw; k++) p2[k] = p2[k]-2048;
GetGWL(chl,(short*)p3,iw,i);
for(k = 0; k < iw; k++) p3[k] = p3[k]-2048;
GetGWL(chl,(short*)p4,iw,i+1);
for(k = 0; k < iw; k++) p4[k] = p4[k]-2048;
for( i =2; i < ih-2; i++)
{
GetGWL(chl,(short*)p5,iw,i+2);
for(k = 0; k < iw; k++) p5[k] = p5[k]-2048;
for(k = 2; k < iw-2; k++)
{
d1 = p1[k-2] - p5[k+2]; d1 = d1*d1;
d2 = p5[k-2] - p1[k+2]; d2 = d2*d2;
po[k] = (int)sqrt(d1+d2)+2048;
}
for(k = 0; k < iw; k++) p1[k] = p2[k];
for(k = 0; k < iw; k++) p2[k] = p3[k];
for(k = 0; k < iw; k++) p3[k] = p4[k];
for(k = 0; k < iw; k++) p4[k] = p5[k];
PutGWL(chl,(short*)po,iw,i);
}
h_mfree(pn); h_mfree(po); h_mfree(p1); h_mfree(p2); h_mfree(p3);
h_mfree(p4); h_mfree(p5);
redraw_cw(w);
return;
}
if(nfilt == 4)
{
}
po = (int*)h_malloc(iw*2); pn = (int*)h_malloc(iw*2);
p1 = (int*)h_malloc(iw*2); p2 = (int*)h_malloc(iw*2);
p3 = (int*)h_malloc(iw*2);
i = 1;
GetGWL(chl,(short*)p1,iw,i-1);
for(k = 0; k < iw; k++) p1[k] = p1[k]-2048;
GetGWL(chl,(short*)p2,iw,i);
for(k = 0; k < iw; k++) p2[k] = p2[k]-2048;
for( i =1; i < ih-1; i++)
{
GetGWL(chl,(short*)p3,iw,i+1);
for(k = 0; k < iw; k++) p3[k] = p3[k]-2048;
filt(p1,p2,p3,po,iw,nfilt);
// memcpy(p1,p2,iw); memcpy(pn,p3,iw);
for(k = 0; k < iw; k++) p1[k] = p2[k];
for(k = 0; k < iw; k++) pn[k] = p3[k];
for(k = 0; k < iw; k++) po[k] = po[k]+2048;
PutGWL(chl,(short*)po,iw,i);
// memcpy(p2,pn,iw);
for(k = 0; k < iw; k++) p2[k] = pn[k];
}
h_mfree(pn); h_mfree(po); h_mfree(p1); h_mfree(p2); h_mfree(p3);
redraw_cw(w);
}
/***********************************************************/
void Do_Scale_Rotate(WinHandle w)
{ int i,k;
int nx,ny,ix,iy;
int *po;
int q1,q2,q3,q4;
double angle;
double hi,hi_t,x,y,u,v,si,co,dx,dy;
double cox = 65536.0;
long cx,cy,cx1,cy1,s1,s2;
long lx,ly,ldx,ldy,lix,liy;
unsigned char *pc,s,p;
IJ ij;
GWHandle ch,chol;
Win2d *ud = h_data(w);
if ((chol=ud->ch) == 0) return;
angle = 3.14159265*ud->angle/180.0;
hi = 1.0/ud->iw; hi_t = hi/ud->scale;
nx = ud->scale*ud->iw; ny = ud->scale*ud->ih;
si = sin(angle); co = cos(angle);
u = -hi_t*(nx/2.0); v = -hi_t*(ny/2.0 - 1);
dx = hi_t*co/hi; dy = hi_t*si/hi;
ldx= cox*dx; ldy = cox*dy;
po = (int*)h_malloc(nx*sizeof(int));
ch = NewGW(f_create("rout.tmp",F_CREATE_NORMAL),0);
for( i = 0; i < ny; i++)
{v+= hi_t;
lx = cox*( u*co - v*si + hi_t*(nx/2.0) )/hi;
ly = cox*( u*si + v*co + hi_t*(ny/2.0) )/hi;
for(k = 0; k < nx; k++)
{
ix = lx >> 16; lx+= ldx;
iy = ly >> 16; ly+= ldy;
liy = iy; liy = liy
cy = ly - liy;
cy1= 65537L - cy;
lix = ix; lix = lix
cx = lx - lix;
cx1= 65537L - cx;
ij.i = ix; ij.j = iy; GetGWA(chol, (short*)&q1, 1, &ij);
ij.i = ix+1; ij.j = iy; GetGWA(chol, (short*)&q2, 1, &ij);
ij.i = ix; ij.j = iy+1; GetGWA(chol, (short*)&q3, 1, &ij);
ij.i = ix+1; ij.j = iy+1; GetGWA(chol, (short*)&q4, 1, &ij);
s1 = ((long)q1*cx1+(long)q2*cx) >> 16;
s1 = (s1*cy1)>>16;
s2 = ((long)q3*cx1 + (long)q4*cx) >> 16;
s2 = (s2*cy)>>16;
po[k] = s1+s2;
}
PutGWL(ch, (short*)po, nx, i);
}
h_mfree(po);
if (chol) DisposeGW(chol);
ud = h_data(w);
ud->ch = ch;
ud->iw = nx; ud->ih = ny;
ud->x0 = (ud->iw-ud->w)/2; // Центровка
ud->y0 = (ud->ih-ud->h)/2; // изображения
redraw_window(w);
}
// зеркальное отображение
void Do_Mirrow(WinHandle w)
{ int i,j,vol;
int nx,ny;
int *po;
GWHandle ch;
Win2d *ud = h_data(w);
if ((ch=ud->ch) == 0) return;
nx = ud->iw; ny = ud->ih;
po = (int*)h_malloc(nx*sizeof(int));
for( i = 0; i < ny; i++)
{ GetGWL(ch, (short*)po, nx, i);
for(j=0;j
{ vol = po[j]; po[j] = po[nx-j-1]; po[nx-j-1] = vol;
}
PutGWL(ch, (short*)po, nx, i);
}
h_mfree(po);
ud = h_data(w); ud->flef^=1;
redraw_cw(w);
}
static void Do_ResZo(WinHandle w, int nxi, int nyi, int reszo, int type)
{ int i,k;
int nx,ny,ix,iy,new_nx,new_ny,x0,y0;
int *po;
int q1,q2,q3,q4;
double x,y,dx,dy;
long cx,cy,cx1,cy1,s1,s2;
double sc_x,sc_y,cox = 65536.0;
long lx,ly,ldx,ldy,lix,liy;
unsigned char *pc,s,p;
IJ ij;
GWHandle ch,chol;
Rect r;
Rect wr = WorkRect(w);
Win2d *ud = h_data(w);
if ((chol=ud->ch) == 0) return;
if(reszo)
{ nx=nxi; ny=nyi;
new_nx = ud->iw; new_ny = ud->ih;
if(new_nx==nx && new_ny==ny) return;
}
else
{
r = type ? Set_Rect(w) : Set_Sqr(w);
if(r.x0 == -1) return;
new_nx = r.x1-r.x0+1; new_ny = r.y1-r.y0+1;
ud = h_data(w);
sc_x = (double)ud->iw/new_nx;
sc_y = (double)ud->ih/new_ny;
if( sc_x < sc_y)
{ nx = ud->iw; ny = new_ny*sc_x;
if(ny%2) ny--; ud->scale = sc_x;
}
else
{ ny = ud->ih; nx = new_nx*sc_y;
if(nx%2) nx--; ud->scale = sc_y;
}
}
OnScale(wr.x0,wr.y0);
dx = (double)new_nx/(double)nx;
dy = (double)new_ny/(double)ny;
ldx= cox*dx; ldy = cox*dy;
po = (int*)h_malloc(nx*sizeof(int));
if(reszo)
x0 = y0 = 0;
else
{ ud = h_data(w);
x0 = r.x0-wr.x0+ud->x0;
y0 = r.y0-wr.y0+ud->y0;
}
ch = NewGW(f_create("rout.tmp",F_CREATE_NORMAL),0);
ly = cox*y0;
for( i = 0; i < ny; i++)
{
lx = cox*x0;
ly+= ldy;
iy = ly>>16;
liy = iy; liy = liy
cy = ly - liy;
cy1= 65537L - cy;
for(k = 0; k < nx; k++)
{
lx+= ldx;
ix = lx>>16;
ij.i = ix; ij.j = iy; GetGWA(chol, (short*)&q1, 1, &ij);
ij.i = ix+1; ij.j = iy; GetGWA(chol, (short*)&q2, 1, &ij);
ij.i = ix; ij.j = iy+1; GetGWA(chol, (short*)&q3, 1, &ij);
ij.i = ix+1; ij.j = iy+1; GetGWA(chol, (short*)&q4, 1, &ij);
lix = ix; lix = lix
cx = lx - lix;
cx1= 65537L - cx;
s1 = ((long)q1*cx1+(long)q2*cx) >> 16;
s1 = (s1*cy1)>>16;
s2 = ((long)q3*cx1 + (long)q4*cx) >> 16;
s2 = (s2*cy)>>16;
po[k] = s1+s2;
}
PutGWL(ch, (short*)po, nx, i);
DoneVisSave((int)((i+1)*100.0/ny+0.5));
}
h_mfree(po);
if (chol) DisposeGW(chol);
ud = h_data(w);
ud->ch = ch;
ud->r0 = (double)ud->r0*(double)new_nx/ud->iw;
ud->iw = nx; ud->ih = ny;
ud->x0 = (ud->iw-ud->w)/2; // Центровка
ud->y0 = (ud->ih-ud->h)/2; // изображения
OffScale();
if(reszo)
redraw_window(w);
else
{ if (ud->size_big)
SetRectShape(w,&CommonRect);
else SetRectShape(w,&ud->own_size);
redraw_cw(w);
}
}
void Do_Zoom(WinHandle w, int type)
{
Do_ResZo(w,0,0,0,type);
}
void Do_Resemple(WinHandle w, int nx, int ny, int type)
{
Do_ResZo(w,nx,ny,1,type);
}
/***********************************************************/
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef unsigned long DWORD;
typedef struct tagBITMAPFILEHEADER
{ WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER
{ DWORD biSize;
long biWidth;
long biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
long biXPelsPerMeter;
long biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
void Fr_Save(WinHandle w, int select)
{ int i,k,x,y,x1,y1,nx,ny,format,ii,fin;
BYTE rr,gg,bb;
Rect r;
BYTE *filp,*pallet,*pal;
GCHandle ch;
Win2d *ud = h_data(w);
USGC *s;
BITMAPFILEHEADER *hfile;
BITMAPINFOHEADER *hinfo;
long hi;
Rect wr = WorkRect(w);
int L = wr.x1 - wr.x0 + 1;
int H = wr.y1 - wr.y0 + 1;
if(ud->r0r0>10)
hi = 100.0/(0.2*(double)ud->r0/(double)(ud->iw-1));
else hi = 0l;
if(!ud->img_name || !ud->ch) return;
// BringToFront(w); VisSetWin(w); // ?????
format = 0;
if(select == 0)
{r = Set_Rect(w); if(r.x0 < 0) return;
redraw_window(w);
}
else if(select == 1)
{r.x0 = wr.x0; r.y0 = wr.y0; r.x1 = wr.x1; r.y1 = wr.y1;}
else if(select == 2)
{
if((ud->iw > L) || (ud->ih > H))
{r.x0 = wr.x0; r.y0 = wr.y0; r.x1 = wr.x1; r.y1 = wr.y1;}
else
{ r.x0 = wr.x0-ud->x0; r.y0 = wr.y0-ud->y0;
r.x1 = r.x0 + ud->iw-1; r.y1 = r.y0 + ud->ih-1;
}
}
else return;
nx = r.x1-r.x0+1; ny = r.y1-r.y0+1;
if(nx%4) { nx-=nx%4; r.x0++; }
if(ny%2) { ny--; r.y0++; }
i = InputForm(mesman,&format);
if (i != 1) return;
s = h_malloc(4096); if(!s) return;
if(format == 2) // BMP save
{
hfile =h_malloc(sizeof(BITMAPFILEHEADER));
hinfo =h_malloc(sizeof(BITMAPINFOHEADER));
// Select name and open BMP file
filp = GetFileName(GetCfgItem("bmp"),H_CREATE);
if (*filp == 0) {h_mfree(s); h_mfree(hfile); h_mfree(hinfo); return;}
if ((fin = f_create(filp, F_CREATE_NORMAL)) == -1)
{h_mfree(s); h_mfree(hfile); h_mfree(hinfo); return;}
// Save BITMAPFILEHEADER
hfile->bfType = 0x4D42; // BM - символы идентифицирующие формат
hfile->bfSize = 0l; // размер файла в long-ах
hfile->bfReserved1 = 0;
hfile->bfReserved2 = 0;
hfile->bfOffBits = sizeof(BITMAPFILEHEADER)+
sizeof(BITMAPINFOHEADER)+1024L;
// смещение начала собственно битового массива в байтах
f_write(fin, hfile, sizeof(BITMAPFILEHEADER));
// Save BITMAPIMFOHEADER
hinfo->biSize = (long)sizeof(BITMAPINFOHEADER);
hinfo->biWidth = (long)nx;
// кратно long-ам (если надо, добавить нули)
hinfo->biHeight = (long)ny;
hinfo->biPlanes = 1;
hinfo->biBitCount = 8;
hinfo->biCompression = 0L;
hinfo->biSizeImage = 0L;
hinfo->biXPelsPerMeter = hi;
hinfo->biYPelsPerMeter = hi;
hinfo->biClrUsed = 0L; // к-во цветов в таблице цветности
hinfo->biClrImportant = 0L; // обязательное к-во цветов
f_write(fin, hinfo, sizeof(BITMAPINFOHEADER));
// Save PALLETE
pallet = h_malloc(1024); pal = pallet;
for(ii=0; ii
{ g_get_pal((USGC)ii,&rr,&gg,&bb);
*pal++ = rr*4; *pal++ = gg*4; *pal++ = bb*4; *pal++ = 0;
}
f_write(fin, pallet, 1024);
h_mfree(pallet);
// Save BITMAP
for(y=r.y1; y>=r.y0; y--)
{ for(x=r.x0,k=0; x
{ s[k] = g_point(x, y, 0); g_point(x, y, s[k]);}
f_write(fin, s, nx);
}
f_close(fin); h_mfree(hfile); h_mfree(hinfo);
}
else if(format == 0) // IMG save
{
filp = GetFileName(GetCfgItem("frag"),H_CREATE);
if (*filp == 0) { h_mfree(s); return;}
if ((fin = f_create(filp, F_CREATE_NORMAL)) == -1) {h_mfree(s); return;}
f_write(fin, &nx, sizeof(int)); f_write(fin, &ny, sizeof(int));
for(y=r.y0; y
{ for(x=r.x0,k=0; x
{ s[k] = g_point(x, y, 0); g_point(x, y, s[k]);
}
f_write(fin, s, nx);
}
f_close(fin);
ShowCursor(x,y,CURT_HAND);
}
else if(format == 1) // PCX save
{ if ((fin = f_create("frag.tmp", F_CREATE_NORMAL)) == -1)
{h_mfree(s); return;}
ch = NewGC(fin,0);
pallet = h_malloc(768);
for(y=r.y0,i = 0; y
{ for(x=r.x0,k=0; x
{ s[k] = g_point(x, y, 0); g_point(x, y, s[k]);}
PutGCL(ch, s, nx, i);
}
pal = pallet;
for(ii=0; ii
{ g_get_pal((USGC)ii,&rr,&gg,&bb);
*pal++ = rr*4;
*pal++ = gg*4;
*pal++ = bb*4;
}
filp = GetFileName(GetCfgItem("pcx"),H_CREATE);
if (*filp)
cell_to_pcx(filp, ch, nx, ny, pallet);
h_mfree(pallet);
DisposeGC(ch); f_delete("frag.tmp");
}
h_mfree(s);
}
void PCX_Save(WinHandle w)
{ int i,k,x,y,x1,y1,nx,ny,ii,fin;
USGC rr,gg,bb;
Rect r;
USGC *filp,*pallet,*pal;
GCHandle ch;
Win2d *ud;
USGC *s,*s1,name[13],ss[81];
Rect wr = WorkRect(w);
ud = h_data(w); if(!ud->img_name || !ud->ch) return;
r.x0 = wr.x0; r.y0 = wr.y0; r.x1 = wr.x1; r.y1 = wr.y1;
nx = r.x1-r.x0+1; ny = r.y1-r.y0+1;
if(nx%2) { nx--; r.x0++; }
if(ny%2) { ny--; r.y0++; }
s = h_malloc(1024); if(!s) return;
// PCX save
if ((fin = f_create("frag.tmp", F_CREATE_NORMAL)) == -1)
{h_mfree(s); return;}
ch = NewGC(fin,0);
pallet = h_malloc(768);
for(y=r.y0,i = 0; y
{ for(x=r.x0,k=0; x
{ s[k] = g_point(x, y, 0); g_point(x, y, s[k]);}
PutGCL(ch, s, nx, i);
}
pal = pallet;
for(ii=0; ii
{ g_get_pal((USGC)ii,&rr,&gg,&bb);
*pal++ = rr*4;
*pal++ = gg*4;
*pal++ = bb*4;
}
strcpy(ss,GetCfgItem("pcx"));
if(*ss != 0)
{ s1=strrchr(ss,'\\'); if(!s1) return ; else { s1++; *s1=0; }
}
ud = h_data(w);
sprintf(name,"%ld-%d.pcx",ud->no,ud->ns);
strcat(ss,name);
if (*ss) cell_to_pcx(ss, ch, nx, ny, pallet);
h_mfree(pallet);
DisposeGC(ch); f_delete("frag.tmp");
h_mfree(s);
}
void Fr_Load(WinHandle w)
{ GWHandle chl;
int i,k,x,y,x1,y1,nx,ny;
Rect r; EventRecord e;
char name[81],s[81],*s1;
int *pi;
unsigned char *c,*pc,*p,*pp;
int fin;
char *filp;
Win2d *ud = h_data(w);
filp = GetFileName(GetCfgItem("frag"),H_READ);
if (*filp == 0) return;
if ((fin = f_open(filp, F_OPEN_READ)) == -1) return;
f_read(fin, &nx, sizeof(int)); f_read(fin, &ny, sizeof(int));
get_ct_handle(w, ct);
get_ctsys();
ct->l[2] = nx; ct->l[3] = ny;
ct->b[249] = 1;
ud = h_data(w);
ud->iw = nx;
ud->ih = ny;
ud->ps = 1;
ud->frag = 1;
ud->objtype = 0;
// GW file name definition
strcpy(name,GetCfgItem("image"));
pc = name+strlen(name); while (pc > name && pc[-1] != '\\') pc--;
sprintf(pc,"w%d.tmp",ud->temp_name);
if (ud->ch) { DisposeGW(ud->ch); f_delete(name); }
ud->ch = NewGW(f_create(name,F_CREATE_NORMAL),0);
chl = ud->ch;
p = h_malloc(nx); pi = (int*)h_malloc(nx*2);
for( k = 0; k < ny; k++)
{f_read(fin, p, nx);
for (i = 0; i < nx; i++) pi[i] = (int)p[i]+2048;
PutGWL(chl,(short*)pi,nx,k); // Write to GW file
}
h_mfree(p); h_mfree(pi);
VisSetWin(w);
strcpy(s,filp);
ud = h_data(w);
if(!ud->img_old && ud->img_name)
{ int len = strlen(h_data(ud->img_name));
ud->img_old = h_alloc(len+1);
ud = h_data(w);
strcpy(h_data(ud->img_old),h_data(ud->img_name));
}
if(ud->img_name)
{ if (ud->tempimg) f_delete(h_data(ud->img_name)); h_free(ud->img_name);
}
else h_free(ud->win.title);
ud = h_data(w);
ud->img_name = h_alloc(strlen(s)+1);
ud = h_data(w);
strcpy(h_data(ud->img_name),s);
ud->tempimg = 0;
ud->win.title = ud->img_name;
PaintTitle(w);
ud->x0 = (ud->iw-ud->w)/2; // Центровка
ud->y0 = (ud->ih-ud->h)/2; // изображения
redraw_window(w);
}