Марних полігонів»
Виправлення крайових дефектів 3Dскана обличчя та торса
Курсова робота студента 445 групи
Добролеж Ганни Борисівни
3. Розв'язання задачі
3.1.Видалення «безкорисних полігонів»
3.2.Видалення незв'язаних елементів
3.4.Очищення моделі торсу
З даної роботи представлено очищення 3D моделі частин тіла людини, а саме виправлення крайових дефектів тривимірної моделі обличчя та торса.
Визначимо деякі поняття.
Тривимірна модель - це модель об'єкта в тривимірній графіці, що являє собою сукупність вершин і ребер, яка визначає форму багатогранного об'єкта, що відображається. У моєму випадку кожна грань (полігон становить тривимірну модель)
Так само важливим поняттям є текстура. Текстура є растровим зображенням, що накладається на поверхню полігону, з яких складаються 3D-моделі, для надання їй кольору, забарвлення або ілюзії рельєфу. У моєму випадку текстура передає колір шкіри, маленькі деталі, які неможливо обробити полігонами.
Крайовими дефектами в даному випадку називаються, по-перше, полігони 3D моделі, які не несуть інформації (автоматично відновлені раніше), по-друге, окремі частини, що не мають відношення до головної моделі і, по-третє, нерівності краю тривимірної моделі, початковому етапі є ламану лінію.
Завданням даної курсової роботи було підготувати тривимірну модель до подальшої роботи шляхом виправлення перерахованих дефектів автоматично відновленої моделі.
Практичне застосування завдання дуже широко. Так, наприклад, модель особи може використовуватися у «віртуальній примірювальній» для примірки окулярів та інших аксесуарів. Так само важливоюобластю застосування є лицьова пластична хірургія, зміна характеристик обличчя. Безліч інших декоративних застосувань, таких як нанесення гравіювання за відновленою тривимірною моделлю і тому подібні прикладні варіанти використання моделі також вимагають попереднього очищення скана.
Підготовка моделі торса необхідна при роботі з моделлю пластичного хірурга, так само як і моделі обличчя.
Ця курсова робота була реалізована в рамках проекту зі створення інструментарію для пластичної хірургії, але, як зазначено вище, це не єдина сфера застосування.
Для реалізації поставленого завдання було обрано мову C#. Вибір обґрунтований можливістю швидкого створення прототипу даною мовою та наявністю необхідних математичних бібліотек. p align="justify"> Для роботи з текстурою була використана оболонка над відомою бібліотекою OpenCv, яка реалізована на C + +, OpenCvSharp [1].
OpenCvSharp була обрана із трьох найпоширеніших оболонок над OpenCv (EmguCv[2], OpenCvDotNet[3], OpenCvSharp[1]) з низки причин. По-перше, відсоток покриття функцій OpenCV у цієї бібліотеки досить високий. По-друге, є повна документація, надана розробниками бібліотеки. По-третє, спільно з бібліотекою, надається велика кількість прикладів використання, що, безперечно, є великим плюсом при ознайомленні з технологією.
За допомогою OpenCvSharp було реалізовано сегментацію текстури з метою відділення частин фону, що випадково потрапили в модель. Але у зв'язку з тим, що світлий фон, на якому відбувалися зйомки тестових моделей, практично зливався зі шкірою, і відокремлення його за допомогою сегментування дало погані результати, від цього було вирішено відмовитися, замінивши послідовним застосуванням інших методів.
Очищення скана було реалізовано поетапно, тобто. на кожному наступному етапі робочою моделлю вважається та, що отримана на попередньому.
Спочатку модель має вигляд:

Етапи робляться у такому порядку:
1) видалення «безкорисних» полігонів
2) видалення непов'язаних областей
3) відсікання площинами
Кожен із зазначених етапів буде нижче розглянуто докладніше.
Видалення «безкорисних полігонів»
Спочатку модель, з якою ведеться робота, є замкнутим 3D об'єктом, в якому присутні всі полігони, отримані з фотографії, а так само певне замикання довільними полігонами, в тих місцях, де дані відсутні. На наведених зображеннях такі полігони мають чорний колір і не мають ніякого смислового навантаження. Часто кількість таких полігонів доходила до 65%, що при сильній деталізації моделі призводило до надмірно великих обсягів даних (більш ніж у 2 рази щодо обсягу даних, отриманого в результаті виконання цього етапу очищення). Цим зумовлюється бажання зберігати безліч марної інформації, тобто. видалити такі полігони.
У моїй роботі полігон названий «марним», якщо всі його вершини мають відповідні координати на текстурі, що не належать фотографії моделі. У разі – вершини, текстурні координати яких мають відповідну точку на текстурі чорного чи близького до нього кольору.
На зображенні відзначені частини, що не належать до основної моделі і не пов'язані з нею. На видалення подібних елементів буде спрямовано наступний етап.
Видалення незв'язаних частин
Далі відбувається видалення частин, які пов'язані з основною моделлю.
Вся полігональна модель представляється у вигляді графа, що має декілька компонентівпов'язаності. Далі, пошуком завширшки за графом знаходяться всі його компоненти зв'язаності.
Т.к. модель спочатку відновлюється з кількох фотографій, то компонент пов'язаності, які належать до цієї моделі кілька. Ця проблема вирішується наступним чином - найбільші компоненти вважаються такими, що належать моделі, а решта невеликих частин – зайвими. Всі полігони, що належать цим зайвим частинам, також видаляються з моделі разом з точками їх текстури.
Результат після цього етапу виходить наступний.