Как я тестировал ImageJ на создание 3D изображений

Виктор Кон , для тех кому интересно.

Одной из разновидностей математической графики является трехмерное изображение объектов. Естественно, что всегда изображается проекция трехмерного объекта, видимая из какой-то точки зрения, которую можно менять, и, тем самым, рассматривать трехмерный объект с разных сторон. Существуют относительно простые формулы проекции точки в трехмерном пространстве на двумерную плоскость изображения. Объект, состоящий из многих точек, можно изображать поточечно. Единственная сложность такого подхода состоит в том, что нужно скрывать невидимые точки. Для этого существуют специальные алгоритмы, и в целом задача выглядит хоть и не очень сложной, но громоздкой, если поставить цель написать свою программу.

К счастью таких программ написано уже немало. Одной из них является бесплатная программа ImageJ , написанная на языке программирования Java и использующая специальный пакет встроенных программ для 3D графики. Как частный случай, эта программа может построить проекции трехмерного объекта по серии сечений этого объекта на разной высоте. Сечения находятся в плоскости (x,y) и разные сечения соответствуют разным значениям координаты z. Такие сечения в экспериментах получают с помощью томографии из набора проекций просвечивания объекта под разными углами при вращении его вокруг оси Z.

Предположим, что у нас есть такой набор сечений. На самом деле у меня хоть и был набор данных для томографии, но набора сечений не было. Я просто написал небольшую программу, которая рисовала картинки. Первая картинка показана слева в уменьшенном виде, а реально она имела размер 512*512. Далее было записано еще 180 таких картинок, в которых кружочки вращались вокруг центра на 180 градусов и сначала уменьшались в размере, а потом снова вернулись в исходный размер. Таким образом я сделал 181 картинку формата jpeg (RGB). Все эти картинки были помещены в одну папку.

Далее, надо запустить программу ImageJ и выбрать в меню [Plagins/3D/3D Viewer]. Программа сказала, что не установлен плагин java3D и предложила его установить. Я согласился, но операция не прошла успешно. Дело в том, что у меня java виртуальная машина JRE по умолчанию установлена в папку "Program Files/Java", а операционная система Виндовс-8.1 не дает сторонним программам записывать файлы в эту папку. И мне тоже не дает. Это маразм современного человечества, которое в погоне за безопасностью все запрещает. Пришлось скопировать папку с JRE в другое место и запустить программу с JRE в этом месте, используя командный bat файл. В таком варианте программа сама установила нужный плагин. Как запускать программу из bat файла я писал в других местах. Пока не буду повторяться.

Итак, программа готова к работе. Далее надо выбрать в меню пункт [File/Import/Image Sequence]. Там предлагают сначала выбрать папку с файлами, можно указать любой файл, реально выбирается только папка. Затем в специальной форме надо указать заголовок серии файлов. Я назвал файлы как sec0000.jpg, sec0001.jpg и далее до sec0181.jpg. Многие параметры программа сама определяет анализируя содержимое папки, но ей необходимо указать шапку системы файлов, например, "sec", и убрать галочку с пункта "Sort name numerically", потому что при галочке она ищет файл типа sec1, sec2, ..., sec10 и так далее с именами переменной длины, а у меня не так.

Как только все указано, программа показывает в определенном окне все закачанные файлы. Точнее она показывает первое сечение, а внизу есть бегунок, если его двигать, то в этом же окне можно увидеть и все другие сечения. Теперь надо снова выбрать меню [Plagins/3D/3D Viewer] и программа откроет новое окно, в котором покажет трехмерный объект, но вид сверху, то есть снова сечение. Однако, двигая курсор мыши при нажатой левой клавише можно менять точку зрения и программа очень быстро показывает любую проекцию, вращая трехмерный объект вокруг трех осей. Я не очень понял в каком формате спасаются картинки, но лично я просто копирую с экрана любую проекцию объекта в файл jpg формата. Пример такой картинки показан слева. Интересно, что в программе есть много кнопок меню, которые позволяют менять режимы показа. Есть также и анимация, когда любая проекция объекта получается при вращении его вокруг вертикальной оси для этой проекции. Все делается довольно быстро.

Интересно, что томографию программа ImageJ не делает, хотя это тоже не так сложно. Вероятно это не считается операцией математической графики. И просто в JRE нет готовых программ, а программа 3D изображений есть.  



  Внимание! Сайт оптимизирован под браузер Google Chrome.