SlideShare a Scribd company logo
Александр Коршак, MERA
Mobius СПб, 4 июня 2016
Опыт разработки Cardboard приложения для
3D-реконструкции медицинских данных
О чем доклад?
2
Есть у меня
хобби…
Об опыте разработки:
 Пошагово
 У себя дома
 На коленке
 И о Virtual Reality
О чем доклад?
3
Актуальность
4Reference: http://goo.gl/EyIOJR
«Потребуется 10 лет, прежде чем виртуальная реальность станет так же
популярна, как сейчас смартфоны…»
Актуальность
5Reference: http://goo.gl/K38kCu
«Меня поражает новизна, люди, работающие над VR, и строящие
эквивалент операционной системы…»
Google I/O:
 2014 г. – Cardboard
 2015 г. – Cardboard SDK, Google Jump, Youtube 360
о
 2016 г. – Google VR SDK, Daydream, 360
о
-трансляция
Актуальность
6
36 21.7
63.4
158.7
184.9
281.5
0
50
100
150
200
250
300
0
0.2
0.4
0.6
0.8
1
1.2
2010 2011 2012 2013 2014 2015
Объем инвестиций за год, млн. $
Актуальность
7Reference: https://goo.gl/XDw1cs
Актуальность
8Reference: http://goo.gl/b87KKJ
 Постановка задачи
 Обработка МРТ/КТ данных
 Реализация VR прототипа
Содержание
9
«Очки ннннада»?
Предыстория
10
Случай из жизни
11
VR устройства
12
VR – это обман восприятия
1. Линзы
2. Экран
3. Сенсоры
4. 3D-аудио
Reference: http://goo.gl/blmEKX
В коробке
смартфонов
VR устройства
13
Headsets Standalone
Погружаем медицину
Постановка задачи
14
Постановка задачи
15
+
Цель: вау эффект!
Другие цели:
 Удобство восприятия
 Высокая степень детализации
 Интеграция с существующими решениями
 Посмотреть, что получится…
Постановка задачи
16
Какую платформу выбрать за основу?
Альтернативы:
 Headsets
 Standalone
Шаг №1
17
Пример использования
18
Пациент
Врач
Server/Big Data
Сканирование
Анализ
Диагност
Решение: Headsets
Преимущества:
 Проще интегрировать
 Мобильное решение
 Вопрос обновления «железа» = обнови смартфон
 Цена
Шаг №1
19
Обработка МРТ/КТ данных
Реализация
20
Как устроен МРТ/КТ файл?
А также:
 Какие стандарты существуют?
 Можно ли построить модель «в лоб»?
Шаг №2
21
Как устроен МРТ/КТ файл?
 DICOM формат данных
 Мета-данные
 2D-срез в опр. проекции
 Интенсивность (МРТ)
 Плотность тканей (КТ)
Шаг №2
22Habrahabr: https://goo.gl/c8DKt0 Documentation: http://goo.gl/mBj0s2
Шаг №2
23Habrahabr: https://goo.gl/c8DKt0 Documentation: http://goo.gl/mBj0s2
Воксель (англ. Volumetric Pixel) – элемент объёмного изображения,
содержащий значение элемента растра в трёхмерном пространстве.
Проще говоря – это куб, обладающий «весом».
Воксель
24
Воксель
25
Майнкрафт МРТ
Как построить 3D-сетку?
Шаг №3
26
Как построить 3D-сетку?
Альтернативы:
 Метод «марширующих кубов»
 Метод «марширующих тетраэдров»
 Метод Канейро
 Метод Скалы
Шаг №3
27Paul Bourke: http://goo.gl/HQoVNq Сравнение: http://goo.gl/NUfz8K
Как построить 3D-сетку?
Решение:
 Метод «марширующих кубов»
 Метод «марширующих тетраэдров»
 Метод Канейро
 Метод Скалы
Шаг №3
28Paul Bourke: http://goo.gl/HQoVNq Сравнение: http://goo.gl/NUfz8K
Поддержка различных разрешений:
Метод марширующих кубов
29
30
Плотность/Разрешение
Модель поверхности
Результат
Результат
31
VR прототип
Реализация
32
Большой размер МРТ/КТ файла
Решение:
 Загрузка по частям
 Отрисовка по частям
