МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ» ФАКУЛЬТЕТ БІОМЕДИЧНОЇ ІНЖЕНЕРІЇ КАФЕДРА БІОЗАХИСТУ ТА БІОВІДНОВНОЇ ІНЖЕНЕРІЇ Лабораторна робота №2 з дисципліни: Обробка медичних зображень Тема: «Формалізація уявлень про медичні зображення» Варіант 13 Виконав: студент гр. БС-51с, ФБМІ Лялька Б.О. Перевірила: Алхімова С.М. Київ 2016 Завдання: 1. Вивчити теоретичні основи збереження даних у файлах формату DICOM. 2. Завантажити зображення томографічного зрізу у форматі DICOM в оперативну пам’ять та відобразити дані зображення у вікні програми. 3. Створити подію від клавіатури, при обробці якої поверх данних зображення відображається текстова інформація з DICOM тегу відповідно до варіанту: 13 ID дослідження 4. Скласти і захистити звіт по роботі. Лістинг програми: using using using using using using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms; SharpGL; SharpGL.Enumerations; Dicom; SharpGL.SceneGraph.Assets; namespace cartesian_spherical { public partial class Form1 : Form { OpenGL gl; bool flag = false; Texture capture = new Texture(); // экземпляр текстуры List<byte> pixels = new List<byte>(); DicomDecoder dec = new DicomDecoder(); public Form1() { InitializeComponent(); gl = (gl == null) ? this.openGLControl1.OpenGL : gl; dec.DicomFileName = "DICOM_Image_for_Lab_2.dcm"; dec.GetPixels8(ref pixels); capture.Create(gl, pixels.ToBitmap(dec.width, dec.height)); } void openGLControl1_OpenGLDraw(object sender, RenderEventArgs args) { gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); gl.LoadIdentity(); if (flag) gl.DrawText(5, 290, 1, 1, 1, "Arai", 15.0f, GetProperty(dec, "Study ID")); gl.MatrixMode(MatrixMode.Projection); gl.Ortho2D(-this.Width / 2, this.Width / 2, -this.Height / 2, this.Height / 2); // двумерная проекция gl.Enable(OpenGL.GL_TEXTURE_2D); // включение механизма текстурирования capture.Bind(gl); // создание объекта текстуры gl.Begin(BeginMode.Quads); gl.TexCoord(1, 1); gl.Vertex(-128, -128); // координаты текстуры; вершины gl.TexCoord(1, 0); gl.Vertex(128, -128); gl.TexCoord(0, 0); gl.Vertex(128, 128); gl.TexCoord(0, 1); gl.Vertex(-128, 128); gl.End(); gl.Disable(OpenGL.GL_TEXTURE_2D); // выключение механизма текстурирования gl.Flush(); } string GetProperty(DicomDecoder dicdec, string Name) { foreach (var i in dicdec.dicomInfo) { var v = i.Split('/')[2]; var vv = v.Split(':')[0]; if (vv == Name) { return Name + ":" + v.Split(':')[1]; } } return ""; } private void openGLControl1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == 32) { gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); gl.LoadIdentity(); flag = (flag) ? false : true; gl.Flush(); } } } } Результат виконання: Висновок: Зберігання медичних зображень потребує певної специфіки роботи з ними. Тому щоб не розподіляти інформацію про медичне зображення та саме зображення краще використовувати формат DICOМ, в якому воно зберігається разом з великою кількістю тегів, шо його характеризують. Відповіді на контрольні питання: 1. Формат DICOМ, його призначення. DICOM (англ. Digital Imaging and Communications in Medicine) – галузевий стандарт створення, зберігання, передачі і візуалізації медичних зображень і документів дослідження пацієнтів. Формат DICOМ призначенний для передачі і зберігання расторових медичних зображень, отриманих за допомогою різних методів променевої діагностики (ренгенографія, ультразвукова діагностика, ендоскопія, комп'ютерна та магнітно-резонансна томографія. Стандарт DICOM узятий за основу розробки європейського стандарту MEDICOМ. Також даний формат даних дозволяє зберігати не тільки серії зображень, но і велику кількість додаткової інформації про умови отримання даних зображень. Крім того в протокол включений інтерфейс отримання і відправки цих файлів по глобальній комп’ютерній мережі. 2. Що таке таблиця тегів? Як знайти необхідну інформацію? Таблиця тегів – це таблиця атрибутів, в якому присвоєні номера для кожного тега, який складається з двох полів: номера групи та номера елемента. Кожний тег виконує певну функцію при обробці зображення. Кожен тег описаний в таблиці стандартів Data Dictionary. DICOM використовують три різних схеми кодування тегів. Кодування файлу помічається відповідним тегом в тому ж файлі. Схеми отримуються із комбінації двох параметрів – представлення даних і кодування порядку байта. Деякі стандартні тегів: DA - Date, дата; DS - Decimal String, рядок представляє собою десяткову дріб; FL-Floating Point Single (4 bytes), число з плаваючою комою звичайної точності; IS - Integer String, цілочислений рядок; UL - Unsigned Long, беззнакове подвійне слово і т.д. 3. Особливості завантаження файлів в DICOM форматі за допомогою бібліотеки GDCM. Масові DICOM або GDCM (первинна назва GNU DICOM ; назва була змінена на прохання для інтеграції в ІТК) - є крос-платформної бібліотеки, написаної на C + + для DICOM медичної файлів. Для того, щоб зчитати інформацію з файлу DICOM з допомогою бібліотеки GDCМ, перш за все необхідно завантажити файл у відповідну файлову структуру бібліотеки. Під час завантаження слід перевірити, що бібліотека GDCM підтримує формат необхідного користувачу файлу. 4. Як завантажити піксельні дані DICOM файлу в оперативну пам'ять? Для завантаження піксельних даних DICOM файлу в оперативну пам'ять необхідно створити структуру бібліотеки File Helper: gdcm::FileHelper * fh = gdcm::FileHelper::New (f); Після цього можна завантажувати піксельні дані зображення: void *imageData = fh -> GetImageDataRaw (); uint32_t dataSize = fh ->GetImageDataRawSize (); За допомогою бібліотеки можна також визначати розмір даних одного пікселя зображення та типу цих зображень. 5. Чи можна зберігати дані типу з рухомою крапкою в файлах формату DICOM? Дані типу з рухомою крапкою в файлах формату DICOM можна зберігати. Формат DICOM підтримують пристрої УЗД. Для отримання одно або двовимірних медичних зображень можна використовувати: електромагнітне випромінювання; ультразвук. Методами отримання двовимірних медичних зображень є: цифрова радіологія; комп'ютерна томографія; ядерний магнітний резонанс; 2D-ультразвук. Методами й джерелами тривимірних зображень є: послідовність радіологічних зображень або томографічне зображення динамічного об'єкта; об’ємне томографічне зображення частини нерухомого об'єкта