<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современная техника и технологии» &#187; Никаноров Александр Андреевич</title>
	<atom:link href="http://technology.snauka.ru/author/alexandr-nikanorov/feed" rel="self" type="application/rss+xml" />
	<link>https://technology.snauka.ru</link>
	<description></description>
	<lastBuildDate>Fri, 30 Jan 2026 18:56:12 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Алгоритмы восстановления 3D объектов по 2D проекциям</title>
		<link>https://technology.snauka.ru/2014/07/4177</link>
		<comments>https://technology.snauka.ru/2014/07/4177#comments</comments>
		<pubDate>Sat, 12 Jul 2014 05:33:53 +0000</pubDate>
		<dc:creator>Никаноров Александр Андреевич</dc:creator>
				<category><![CDATA[Общая рубрика]]></category>
		<category><![CDATA[pseudo-wireframe]]></category>
		<category><![CDATA[pseudo-wireframe reconstruction]]></category>
		<category><![CDATA[reconstruction of 3D objects from 2D projections]]></category>
		<category><![CDATA[solid]]></category>
		<category><![CDATA[восстановление каркасных 3D объектов по 2D проекциям]]></category>
		<category><![CDATA[восстановление псевдокаркасной модели]]></category>
		<category><![CDATA[псевдокаркасная модель]]></category>

		<guid isPermaLink="false">https://technology.snauka.ru/?p=4177</guid>
		<description><![CDATA[Научный руководитель: Ахметсафина Римма Закиевна Доцент кафедры УРПО отделения Программной инженерии Национального исследовательского университета «Высшая школа экономики» Scientific advisor: Rimma Akhmetsafina Associate Professor of Software Engineering Department in School of Software Engineering National Research University Higher School of Economics &#160; Определения, обозначения и сокращения Псевдокаркасная модель (pseudo-wireframe) – 3D-модель, представляющая собой совокупность вершин и ребер (рис. 1). [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><strong><em>Научный руководитель:</em></strong><em> </em></p>
<p style="text-align: center;"><em>Ахметсафина Римма Закиевна</em></p>
<p style="text-align: center;"><em>Доцент кафедры УРПО отделения Программной инженерии Национального исследовательского университета «Высшая школа экономики»<br />
</em></p>
<p style="text-align: center;"><strong><em>Scientific advisor:</em></strong><em> </em></p>
<p style="text-align: center;"><em>Rimma Akhmetsafina</em></p>
<p style="text-align: center;"><em>Associate Professor of Software Engineering Department in </em><em>School of Software Engineering</em></p>
<p style="text-align: center;"><em>National Research University Higher School of Economics</em></p>
<p>&nbsp;</p>
<div align="center"><span><strong>Определения, обозначения и сокращения</strong></span></div>
<p><span><strong>Псевдокаркасная модель (pseudo-wireframe)</strong> – 3D-модель, представляющая собой совокупность вершин и ребер (рис. 1). Может включать в себя дополнительные ребра, которые принадлежат проекции, но могут не принадлежать итоговому объекту.</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M2.gif" alt="" /><br />
<span>Рис. 1</span></div>
<p><span><strong>Каркасная модель (wireframe)</strong> – 3D-модель, которая однозначно определяет форму отображаемого многогранного объекта (рис. 2).</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M3.gif" alt="" /><br />
<span>Рис. 2</span></div>
<p><span><strong>Solid объект</strong> – 3D-объект, представляющий собой совокупность вершин, ребер и граней (рис. 3).</span></p>
<div align="center"><span> </span><img src="http://content.snauka.ru/technology/4177_files/M4.gif" alt="" /><br />
<span>Рис. 3</span></div>
<p><span><strong>Комплексный</strong> <strong>чертеж</strong> - это совокупность двух или более (до шести) взаимосвязанных ортогональных проекций геометрической фигуры, расположенных на одной плоскости чертежа (рис. 4).</span></p>
<div align="center"><span> </span><img src="http://content.snauka.ru/technology/4177_files/M5.gif" alt="" /><br />
<span>Рис. 4 <em>– (а) – вид сверху (Top View), (б) – вид спереди (Front View), (в) – вид справа (Side View 1).</em></span></div>
<div><span>В настоящее время существует два основных подхода к восстановлению трехмерных (3D) объектов по двухмерным (2D) проекциям: метод отображения границ (Boundary representation) и метод конструктивной сплошной геометрии (Constructive solid geometry | CSG). Эти подходы используются для восстановления solid-объектов. При этом один комплексный чертеж может описывать большое количество 3D объектов.</span><br />
<span>Модели в методе отображения границ создаются при помощи топологии и геометрических объектов. Основными топологическими единицами являются: faces (лицевые грани, или поверхности), edges (ребра) и vertices (вершины). Face – это ограниченная часть поверхности, относящаяся в некоторому ребру, ребро – сторона грани. В рамках этого подхода также выделяют алгоритмы восстановления псевдокаркасной модели, которая с 1981 г. является одним из шагов в восстановлении solid объектов.</span><br />
<span>Основной концепцией CSG является  возможность математического описания любых сложных объектов при помощи более простых. Простейшими телами в CSG являются примитивы – тела простой формы, такие как куб, сфера, цилиндр, призма. Более сложные объекты создаются при помощи применения булевых операций (объединение, пересечение, разность) к некоторому набору примитивов.</span><span>1.</span></div>
<div><span><strong>1. Метод отображения границ</strong></span></div>
<div><span>Одни из первых исследований в области восстановления 3D моделей по проекциям были проведены профессором Masanori Idesawa в 1973 году и были представлены в его работе “A system to generate a solid figure from three views” [1]. Idesawa предложил способы восстановления 3D вершин, ребер и лицевых поверхностей для многогранных объектов. Кроме того, так как некоторый набор вершин и ребер (каркасная модель) может описывать несколько объектов, он предложи способ, как удалять “призрачные ” ребра для того чтобы в итоге получать уникальный объект. Сам предложенный алгоритм состоял из следующих шагов.</span><br />
<span>На вход программе подаются три проекции, которые представлены наборами вершин и ребер. Все вершины представляются в виде их координат <em>x</em>, <em>y</em>, <em>z</em> и порядковых номеров этих вершин. Пусть </span><img src="http://content.snauka.ru/technology/4177_files/M6.gif" alt="" /><span> описывает набор вершин в координатной плоскости XY, тогда </span><img src="http://content.snauka.ru/technology/4177_files/M7.gif" alt="" /><span> описывает набор вершин, которые соединяются с элементом из </span><img src="http://content.snauka.ru/technology/4177_files/M8.gif" alt="" /><span> ребрами. Если три или больше вершин находятся на одной прямой, они объединяются в группу. </span><img src="http://content.snauka.ru/technology/4177_files/M9.gif" alt="" /><span> описывает номера групп, к которым принадлежит вершина из </span><img src="http://content.snauka.ru/technology/4177_files/M10.gif" alt="" /><span> (рис. 5, [1] стр. 22).</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M11.gif" alt="" /><br />
<span>Рис. 5</span></div>
<div><span>Точки в 3D пространстве описываются как</span><br />
<img src="http://content.snauka.ru/technology/4177_files/M12.gif" alt="" /><br />
<img src="http://content.snauka.ru/technology/4177_files/M13.gif" alt="" /><span>,                                (1)</span><br />
<img src="http://content.snauka.ru/technology/4177_files/M14.gif" alt="" /><br />
<span>где </span><img src="http://content.snauka.ru/technology/4177_files/M15.gif" alt="" /><span> - координаты <em>i</em>-го элемента списка вершин,</span><br />
<span>с – некоторая координата,</span><br />
<img src="http://content.snauka.ru/technology/4177_files/M16.gif" alt="" /><span> - количество вершин в </span><img src="http://content.snauka.ru/technology/4177_files/M17.gif" alt="" /><span>,</span><br />
<img src="http://content.snauka.ru/technology/4177_files/M18.gif" alt="" /><span> - количество вершин в </span><img src="http://content.snauka.ru/technology/4177_files/M19.gif" alt="" /><span>,</span><br />
<img src="http://content.snauka.ru/technology/4177_files/M20.gif" alt="" /><span> - количество вершин в </span><img src="http://content.snauka.ru/technology/4177_files/M21.gif" alt="" /><span>.</span><br />
<span>Пусть (</span><img src="http://content.snauka.ru/technology/4177_files/M22.gif" alt="" /><span>) представляется комбинацией <em>i, j, k </em>элементов уравнения (1) так, что выполняются условия </span><img src="http://content.snauka.ru/technology/4177_files/M23.gif" alt="" /><span>. Тогда (</span><img src="http://content.snauka.ru/technology/4177_files/M24.gif" alt="" /><span>) образуют элемент матрицы связанных вершин </span><img src="http://content.snauka.ru/technology/4177_files/M25.gif" alt="" /><span>. Эти операции применяются в (1) ко всем комбинациям <em>i, j, k.</em> Условия </span><img src="http://content.snauka.ru/technology/4177_files/M26.gif" alt="" /><span> выполняются следующим образом:</span><br />
<span>Если </span><img src="http://content.snauka.ru/technology/4177_files/M27.gif" alt="" /><span>, тогда </span><img src="http://content.snauka.ru/technology/4177_files/M28.gif" alt="" /><br />
<span>Если </span><img src="http://content.snauka.ru/technology/4177_files/M29.gif" alt="" /><span>, тогда </span><img src="http://content.snauka.ru/technology/4177_files/M30.gif" alt="" /><span> ,</span><br />
<span>Если </span><img src="http://content.snauka.ru/technology/4177_files/M31.gif" alt="" /><span>, тогда </span><img src="http://content.snauka.ru/technology/4177_files/M32.gif" alt="" /><br />
<span>где </span><img src="http://content.snauka.ru/technology/4177_files/M33.gif" alt="" /><span> – положительной число, обозначающее погрешность.</span><br />
<span>Пусть </span><img src="http://content.snauka.ru/technology/4177_files/M34.gif" alt="" /><span> и </span><img src="http://content.snauka.ru/technology/4177_files/M35.gif" alt="" /><span> – две разные вершины в </span><img src="http://content.snauka.ru/technology/4177_files/M36.gif" alt="" /><span>. </span><img src="http://content.snauka.ru/technology/4177_files/M37.gif" alt="" /><span>, </span><img src="http://content.snauka.ru/technology/4177_files/M38.gif" alt="" /><span>, </span><img src="http://content.snauka.ru/technology/4177_files/M39.gif" alt="" /><span> используются для <em>i, j, k </em>в </span><img src="http://content.snauka.ru/technology/4177_files/M40.gif" alt="" /><span>. </span><img src="http://content.snauka.ru/technology/4177_files/M41.gif" alt="" /><span> является элементом </span><img src="http://content.snauka.ru/technology/4177_files/M42.gif" alt="" /><span> соответствующим </span><img src="http://content.snauka.ru/technology/4177_files/M43.gif" alt="" /><span>.</span><img src="http://content.snauka.ru/technology/4177_files/M44.gif" alt="" /><span>, </span><img src="http://content.snauka.ru/technology/4177_files/M45.gif" alt="" /><span>, </span><img src="http://content.snauka.ru/technology/4177_files/M46.gif" alt="" /><span> используются для обозначения <em>i, j, k </em>в </span><img src="http://content.snauka.ru/technology/4177_files/M47.gif" alt="" /><span>. </span><img src="http://content.snauka.ru/technology/4177_files/M48.gif" alt="" /><span> является элементом </span><img src="http://content.snauka.ru/technology/4177_files/M49.gif" alt="" /><span> соответствующим </span><img src="http://content.snauka.ru/technology/4177_files/M50.gif" alt="" /><span>. Далее </span><img src="http://content.snauka.ru/technology/4177_files/M51.gif" alt="" /><span> обозначает <em>k-</em>ый элемент </span><img src="http://content.snauka.ru/technology/4177_files/M52.gif" alt="" /><span>, который является элементом </span><img src="http://content.snauka.ru/technology/4177_files/M53.gif" alt="" /><span> соответствующим </span><img src="http://content.snauka.ru/technology/4177_files/M54.gif" alt="" /><span>. </span><img src="http://content.snauka.ru/technology/4177_files/M55.gif" alt="" /><span> обозначает <em>k-</em>ый элемент </span><img src="http://content.snauka.ru/technology/4177_files/M56.gif" alt="" /><span>, который является элементом </span><img src="http://content.snauka.ru/technology/4177_files/M57.gif" alt="" /><span> соответствующим </span><img src="http://content.snauka.ru/technology/4177_files/M58.gif" alt="" /><span>. Похожие переменные принимаются для плоскостей YZ и XZ.</span><br />
<span>Таким образом результатом следующих булевых операций является определение того, соединяются ли вершины </span><img src="http://content.snauka.ru/technology/4177_files/M59.gif" alt="" /><span> и </span><img src="http://content.snauka.ru/technology/4177_files/M60.gif" alt="" /><span> ребром:</span><br />
<img src="http://content.snauka.ru/technology/4177_files/M61.gif" alt="" /><br />
<img src="http://content.snauka.ru/technology/4177_files/M62.gif" alt="" /><br />
<img src="http://content.snauka.ru/technology/4177_files/M63.gif" alt="" /><br />
<img src="http://content.snauka.ru/technology/4177_files/M64.gif" alt="" /><br />
<img src="http://content.snauka.ru/technology/4177_files/M65.gif" alt="" /><br />
<img src="http://content.snauka.ru/technology/4177_files/M66.gif" alt="" /><span>При восстановлении лицевых поверхностей используются следующие правила.</span><br />
<span>a)        Существует <em>k</em> лицевых поверхностей, каждая из которых содержит вершину, находящуюся на пересечении <em>k</em> ребер;</span><br />
<span>b)        Ребро представляет собой линию пересечения двух лицевых поверхностей, а в списках ребер лицевых поверхностей вершины этого ребра идут в разном порядке;</span><br />
<span>c)        Граница лицевой поверхности замкнута.</span><br />
<span>Для начала необходимо используя эти правила найти грань, которая может быть уникально определена. Затем нужно провести поиск всех ребер грани, сохранить эти ребра в список и отсортировать, чтобы они удовлетворяли правилу (b). В конце нужно отсортировать вершины ребер против часовой стрелки для внешней лицевой поверхности и по часовой стрелке для внутренней поверхности грани.</span><br />
<span> Это был один из первых подходов к восстановлению solid объектов. Впоследствии алгоритмы, в которых происходит работа с ребрами, получили общее название </span>Метод отображения границ<strong>.</strong></div>
<div><strong>1.1. <strong>В</strong>осстановление псевдокаркасной модели</strong><br />
<strong>1.1.1. Алгоритм Markowsky и Wesley</strong></div>
<div>
<p><span>В 1980 году George Markowsky, профессор университета Мэна, и Michael A. Wesley из исследовательского института IBM Томаса Уотсона в своей работе “Fleshing out Projections” [2] предложили использовать псевдокаркасную модель как промежуточную стадию процесса восстановления solid объекта. Эта работа до сих пор является основополагающей для разработки новых алгоритмов в рамках метода отображения границ. Согласно подходу Markowsky и Wesley на вход алгоритму подаются три файла проекции комплексного чертежа (вид сверху, вид спереди и вид справа). Предполагается, что все проекции заданы в одинаковом масштабе. Файл каждой проекции анализируется, и информация о хранящихся в нем геометрических компонентах – вершинах и ребрах – записывается в матрицы </span><img src="http://content.snauka.ru/technology/4177_files/M67.gif" alt="" /><span>:</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M68.gif" alt="" /><span> ,</span></div>
<p><span>где </span><img src="http://content.snauka.ru/technology/4177_files/M69.gif" alt="" /><span> - координаты вершины &#8211; начала ребра,</span><br />
<img src="http://content.snauka.ru/technology/4177_files/M70.gif" alt="" /><span> - координаты вершины &#8211; конца ребра,</span><br />
<span>где </span><img src="http://content.snauka.ru/technology/4177_files/M71.gif" alt="" /><span>,</span><br />
<span>n – количество ребер в проекции.</span></p>
<div>
<p><span>Далее для каждой проекции создаются матрицы </span><img src="http://content.snauka.ru/technology/4177_files/M72.gif" alt="" /><span> и </span><img src="http://content.snauka.ru/technology/4177_files/M73.gif" alt="" /><span> для хранения информации о вершинах и ребрах соответственно:</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M74.gif" alt="" /><span> ,</span></div>
<p><span>где </span><img src="http://content.snauka.ru/technology/4177_files/M75.gif" alt="" /><span> – порядковый номер <em>i</em>-ой вершины,</span><br />
<img src="http://content.snauka.ru/technology/4177_files/M76.gif" alt="" /><span> - координаты <em>i</em>-ой вершины, <em>i</em> =1,2,…,<em>k</em></span><br />
<span><em>k</em> – количество вершин проекции.</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M77.gif" alt="" /><span> ,</span></div>
<p><span>где </span><img src="http://content.snauka.ru/technology/4177_files/M78.gif" alt="" /><span> - объект типа «ребро», <em>i</em> = 1,2,…,<em>n</em></span><br />
<span><em>n</em> – количество ребер проекции.</span></p>
<p><span>Каждый объект типа «ребро» содержит следующую информацию:</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M79.gif" alt="" /><span> ,</span></div>
<p><span>где </span><img src="http://content.snauka.ru/technology/4177_files/M80.gif" alt="" /><span> - порядковый номер ребра,</span><br />
<img src="http://content.snauka.ru/technology/4177_files/M81.gif" alt="" /><span> – порядковый номер вершины, определяющей начало ребра,</span><br />
<img src="http://content.snauka.ru/technology/4177_files/M82.gif" alt="" /><span> - порядковый номер вершины, определяющей конец ребра,</span><br />
<img src="http://content.snauka.ru/technology/4177_files/M83.gif" alt="" /><span> - тип ребра (обычное / невидимое),</span><br />
<span><em>i</em> = 1,2,…,n,</span><br />
<span><em>n – </em>количество ребер проекции.</span></p>
<div>
<p><span>Проекции могут быть определены в любой части координатной плоскости, поэтому для того чтобы объединить их в одной модели необходимо, чтобы хотя бы одна вершина каждой проекции находилась на оси X, хотя бы одна вершина каждой проекции находилась на оси Y, а сами проекции полностью находились в первом квадранте. После этого необходимо расположить проекции друг относительно друга в 3D пространстве. Для этого боковая проекция поворачивается на 90є вокруг оси Y таким образом, что оказывается на координатной плоскости YZ, а верхняя проекция поворачивается на 90є вокруг оси X таким образом, что оказывается на координатной плоскости XZ (рис. 6).</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M84.gif" alt="" /><br />
<span>Рис. 6</span></div>
<div>
<p><span>Далее полученные данные объединяются в одной матрице. На этом этапе каждая проекция находится на своей координатной плоскости. Для каждой проекции из каждой вершины необходимо провести перпендикуляр к соответствующей координатной плоскости: XY для передней проекции, YZ для боковой проекции и XZ для верхней проекции (рис. 7).</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M85.gif" alt="" /><br />
<span>Рис. 7</span></div>
<div>
<p><span> В полученной модели нужно определить точки пересечения ребер (рис. 8).</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M86.gif" alt="" /><br />
<span>Рис. 8</span></div>
<div><span> Новые ребра, определяемые новыми точками пересечения, добавляются в матрицу ребер. Длинные ребра, состоящие и нескольких более коротких, удаляются из матрицы. На этом этапе найдены все ребра псевдокаркасной модели, ортогональные хотя бы к одной координатной плоскости.</span><br />
<span>Для того чтобы найти не ортогональные к проекциям ребра, нужно спроецировать модель на одну из координатных плоскостей. Для каждой вершины в модели ищется вершина на соответствующей проекции и соответствующими двумя координатами (x, y для фронтальной проекции; x, z для верхней проекции; y, z для боковой проекции). В проекции находятся и запоминаются координаты вершин, которые соединены ребрами с проверяемой вершиной. В модели ребрами соединяются вершины с запомненными двухмерными координатами и проверяемая вершина, если таких ребер еще нет в матрице (рис. 9). Эта операция выполняется для каждой вершины модели, и каждая вершина сравнивается с каждой проекцией.</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M87.gif" alt="" /><br />
<span>Рис. 9</span></div>
<div>
<p><span>На этом этапе в модели слишком много лишних ребер. Необходимо спроецировать ее на каждую координатную плоскость и сравнить с соответствующей проекцией. Ребра модели, не принадлежащие проекции, удаляются (рис. 10). Таким образом на выходе получается псевдокаркасная модель, заданная тремя проекциями.</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M88.gif" alt="" /><br />
<span>Рис. 10</span></div>
<p><strong>1.1.2. Алгоритм Sakurai и Gossard</strong></p>
<p>В 1983 году Sakurai и Gossard [3] модифицировали алгоритм Markowsky и Wesley. На вход алгоритму подаются три проекции комплексного чертежа. Модифицированный алгоритм обрабатывает цилиндрические, конические, сферические и тороидальные примитивы, прямолинейные невидимые ребра (hidden edges) и невидимые дуги (hidden arcs), которые не учитывались в алгоритме Markowsky и Wesley.</p>
<div>
<p><span>В инженерных чертежах видимые на проекции ребра, образованные пересечением двух граней, обозначаются сплошными линиями, будем называть их стандартными (standart edge, ES).</span><br />
<span>Невидимые на проекции ребра и дуги обозначаются пунктирными линиями.</span><br />
<span>Тела вращения, такие как тор и сфера, не имеют ребер. На проекциях комплексного чертежа изображаются не ребра, а контуры таких тел. Будем называть их силуэтными ребрами (silhouette  edge).  Различают прямые силуэтные ребра (ELS – line silhouette  edge) и силуэтные дуги (EAS &#8211; arc silhouette  edge).</span><br />
<span>В объектах с плоскими и изогнутыми лицевыми поверхностями две лицевые поверхности могут соприкасаться вдоль мнимого общего ребра. Будем называть его ребром касания (tangency edge). Ребра касания так же могут быть прямыми (ELT – line tangency edge) и дугами (EAT &#8211; arc tangency edge). Ни на одной из проекций ребра касания не видны  (рис. 11).</span><br />
<img class="aligncenter" src="http://content.snauka.ru/technology/4177_files/M89.gif" alt="" /></p>
<div align="center"><span>Рис. 11</span></div>
<div><span>Алгоритм восстановления псевдокаркасной модели Sakurai и Gossard состоит из трех шагов: восстановление вершин на 2D проекциях, восстановление 3D вершин и восстановление ребер.</span><br />
<span><em>Восстановление вершин на 2D проекциях.</em> Используя подсчет точек пересечения можно найти вершины, образованные только стандартными ребрами. Вершины, образованные силуэтными ребрами, ребрами касания этим способом найти невозможно. Поэтому в каждой проекции необходимо найти вершины, где прямые соприкасаются с дугами (вершины с атрибутом касания), и вершины, где параллельные осям координат прямые соприкасаются с дугами (вершины с атрибутом «силуэт»). После этого используя координаты найденных вершин, линии в остальных проекциях обрезаются, и образуются вершины-кандидаты на силуэтных ребрах и ребрах касания (вершины с атрибутами «создана ребром касания» и «создана силуэтным ребром»). Такие вершины могут иметь более одного атрибута.</span><br />
<span><em>Восстановление 3D вершин</em>. 3D координаты создаются из пар двухмерных координат, которые имеют одну общую координату (x, y или z). После этого вершина проецируется на третью проекцию. Если проецируемая вершина совпадает с одной из вершин этой проекции, то 3D вершина найдена. На этом этапе создаются четыре типа вершин:</span><br />
<span>·        </span><span>Вершина, образованная стандартными ребрами (вершина с параметром «стандартная»);</span><br />
<span>·        </span><span>Вершина с параметром касания, которая формируется из трех вершин: одной с параметром касания и двух вершин с параметрами «создана ребром касания»;</span><br />
<span>·        </span><span>Вершина с параметром «силуэт», которая формируется из трех вершин: одной с параметром «силуэт» и двумя вершинами с параметрами «создана силуэтным ребром»;</span><br />
<span>·        </span><span>Вершина с параметром «двойной силуэт», которая формируется из двух вершин с параметром «силуэт».</span><br />
<span>После этого восстанавливаются вершины непосредственно из проекций. Тороидальные поверхности выделяются, если на трех проекциях:</span><br />
<span>·        </span><span>две дуги на различных проекциях имеют одинаковый  радиус;</span><br />
<span>·        </span><span>одна из координат центров двух дуг совпадает;</span><br />
<span>·        </span><span>расстояния от центральных точек проекций до центра дуги в третьей проекции одинаковы.</span><br />
<span>Сферические поверхности выделяются, если на трех проекциях:</span><br />
<span>·        </span><span>3D вершина, которая формируется из центров дуги на двух проекциях, имеет соответствующий центр дуги в третьей проекции.</span><br />
<span>Так как тор формируется из дуг, то на его поверхности можно генерировать вершины. Этим вершинам задается параметр «тор».</span><br />
<span>Ребра формируются из 3D вершин, полученных на втором шаге и могут быть трех типов:</span><br />
<span>·        </span><span><strong>Стандартные ребра</strong>: Для двух 3D вершин проверяется, лежат ли их проекции на одной линии или арке в каждой проекции. Если это условие выполняется, вершины соединяются ребром или аркой.</span><br />
<span>·        </span><span><strong>Силуэтные ребра</strong>: Для двух 3D вершин с параметром «силуэт» проверяется, лежат ли их проекции на одной линии или дуге в каждой проекции. Если это условие выполняется, вершины соединяются ребром или дугой.</span><br />
<span>·        </span><span><strong>Ребра касания</strong>: Линейно касающиеся ребра формируются из двух вершин с параметром касания, чьи 2D вершины лежат на одной дуге или коаксиальной дуге под одним углом (рис. 12).</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M92.gif" alt="" /><br />
<span>Рис. 12</span></div>
<div>
<p><span>Дуговое ребро касания (рис. 13, [1] стр. 248) формируются следующим образом. Для двух дуговых ребер, каждое из которых имеет хотя одну вершину с параметром касания, параметром тора или параметром сферы, проверяются, лежат ли они на одном торе или одной сфере. Если это условие выполняется, создается дуговое ребро касания при помощи соединения двух вершин каждого дугового ребра.</span></p>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M93.gif" alt="" /><br />
<span>Рис. 13</span></div>
<div><span>Как только все ребра сгенерированы, необходимо провести проверку нахождения вершин на трех или более ребрах. Если это условие не выполняется, то вершина удаляется из списка, и операция по формированию ребер начинается сначала с новым набором вершин. На выходе получается псевдокаркасная модель с цилиндрическими, коническими, сферическими и тороидальными ребрами.</span><br />
<span>В 2013 году Lappo Governi, Rocco Furferi, Matteo Palai </span><span>и</span><span> Yary Volpe </span><span>предложили</span><span> </span><span>метод</span><span> </span><span>восстановления</span><span> 3D </span><span>моделей</span><span> </span><span>из</span><span> </span><span>растровых</span><span> 2D </span><span>изображений</span><span> [4]. </span><span>Их</span><span> </span><span>подход</span><span> </span><span>заключается</span><span> </span><span>в</span><span> </span><span>построении</span><span> </span><span>каркасной</span><span> </span><span>модели</span><span> </span><span>объекта</span><span> </span><span>в</span><span> </span><span>виде</span><span> </span><span>воксельного</span><span> </span><span>облака</span><span>, </span><span>после</span><span> </span><span>чего</span><span>вычисляются</span><span> </span><span>возможные</span><span> </span><span>пересечения</span><span> </span><span>линий</span><span>. </span><span>Сами</span><span> </span><span>линии</span><span> </span><span>помечаются</span><span> </span><span>порядковыми</span><span> </span><span>номерами</span><span>. </span><span>Далее</span><span> 3D </span><span>каркасная</span><span> </span><span>модель</span><span> </span><span>строится</span><span> </span><span>из</span><span> </span><span>сплайнов</span><span>, </span><span>начинающихся</span><span> </span><span>из</span><span> </span><span>каждой</span><span> </span><span>найденной</span><span> </span><span>линии</span><span>. </span><span>Линии</span><span> </span><span>в</span><span> </span><span>зонах</span><span> </span><span>пересечения</span><span> </span><span>перепроверяются</span><span>. </span><span>Они</span><span> </span><span>также</span><span>предложили</span><span> </span><span>свой</span><span> </span><span>метод</span><span> </span><span>создания</span><span> </span><span>поверхностей</span><span> </span><span>в</span><span> </span><span>каркасной</span><span> </span><span>модели</span><span>, </span><span>основанный</span><span> </span><span>на</span><span> </span><span>работе</span><span> Balai </span><span>и</span><span> Waggenpack [5].</span></div>
<div><span><strong>2.К</strong></span><strong>онструктивная сплошная геометрия<br />
</strong>Первые исследования в рамках второго подхода к восстановлению 3D объектов по 2D проекциям были произведены Aldefel в 1983 году [1]. На входе в программу принимаются три проекции, из которых считываются данные о примитивах. Aldefel описывает возможные связи между примитивами. Одной из основных связей является CONTACT(<em>n, m)</em>, которая обозначает что <em>n </em>и <em>m </em>связаны хотя бы одной общений точкой. Петлями являются контуры фигуры, например фигура на рисунке 14а является контуром, петлей, фигура на рисунке 14б содержит петлю в петле, а фигура на рисунке 14в является петлей с линией внутри.</div>
<div>
<div align="center"><img src="http://content.snauka.ru/technology/4177_files/M94.gif" alt="" width="65" height="78" />       <img src="http://content.snauka.ru/technology/4177_files/M95.gif" alt="" />       <img src="http://content.snauka.ru/technology/4177_files/M96.gif" alt="" /><br />
<span>а)                              б)                    в)</span></div>
<div align="center"><span>Рис. 14</span></div>
<div><span>Шаг 1: Установить все отношения между примитивами, которые связаны связью CONTACT.</span><br />
<span>Шаг 2: Найти, сохранить в списке все элементарные петли (петли, которые не содержат других петель) и отметить их как «открытые». </span><br />
<span>Шаг 3: Вычисление объема всех «открытых» петель и выбор петли <strong>P</strong> с максимальным объемом. Также случайным образом выбирается проекция </span><img src="http://content.snauka.ru/technology/4177_files/M98.gif" alt="" /><span>, которая будет считаться базовым силуэтом. </span><br />
<span>Шаг 4: Предположим, что <strong>P</strong> описывает базовый силуэт одного или нескольких объектов. Для того чтобы доказать или опровергнуть это, необходимо выполнить следующий алгоритм:</span><br />
<span>·        </span><span>Случайным образом выбирается проекция </span><img src="http://content.snauka.ru/technology/4177_files/M99.gif" alt="" /><span> и в ней ищутся все прямоугольные силуэты </span><img src="http://content.snauka.ru/technology/4177_files/M100.gif" alt="" /><span>, которые совпадают с <strong>P</strong>. Если таких силуэтов не найдено, выйти из алгоритма. </span><br />
<span>·        </span><span>В оставшейся проекции </span><img src="http://content.snauka.ru/technology/4177_files/M101.gif" alt="" /><span> найти для каждого </span><img src="http://content.snauka.ru/technology/4177_files/M102.gif" alt="" /><span> прямоугольный силуэт </span><img src="http://content.snauka.ru/technology/4177_files/M103.gif" alt="" /><span>, совпадающий как с </span><img src="http://content.snauka.ru/technology/4177_files/M104.gif" alt="" /><span>, так и с <strong>P</strong>. Если таких силуэтов не найдено, выйти из алгоритма.</span><br />
<span>·        </span><span>Проанализировать <strong>P</strong> и найти все примитивы, которые требуют наличия линий в одной или обеих проекциях (базовая проекция не учитывается).</span><br />
<span>·        </span><span>Для каждой пары (</span><img src="http://content.snauka.ru/technology/4177_files/M105.gif" alt="" /><span>) найти полный список линий, которые описываются их примитивами. Если операция прошла успешно, итоговый объект представлен объединением </span><img src="http://content.snauka.ru/technology/4177_files/M106.gif" alt="" /><span> и списка линий, полученных на этом шаге.</span><br />
<span>Шаг 5: «Расширить» петлю <strong>P</strong>, создав все петли, которые включают в себя петли, прилежащие к <strong>P</strong>, если их еще не существует. Добавить их в список, отметить новые зависимости, отметить новые петли как «открытые», а <strong>P</strong> пометить как «закрытую».</span><br />
<span>Шаг 6: Спроецировать полученные объекты на плоскости проекций, чтобы определить, описываются ли они входными проекциями. Если это так, то на этом работа алгоритма завершается, в противном случае перейти к шагу 3.</span><br />
<span> Описанный алгоритм работает только для объектов равномерной толщины. Подход носит название Конструктивная сплошная геометрия (Constructive solid geometry | CSG), и его основной концепцией является  возможность математического описания любых сложных объектов при помощи более простых. Простейшими телами в CSG являются примитивы – тела простой формы, такие как куб, сфера, цилиндр, призма. Более сложные объекты создаются при помощи применения булевых операций (объединение, пересечение, разность) к некоторому набору примитивов.</span></div>
<div><strong>2.1.Восстановление сплошных тел по шести проекциям</strong></div>
<div>В 1997 году Shum предложил алгоритм, основанный на инкрементальном выдавливании (incremental extrusion), в котором для восстановления 3D модели используются шесть проекций [7]. Алгоритм не обрабатывает пунктирные линии на проекциях (невидимые в данной проекции). На проекциях допускаются прямые линии и круги, а также многогранные объекты с гранями, ортогональными хотя бы к одной оси координат, и ортогональные цилиндры.</div>
<div>
<div><span>В начале работы проекции делятся на три группы смежных проекций и располагаются соответствующим образом друг относительно друга. Для каждой пары проекций определенные области в одной из проекций, называемой образующей, инкрементально выдавливаются в соответствии с информацией, содержащейся в парной проекции, называемой направляющей. Для всех полученных solid объектов будет использована булева операция сложения для получения 3D объекта.</span><br />
<span>Пусть </span><img src="http://content.snauka.ru/technology/4177_files/M107.gif" alt="" /><span> является разделителем параметров выдавливания.</span><br />
<span>Контуры выделяются из графов ребер проекций. В процессе инкрементального выдавливания один из контуров становится образующим, а второй – направляющим. Так как образующий контур и направляющий не должны быть параллельны, следующие операции выдавливания не выполняются :</span><img src="http://content.snauka.ru/technology/4177_files/M108.gif" alt="" /><span>, </span><img src="http://content.snauka.ru/technology/4177_files/M109.gif" alt="" /><span>, </span><img src="http://content.snauka.ru/technology/4177_files/M110.gif" alt="" /><span>, </span><img src="http://content.snauka.ru/technology/4177_files/M111.gif" alt="" /><span> и т.д. , где <em>f</em> – front, <em>R</em> – rear, <em>t</em> – top, <em>b</em> – bottom, <em>r</em> – right, <em>l</em> – left. Кроме того, существует только шесть комбинаций пар проекций для процесса инкрементального выдавливания:</span><br />
<img src="http://content.snauka.ru/technology/4177_files/M112.gif" alt="" /><br />
<img src="http://content.snauka.ru/technology/4177_files/M113.gif" alt="" /><br />
<img src="http://content.snauka.ru/technology/4177_files/M114.gif" alt="" /><br />
<img src="http://content.snauka.ru/technology/4177_files/M115.gif" alt="" /><br />
<span>Инкрементальное выдавливание делится на три шага: сегментация образующих контуров в сегментные контуры, подсчет толщины выдавливания в направляющем контуре, совершение выдавливания.</span><br />
<span>В процессе инкрементального выдавливания учитываются только образующие контуры, внешние линии образующей грани. В начале находятся все точки поворота в направляющем контуре, затем они проецируются перпендикулярно на общую грань проекции. Эти точки используются для разделения образующего контура не несколько сегментных контуров. Результатом является матрица <strong>SGS:</strong></span><br />
<img src="http://content.snauka.ru/technology/4177_files/M116.gif" alt="" /><span>],</span><br />
<span>где </span><img src="http://content.snauka.ru/technology/4177_files/M117.gif" alt="" /><span> - <em>i</em>-ый сегментный контур,</span><br />
<span><em>n</em> – количество сегментных контуров для выдавливания.</span><br />
<span>Расстояния между точками поворота вдоль направления выдавливания определяют толщину выдавливания: d-</span><img src="http://content.snauka.ru/technology/4177_files/M118.gif" alt="" /><span>d-</span><img src="http://content.snauka.ru/technology/4177_files/M119.gif" alt="" /><span> d-</span><img src="http://content.snauka.ru/technology/4177_files/M120.gif" alt="" /><span>, где m – количество инкрементальных выдавливаний, d-</span><img src="http://content.snauka.ru/technology/4177_files/M121.gif" alt="" /><span> – инкрементальное расстояние для sg<sub>i</sub>-контуров для выдавливания вдоль направляющего контура.</span><br />
<span>В процессе самого выдавливания все сегментные контуры соединяются с толщинами выдавливания для того чтобы сформировать примитивные solid-объекты. Булева операция объединения примитивных solid-объектов затем создаст выдавленный solid.</span><br />
<span>В итоге для каждой пары проекций объединение всех примитивов создаст два выдавленных solid-объекта. К ним применяется операция пересечения, чтобы сформировать solid пересечения. Пересечение пересеченных solid-объектов для всех пар проекций создаст итоговый solid.</span><br />
<span>В 2005 году Jitendra Dimri и B Gurumoorthy в своей работе [8] описали алгоритм восстановления 3D моделей на основе объемов (volume-based). Их подход является ярким примером CSG подхода: изображение в формате DXF анализируется, и выделяются геометрические примитивы. Из примитивов создаются простейшие solid объекты, их существование перепроверяется. В конце к полученному набору solid объектов применяются булевые операции. Алгоритм Dimri и Gurumoorthy также обрабатывает вспомогательные проекции.</span></div>
<div><span><strong>Заключение<br />
</strong></span>В работе рассмотрены основные подходы к восстановлению 3D псевдокаркасных моделей и solid объектов по заданным 2D проекциям.</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>https://technology.snauka.ru/2014/07/4177/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