Шаг №4
33
Шаг №4
34
Какой VR движок выбрать (Android)?
Шаг №5
35
Native API Unreal/Unity API Docs Простота Произв-ть
Rajawali VR + - +/- + +/-
Oculus (Mobile) + + - - +
Gear VRf + + - + +/-
Google VR + + + + +/-
Rajawali: https://goo.gl/Dp0GWj Google VR: https://goo.gl/9adC3x
Oculus Rift: https://goo.gl/nPcA1q GearVRf: http://goo.gl/KaMvYN
Какой VR движок выбрать (Android)?
Шаг №5
36
Native API Unreal/Unity API Docs Простота Произв-ть
Rajawali VR + - +/- + +/-
Oculus (Mobile) + + - - +
Gear VRf + + - + +/-
Google VR + + + + +/-
Rajawali: https://goo.gl/Dp0GWj Google VR: https://goo.gl/9adC3x
Oculus Rift: https://goo.gl/nPcA1q GearVRf: http://goo.gl/KaMvYN
Поддерживаемые платформы:
Google VR
37
Возможности:
Позиция головы
Калибровка
Панорама
360о
-аудио
360о
-видео
Daydream
Reference: https://goo.gl/nHaoa9 Samples: https://goo.gl/AdwlHK
Google VR SDK for Android v0.8.0:
 Стабилизация изображения
 Scanline Racing
 Эксклюзивный доступ к CPU
 Время отклика <20ms
Google VR
38Reference: https://goo.gl/yressX
Графический движок или OpenGL?
Альтернативы:
 Unity
 Unreal Engine
 OpenGL
Шаг №6
39
Графический движок или OpenGL?
Альтернативы:
 Unity – поддержка 16 бит видеокарт = страдают все
 Unreal Engine – не поддерживался (да и зачем нужен?)
 OpenGL - олдскульно
Шаг №6
40
Реализация
41
<?xml version="1.0" encoding="utf-8"?>
…
<com.google.vr.sdk.base.GvrView
android:id="@+id/gvr_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
…
Реализация
42
public class YourActivity extends GvrActivity
implements GvrView.StereoRenderer {
…
public void onCreate(Bundle state) {}
public void onNewFrame(HeadTransform t) {}
public void onDrawEye(Eye eye) {}
…
}
Реализация
43
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
gvrView = (GvrView) findViewById(R.id.gvr_view);
gvrView.setEGLContextClientVersion(3);
gvrView.setRenderer(this);
setGvrView(cardboardView);
}
Реализация
44
@Override
public void onNewFrame(HeadTransform t){
//Called when a new frame is about to be drawn.
}
public void onDrawEye(Eye eye) {
//Requests to draw the contents from the eye
//FOV.
}
45
Большое количество вершин
Альтернативы:
 Адаптировать разрешение сетки под «железо»
 Обработка на сервере
 Отсечение полигонов
 Тесселяция
 Оптимизация сетки
Шаг №7
46
Отсечение полигонов
47
Тесселяция
48
Большое количество вершин
Альтернативы:
 Адаптировать разрешение сетки под «железо»
 Обработка на сервере – задержка кадров
 Отсечение полигонов
 Тесселяция – нужен Open GL 4.0
Шаг №7
49
Вращение вокруг позиции головы
Альтернативы:
 Сенсорные данные
 Внешние устройства ввода
 Daydream контроллер
Шаг №8
50
Вращение вокруг позиции головы
Решение:
 Сенсорные данные - опасно
 Внешние устройства ввода - удобно
 Daydream контроллер – удобно, но сырой
Шаг №8
51
Результат
52
Фокусировка
Повороты
Зум
Контакты
53
twitter: alex_korshak
email: korshak@mera.ru
skype: askors90
linkedin: https://goo.gl/m2Z8MV
«Всего доброго и хорошего
настроения…»
Слайдов больше нет
54

More Related Content

Viewers also liked

Risk Assessment Form
Risk Assessment FormRisk Assessment Form
Risk Assessment Form
CoombeMedia1
 
