Введение 3
Глава 1. Теоретические аспекты технологий и области применения
алгоритмов 7
1.1 Общие сведения об области применения алгоритмов 7
1.2 Визуализация различных тканей 12
1.3 Специфика шейдерных программ 15
Глава 2. Алгоритмы визуализации внутренних человеческих тканей 18
2.1 Алгоритмы визуализации жидких тканей 18
2.2 Алгоритмы визуализации мягких тканей 29
Глава 3. Программная реализация алгоритмов визуализации внутренних
человеческих тканей 33
3.1 Реализация алгоритмов визуализации жидких тканей 33
3.2 Реализация алгоритмов визуализации мягких тканей 39
Заключение 44
Список использованных источников 46
Приложение
Современную медицину невозможно представить без новейших технологий. Они активно внедряются в практику здравоохранения, при этом, очевидно, использование инноваций ведет к улучшению качества предоставляемых услуг. Применение новейших разработок позволяет существенно уменьшить риски и потери при проведении сложных вмешательств. Однако, обратной стороной медали является усложнение самих процедур, что безусловно вызывает еще больше требований к конечному исполнителю — человеку. Одним из самых ярких примеров является технология лапароскопических вмешательств. Лапароскопия — это вид хирургии, в котором операционное вмешательство происходит через небольшие отверстия (троакары) в теле человека. Через них в полости вводятся камера и необходимые инструменты. Такой способ проведения операций выгодно отличается малой травматичностью и коротким сроком восстановления. Небольшие троакары затягиваются гораздо быстрее чем большие продольные разрезы полостной хирургии, при этом отсутствуют послеоперационные рубцы. Однако, провести лапароскопическое вмешательство гораздо сложнее чем классическую операцию. Отсутствие непосредственного вскрытия предъявляет к хирургу гораздо более высокие требования. Специалист должен идеально ориентироваться в пространстве, отлично знать анатомию. Дополнительно к этому, само движение режущих поверхностей внутри пациента происходит в абсолютно не интуитивном для хирурга ключе - движение инструментов инвертировано и проходит оно в ограниченной области. Все эти особенности требуют от хирурга дополнительных навыков, которым сложно обучиться. Зачастую обучение также затруднено еще этическими нормами и законами. Тренировка на реальных примерах обычно невозможна. В таких случаях и применяются специальные медицинские симуляторы, которые помогают курсанту получить необходимые знания, развить нужные навыки и психологическую устойчивость.
В разносторонних приложениях реального времени чаще всего разделяют модули на два типа: логика и рендер. Модули логики - это математическое сердце приложения. Просчет физической модели, статистики и алгоритмов выполнения действий находится здесь. Модули рендера занимаются визуализацией данных, полученных в модулях логики. Считается, что в логической части производятся основные вычисления, на стадии визуализации же необходимо просто отрисовать объект. Однако проанализировав программы заметим, что приложение находится в постоянном «цейтноте» по времени. Всегда и во всем ищется способ ускорить вычисления и такие приложения всегда загружают ЦП на максимум. Чаще всего, чтобы увеличить эффективность программы ищут способы оптимизации самих алгоритмов все больше и больше изощряясь. Однако, стоит понимать, что постоянная оптимизация становится все сложнее и сложнее. Чем больше времени тратиться на улучшение алгоритма, тем меньший результат это приносит. Невозможно постоянно ускорять алгоритмы, всегда есть предел, который невероятно трудно достичь. Чтобы получить улучшение необходимо найти другие ресурсы, свободное место, которое бы дало качественный скачок в улучшении производительности программы. Если проанализировать современные приложения (даже 3d приложения), то ЦП всегда максимально загружен, видеокарта же часто остается свободной занимаясь не слишком сложными задачами рендера. Связано это с тем, что большинство программистов просто не умеют писать программы для ГПУ Да и сама разработка таких алгоритмов требует несколько иного непривычного подхода к решению задач, необходимо учитывать архитектуру устройства, его сильные стороны.
Проблемы, решаемые в данной работе, пришли в процессе разработки двух симуляторов: лапароскопии и эндоваскулярной хирургии. Эти задачи можно условно разделить на 2 группы: визуализация жидких тканей и визуализация мягких тканей человеческого тела. На первый взгляд казалось-бы проблема визуализации является самой важной частью ПО медицинского симулятора, однако это не так. В медицинских симуляторах больше всего ресурсов выделяется на логическую часть приложения, непосредственно на просчет физической модели и ресурсов на визуализацию остается не так уж и много. Конечно, первое что видит потенциальный покупатель на рекламной брошюре или при первом подходе к симулятору — это картинка, и она безусловно должна быть качественной, однако конечное решение принимается по результатам логической и физической корректности работы. Поэтому требование к алгоритмам, предоставленным ниже является минимальное время работы при удовлетворительном качестве визуализации. В среднем на время просчета каждой задачи в течение кадра выделяется не больше 3 мс, что, очевидно, не позволяет использовать например, при визуализации жидкостей, наиболее современные техники, разработанные в рамках ведущих графических библиотек. Другое ограничение обусловлено тем, что решаемые задачи являются так называемой частью общей логики системы, т. е. они используются во всех упражнениях и модулях, т. к. обеспечивают принципиальную работу по симуляции человеческой жизнедеятельности (течение крови, отображение мягких тканей и пр.). Эти модули присутствуют во всех моделях симуляторов как старых, так и новых. И если новые симуляторы в качестве вычислительных частей используют самое современное оборудование, то на старых версиях зачастую установлено весьма устаревшее железо. Политика разработки так же предполагает обновление и на весьма старых компьютерах, в следствие этого невозможно использование некоторых самых последних технологий (например, использование шейдеров выше третьего уровня, геометрических шейдеров и т. д.). Все эти требования делают задачу весьма трудной при ее объективно высокой социальной значимости — так как от качества обучения хирургов в конечном счете зависит жизнь наших близких.
Стоит отметить, что в литературе крайне мало информации по поводу того, какие действительно алгоритмы используются в основных медицинских симуляторах на рынке, так как они разрабатываются в рамках коммерческой разработки и создатели не раскрывают никаких деталей работы ПО. Этот факт сам по себе существенно усложняет работу над этой темой и повышает ценность магистерской диссертации, показывает ее новизну. Данная работа раскрывает новые аспекты разработки высоконагруженного программного обеспечения.
Учитывая вышеперечисленные факты цель нашей работы - разработать алгоритмы визуализации жидких (кровь, контраст) и мягких (коагулированные и обычные) тканей используя шейдерные технологии чтобы сместить нагрузку с центрального процессора на видеокарту. Для достижения поставленной цели в работы сформулированы и решены следующие задачи:
1. Разработать алгоритм визуализации жидких тканей (контраст, кровь) с помощью технологии HLSL
2. Разработать алгоритм визуализации мягких тканей (коагулированные, общие) с помощью технологии HLSL.
3. Раскрыть теоретические аспекты особенности архитектуры ГПУ и области применения алгоритмов
Данная работа состоит из введения, теоретической, алгоритмической, практической глав, заключения. В конце работы приведены приложения, в которых можно найти дополнительные изображения, исходный код шейдеров и некоторых функций на c++.
В данной магистерской диссертации была достигнута поставленная цель, а именно: разработаны алгоритмы визуализаций мягких и жидких тканей человеческого тела в медицинских симуляторах. При этом алгоритмы построены таким образом, что основная нагрузка ложиться на вычисления на видеокарте. Все алгоритмы занимают не больше 3мс времени вычислений в течении одного кадра. Мы показали, что разработка подобных алгоритмов имеет важное значение и позволяет увеличить эффективность ПО в целом. Реализация задач общего назначения на шейдерах позволяет не только быстро и эффективно генерировать текстуры. Мы показали, что используя такой подход мы также можем более эффективно организовать хранение данных. Подход, предложенный в работе охватывает более широкую часть, чем изначальная область применения шейдеров. Чтобы использовать все преимущества необходимо анализировать способы решения задач в несколько ином ключе, учитывать сильные стороны устройства.
Данные программы бесспорно могут быть улучшены. Основной вектор развития подобных алгоритмов и всей симуляционной медицины лежит в направлении репетиций операций. Алгоритмы должны принимать данные реальных пациентов и обрабатывать их в автоматическом режиме без участия человека и информации подготовленной вручную. Понятна сложность таких данных: высокие шумы, низкое разрешение и общее качество.
Новизна работы заключается в том, что подобные алгоритмы медицинских симуляторов практически всегда являются проприетарными и суть их не раскрывается разработчиками. Мы же в работе не только показали новый подход к решению известных задач визуализации жидкостей, но и показали абсолютно новые идеи решения и декомпозиции проблем визуализации. Сами по себе алгоритмы, предоставленные в работе, выходят за рамки простого рендера и пропагандируют философию вычислений на видеокарте, предлагая задействовать сопроцессор всегда, когда это возможно. Резюмируя, новыми решениями к поставленным задачам в работе являются:
1. Декомпозиция задачи визуализации крови на поверхностную и объемную
2. Представление визуализируемой контрастной жидкости в виде части объекта по которому она течет
3. Представление логики электрокоагуляции как текстуры
4. Раскрытие алгоритмов визуализации настоящего медицинского симулятора
Работа, безусловно несет важное социальное значение, ведь программы и алгоритмы, представленные в ней, используются в обучающем медицинском ПО. От качества подготовки врачей зависят наши с вами жизни.
1. Harris, Mark J. 2004. “Fast Fluid Dynamics Simulation on the GPU.” In GPU Gems, edited by Randima Fernando, pp. 637-665. Addison-Wesley.
2. Muller, Matthias, David Charypar, and Markus Gross. 2003. “Particle-Based Fluid Simulation for Interactive Applications.” In Proceedings of the 2003 ACM SIGGRAPH/Eurographics Symposium on Computer Animation, pp. 154-159.
3. Johanson, C. 2004. Real-time water rendering - introducing the projected grid concept. Master’s thesis, Department of Computer Science, Lund University.
4. Liu, G. R., and L, M. B. 2003. Smoothed Particle Hydrodynamics: A Meshfree Particle Method. World Scientific.
5. Lorensen W E., and Cline H. E. 1987. Marching cubes: A high resolution 3d surface construction algorithm. SIGGRAPH Comput. Graph. 21, 4, 163-169.
6. Rosenberg I. D., and Birdwell, K. 2008. Real-time particle isosurface extraction. In SI3D ’08: Proceedings of the 2008 symposium on Interactive 3D graphics and games, ACM, New York, NY, USA, 35-43.
7. Nikolay V. Spiridonov , 2015. Real-Time Rendering of Dynamic Fluid Jets. Research Journal of Applied Sciences, 10: 436-441.
8. Общедоступный электронный ресурс. «Эндоваскулярная хирургия» https://ru.wikipedia.org/wiki/Эндоваскулярная_хирургия (дата обращения 01.01.18).
9. Общедоступный электронный ресурс «Программирование шейдеров на HLSL.» http://www.gamedev.ru/code/articles/HLSL (дата обращения 01.02.18).
10. Общедоступный электронный ресурс. «High-Level Shading Language» https://en.wikipedia.org/wiki/High-Level_Shading_Language (дата доступа 01.03.17)..
11. Общедоступный электронный ресурс «HLSL»
https://msdn.microsoft.com/en-us/library/windows/desktop/bb509561(v=vs.85).aspx (дата доступа 02.03.17).
12. Общедоступный электронный ресурс «D3DCMPFUNC enumeration»
https://msdn.microsoft.com/en-us/library/windows/desktop/bb172517(v=vs.85).aspx(дата доступа 01.10.17).
13. Общедоступный электронный ресурс «Painter's algorithm»
https: //en.wikipedia. org/wiki/Painter%27s al gorithm (дата доступа 05.05.17).
14. Foley, James; Feiner, Steven K.; Hughes, John F. (1990). Computer Graphics: Principles and Practice. Reading, MA, USA: Addison-Wesley. p. 1174. ISBN 0-201-12110-7.
15.Общедоступный электронный ресурс «Barycentric coordinate system» https: //en.wikipedia. org/wiki/Barycentric coordinate system(дата до ступа 09.09.17).
16. Baraff, David. 1997. "An Introduction to Physically Based Modeling: Rigid Body Simulation 1—Unconstrained Rigid Body Dynamics." SIGGRAPH '97 Course Notes.
17. Bell, Nathan, Yizhou Yu, and Peter J. Mucha. 2005. "Particle-Based Simulation of Granular Materials." In Proceedings of the ACM SIGGRAPH/Eurographics Symposium on Computer Animation, pp. 77-86.
18. Harris, Mark J. 2004. "Fast Fluid Dynamics Simulation on the GPU." In GPU Gems, edited by Randima Fernando, pp. 637-665. Addison-Wesley.
19. Tanaka, Masayuki, Mikio Sakai, and Seiichi Koshizuka. 2006. "Rigid Body Simulation Using a Particle Method." In ACM SIGGRAPH Research Posters, no. 132.
20. Bridson R., R. Fedkiw, and M. Muller-Fischer. 2006. "Fluid Simulation." SIGGRAPH 2006 Course Notes. In ACM SIGGRAPH 2006 Courses.
21. Foster, N., and R. Fedkiw. 2001. "Practical Animation of Liquids." In Proceedings of SIGGRAPH 2001.
22. Goktekin, T. G., A.W. Bargteil, and J. F. O'Brien. 2004. "A Method for Animating Viscoelastic Fluids." In ACM Transactions on Graphics (Proceedings of SIGGRAPH 2004) 23(3).
23. Wu, E., Y. Liu, and X. Liu. 2004. "An Improved Study of Real-Time Fluid Simulation on GPU." In Computer Animation and Virtual Worlds 15(3-4), pp. 139-146.
24. Everitt, Cass. 2001. "Interactive Order-Independent Transparency." NVIDIA
technical report. Available online at
http: //developer.nvidia.com/obj ect/Interactive Order Transparency.html.
25. Harris, Mark, William Baxter, Thorsten Scheuermann, and Anselmo Lastra. 2003. "Simulation of Cloud Dynamics on Graphics Hardware." In Proceedings of the SIGGRAPH/Eurographics Workshop on Graphics Hardware 2003, pp. 92-101.
26. Fedkiw, R., J. Stam, and H. W Jensen. 2001. "Visual Simulation of Smoke." In Proceedings of SIGGRAPH 2001, pp. 15-22.
27. J. Schpok, J. Simons, D. S. Ebert, and C. Hansen. A real-time cloud modeling, rendering, and animation system. In SCA ’03: Proceedings of the 2003 ACM SIGGRAPH/Eurographics symposium on Computer animation, pages 160-166, 2003.
28. A. Selle, A. Mohr, and S. Chenney. Cartoon rendering of smoke animations. In NPAR ’04: Proceedings of the 3rd international symposium on Non- photorealistic animation and rendering, pages 57-60, 2004.
29. A. Trembilski and A. BroBler. Surface-based efficient cloud visualisation for animation applications. Journal of WSCG, 10(2):453-460, 2002..
30. J. J. van Wijk. Rendering surface-particles. In Proc. IEEE Visualization ’92, pages 54-61, 1992.
31. D. Weiskopf. Dye Advection Without the Blur: A Level-Set Approach for Texture-Based Visualization of Unsteady Flow. Computer Graphics Forum (Eurographics 2004), 23(3):479-488, 2004.
32. K. Zhou, Z. Ren, S. Lin, H. Bao, B. Guo, and H.-Y Shum. Real-time smoke rendering using compensated ray marching. ACM Transactions on Graphics (ACM SIGGRAPH), 27(3), 2008.
33. K. Zhou, Z. Ren, S. Lin, H. Bao, B. Guo, and H.-Y. Shum. Real-time smoke rendering using compensated ray marching. ACM Transactions on Graphics (ACM SIGGRAPH), 27(3), 2008.
34. N. Max, B. Becker, and R. Crawfis. Flow volumes for interactive vector field visualization. In Proc. Visualization 93, pages 19-24, 1993.
35. N. Max. Optical models for direct volume rendering. IEEE Transactions on Visualization and Computer Graphics, 1(2):99-108, 1995.
36. J. T. Kajiya and B. P V. Herzen. Ray tracing volume densities. SIGGRAPH Comput. Graph., 18(3):165-174, 1984.
37. Becker, B.G., D.A. Lane, and N.L. Max. Unsteady Flow Volumes. in Proceedings Visualization '95. 1995. Atlanta, GA: IEEE Computer Society Press.
38. Westover, L. Interactive Volume Rendering. in Chapel Hill Workshop on Volume Visualization. 1989. Chapel Hill, NC: Department of Computer Science, Univ. of North Carolina.
39. Crawfis, R. and N. Max. Direct Volume Visualization of Three -Dimensional Vector Fields. in 1992 Workshop on Volume Visualization. 1992. Boston, MA: ACM SIGGRAPH, NY
40. Pharr, Matt, ed. 2005. "Part IV: General-Purpose Computation on GPUs: A Primer." In GPU Gems 2. Addison-Wesley.
41. Christer Ericson, Real-Time Collision Detection M038/the Morgan Kaufmann Ser. in Interactive 3D Technology Series. CRC Press, 2004.