Title sequences
Title sequencesTitle sequences
Title sequences
munashe mwatsiya
 
Location Research
Location Research Location Research
Location Research
santi alvarez
 
Production Schedule for "Street Style"
Production Schedule for "Street Style"Production Schedule for "Street Style"
Production Schedule for "Street Style"
Erika Andrejuskinaite
 
How to format a script
How to format a scriptHow to format a script
How to format a script
CoombeMedia1
 
Target Audience research
Target Audience researchTarget Audience research
Target Audience research
Ottilie Shpaizer
 
Shot List for "Street Style"
Shot List for "Street Style"Shot List for "Street Style"
Shot List for "Street Style"
Erika Andrejuskinaite
 
Treatment
TreatmentTreatment
Treatment
CoombeMedia1
 

Viewers also liked (8)

Risk Assessment Form
Risk Assessment FormRisk Assessment Form
Risk Assessment Form
 
Title sequences
Title sequencesTitle sequences
Title sequences
 
Location Research
Location Research Location Research
Location Research
 
Production Schedule for "Street Style"
Production Schedule for "Street Style"Production Schedule for "Street Style"
Production Schedule for "Street Style"
 
How to format a script
How to format a scriptHow to format a script
How to format a script
 
Target Audience research
Target Audience researchTarget Audience research
Target Audience research
 
Shot List for "Street Style"
Shot List for "Street Style"Shot List for "Street Style"
Shot List for "Street Style"
 
Treatment
TreatmentTreatment
Treatment
 

Similar to Experience of Volume Rendering in Virtual Reality

МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016
Anastasia Goryacheva
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)
Ontico
 
NettleBox - Products
NettleBox - ProductsNettleBox - Products
NettleBox - Products
NettleTech
 
Dmitry Bartalevich - "How to train your WebVR"
Dmitry Bartalevich - "How to train your WebVR"Dmitry Bartalevich - "How to train your WebVR"
Dmitry Bartalevich - "How to train your WebVR"
IT Event
 
презентация Puzzle
презентация Puzzleпрезентация Puzzle
презентация Puzzle
Skolkovo Robotics Center
 
Дополненая реальность
Дополненая реальностьДополненая реальность
Дополненая реальностьArtem Kochkin
 
Luxoft lab presentation 2014
Luxoft lab presentation 2014Luxoft lab presentation 2014
Luxoft lab presentation 2014
luxoftlab
 
Всеволод Шмыров, Яндекс
Всеволод Шмыров, ЯндексВсеволод Шмыров, Яндекс
Всеволод Шмыров, Яндекс
Elena Voynova
 
Денис Захаркин, VR Concept - MIXAR2016
Денис Захаркин, VR Concept - MIXAR2016Денис Захаркин, VR Concept - MIXAR2016
Денис Захаркин, VR Concept - MIXAR2016
mixARConference
 
ArPoint
ArPointArPoint
Технический задел
Технический заделТехнический задел
Технический задел
Vladimir Petrov
 
Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)
Ontico
 
Дополненная реальность через веб камеру
Дополненная реальность через веб камеруДополненная реальность через веб камеру
Дополненная реальность через веб камеруМихаил Кокорев
 
Дополненная реальность через веб камеру
Дополненная реальность через веб камеруДополненная реальность через веб камеру
Дополненная реальность через веб камеру
Михаил Кокорев
 

Similar to Experience of Volume Rendering in Virtual Reality (20)

МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)
 
NettleBox - Products
NettleBox - ProductsNettleBox - Products
NettleBox - Products
 
Dmitry Bartalevich - "How to train your WebVR"
Dmitry Bartalevich - "How to train your WebVR"Dmitry Bartalevich - "How to train your WebVR"
Dmitry Bartalevich - "How to train your WebVR"
 
презентация Puzzle
презентация Puzzleпрезентация Puzzle
презентация Puzzle
 
Дополненая реальность
Дополненая реальностьДополненая реальность
Дополненая реальность
 
Luxoft lab presentation 2014
Luxoft lab presentation 2014Luxoft lab presentation 2014
Luxoft lab presentation 2014
 
Puzzle
PuzzlePuzzle
Puzzle
 
Hydra Renderer
Hydra RendererHydra Renderer
Hydra Renderer
 
Ray tracing systems_msu
Ray tracing systems_msuRay tracing systems_msu
Ray tracing systems_msu
 
Ray tracing systems_msu
Ray tracing systems_msuRay tracing systems_msu
Ray tracing systems_msu
 
Всеволод Шмыров, Яндекс
Всеволод Шмыров, ЯндексВсеволод Шмыров, Яндекс
Всеволод Шмыров, Яндекс
 
Hydra Renderer
Hydra RendererHydra Renderer
Hydra Renderer
 
Денис Захаркин, VR Concept - MIXAR2016
Денис Захаркин, VR Concept - MIXAR2016Денис Захаркин, VR Concept - MIXAR2016
Денис Захаркин, VR Concept - MIXAR2016
 
ArPoint
ArPointArPoint
ArPoint
 
Технический задел
Технический заделТехнический задел
Технический задел
 
technology_is_future
technology_is_future technology_is_future
technology_is_future
 
Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)
 
Дополненная реальность через веб камеру
Дополненная реальность через веб камеруДополненная реальность через веб камеру
Дополненная реальность через веб камеру
 
Дополненная реальность через веб камеру
Дополненная реальность через веб камеруДополненная реальность через веб камеру
Дополненная реальность через веб камеру
 

Experience of Volume Rendering in Virtual Reality

Editor's Notes

  1. Всем привет, рад, что вы решили посетить мой доклад сегодня, заранее обещаю, что ближайший час вы потратите не зря. Вообщем зовут меня Александр Коршак, и говорить мы будем сегодня…
  2. Об одном моем хобби и это не реактивное программирование, не материал дизайн и тем более не ковыряние в кишочках операционных систем, хотя и подобное делать приходится…. Цензура запретила мне называть его дословное название, поэтому для простоты назовем его «изобретением велосипеда»
  3. Пошагаво, в домашних тапочках и на коленке. Короче говоря люблю я разбираться в различных штуках, в которых ничего не понимаю, а люди вокруг о них очень много говорят. В этот раз в поле моего зрения попала Virtual Reality
  4. Помните, когда появились ранние наладонники, и во что они сейчас переросли? Что-то похожее происходит с виртуальной реальностью.
  5. Помните, когда появились ранние наладонники, и во что они сейчас переросли? Что-то похожее происходит с виртуальной реальностью.
  6. Пошагаво, в домашних тапочках и на коленке. Короче говоря люблю я разбираться в различных штуках, в которых ничего не понимаю, а люди вокруг о них очень много говорят. В этот раз в поле моего зрения попала Virtual Reality
  7. Рост 52%
  8. Помните, когда появились ранние наладонники, и во что они сейчас переросли? Что-то похожее происходит с виртуальной реальностью. в своё время показ фильма братьев Люмьер о прибытии поезда.
  9. , которой многие восхищаются, но за глаза говорят, что это просто игрушка. Цель моего доклада, в первую очередь, - это мнение немножко опровергнуть, показав, как мне кажется реальный кейс применения технологии в медицине, рассказать о попутных вопросах, которые у меня возникали во время разработки прототипа и ответах, которые я для себя находил
  10. Примерно 3-4 месяца назад мне пришло приглашение снова подать заявку на Mobius, идей о чем рассказать было очень много, архитектура, фрэймворки, многопоточность… все в лучших традициях жанра… никакой «изюминки», определиться с темой я не мог. По чистой случайности, в то же время, мне пришлось нанести визит ко врачу, который отправил меня на компьютерную томографию. Пройдя эту не сложную процедуру и попав на очередной прием, я застал забавную картину, как врач, пытаясь рассмотреть КТ пациента на своем ПК не мог обнаружить дефект найденный диагностами. Попытавшийся помочь ему медбрат шутливо спросил «Очки нннада», а я для себя понял – «да чувак, нннада»
  11. Пройдя эту не сложную процедуру и попав на очередной прием, я застал забавную картину, как врач, пытаясь рассмотреть КТ пациента на своем ПК не мог обнаружить дефект найденный диагностами. Попытавшийся помочь ему медбрат шутливо спросил «Очки нннада», а я для себя понял – «да чувак, нннада»
  12. На тот момент я уже работал VR очками, в рамках одного из проектов нашей компании. Прикручивал к одному из приложений поддержку 360 видео и аудио, поэтому в голову пришли сразу они. Для тех, кто ни разу не решился с отверткой поорудовать над VR очками на этом слайде приведен пример одной из моделей в разрезе.
  13. Как в принципе было понятно из предыдущего слайда, часть железа VR очков может быть легко заменена смартфоном, поэтому на рынке существует два типа устройств Хедсеты и Шлемы. Говорить по большей части сегодня мы будем о хедсетах, почему расскажу чуть позднее.
  14. Итак приступим, расскажу немного о возникшей идеи.
  15. Постановка задачи для меня в тот момент была короткой и ясной
  16. Но чуть позже я сформировал и другие цели – тире преимущества подобного способа визуализаии МРТ/КТ данных в очках виртуальной реальности. Удобство восприятия картинки в первую очередь, чтобы подобных той, о которой я рассказал, ситуаций не возникало Высокая степень детализации картинки, т.к. медицина наука точная и для нее важны максимально точные результаты Прототип должен легко интегрироваться с существующими ЦМС и решениями, которые используются в совр. Больницах Да и вообще посмотреть, что из всего этого получится
  17. И собственно первый вопрос, который у меня возник это какую платформу выбрать за основу. ВР решений на рынке очень много, под все сразу писать не вариант, т.к. у каждого решения свой сдк, свои апи, свой маркет приложений и т.д. Нужно выбрат что-то одно
  18. Шкала хаусфилда Если изображения одной серии наложить друг на друга в той последовательности и в той плоскости, в которых они были сделаны, можно получить 3D-модель. 
  19. Шкала хаусфилда Если изображения одной серии наложить друг на друга в той последовательности и в той плоскости, в которых они были сделаны, можно получить 3D-модель. 
  20. Большие картинки
  21. В методах такого типа происходит разбиение области триангуляции на ячейки – параллепипеды или треугольные пирамиды. Далее производится триангуляция поверхности в каждой ячейке отдельно. Причем каждая ячейка триангулируется одним из заданных ранее способов, т.е. значения координат для треугольников просто подставляются из заранее заданной таблицы. Для применения этого типа необходимо задать допустимую ошибку аппроксимации на основе которой выбрать размер ячейки – куба или тэтраэдра (треугольной пирамиды, нельзя замостить пространство без пропусков). После этого с помощью уже известных таблиц триангуляции получить искомое множество треугольников. При этом процедура триангуляции каждой ячейки сводится к анализу значений функции в вершинах этой ячейки – другими словами определяется какие вершины лежат внутри поверхности, а какие снаружи. На основе этого можно сделать вывод о достаточности определения функции только в вершинах ячеек.
  22. Скорость работы, ошибка апроксимации, количество полигонов, качество Хорошо параллелится на GPU. Однако использование всего 15 базовых конфигураций не гарантирует получение замкнутой поверхности. Используется для моделирования воды, облаков Marching cubes (с англ. — «шагающие кубики») — алгоритм в компьютерной графике, впервые предложенный в 1987 году на конференции SIGGRAPH Вильямом Лоренсеном и Харви Клайном[1], для обработки полигональной сетки изоповерхности трехмерного скалярного поля (чаще называемой сеткойвокселей). Аналогичный алгоритм на плоскости называется marching squares. Алгоритм пробегает скалярное поле, на каждой итерации просматривает 8 соседних позиций (вершиныкуба, параллельного осям координат) и определяет полигоны, необходимые для представления части изоповерхности, проходящей через данный куб. Далее, на экран выводятся полигоны, образующие заданную изоповерхность. Срок действия патента истек в 2005 году, сейчас алгоритм можно свободно использовать. (Патент от 5 июня 1985 года[3]).
  23. Не перегнуть палку с овердроу
  24. Не перегнуть палку с овердроу
  25. Рассказать про бублик
  26. Покороче
  27. Объяснить