Кіріспе

Компьютерлік графикалық алгоритм

Маршингтік кубтар – 1987 жылы Лоренсен мен Клайнның SIGGRAPH материалдарында жарияланған, үш өлшемді дискретті скалярлық өрістен (элементтері кейде воксельдер деп аталады) изожағын көпбұрышты торға түрлендіруге арналған компьютерлік графикалық алгоритм. Бұл алгоритмнің қолданылуы көбінесе медициналық визуализация, мысалы, КТ және МРТ сканерлеу деректерінің бейнелері, сондай-ақ арнайы эффектілер немесе әдетте метаболдар немесе басқа метабеттер деп аталатын 3D модельдеу салаларында болады. Маршингтік кубтар алгоритмі 3D үшін жасалған, ал оның 2D нұсқасы маршингтік квадраттар алгоритмі деп аталады.

Тарих

Алгоритмді Уильям Э. Лоренсен (1946–2019) және Харви Э. Клайн General Electric компаниясының зерттеулері нәтижесінде жасады. General Electric компаниясында олар компьютерлік томография және МРТ құрылғыларынан алынған деректерді тиімді визуализациялау жолын іздестірді. Алгоритмнің негізі – кіріс көлемін дискретті текшелер жиынтығына бөлу. Сызықтық реконструкциялық сүзгіні қолданғанда, әрбір текше, берілген изожағының бөлігін қамтитындықтан, оңай анықталады, себебі текше төбелеріндегі үлгілік мәндер мақсатты изожақ мәнін қамтуы тиіс. Изожақтың бір бөлігін қамтитын әрбір текше үшін, ішкі текшедегі трилинейлік интерполянттың мінез-құлқын шамалайтын үшбұрышты тор құрастырылады. Алгоритмнің алғашқы жарияланған нұсқасы айналу және көрістік симметрияны пайдаланды, сондай-ақ 15 бірегей жағдайдан тұратын кесте құру үшін өзгерістер енгізді. Дегенмен, текше беттеріндегі және ішіндегі трилинейлік интерполянттың мінез-құлқындағы белгісіздіктерге байланысты, Marching Cubes әдісімен құрастырылған торлар үздіксіздіктер мен топологиялық проблемаларды көрсетті. Тордың текшесін қарастыратын болсақ, беттік белгісіздік оның беттік төбелері кезектесіп, әртүрлі таңбаға ие болғанда пайда болады. Яғни, осы беттегі бір диагональдің төбелері оң, ал екіншісінің төбелері теріс болады. Байқаңыз, мұндай жағдайда беттік төбелердің таңбалары изожақты үшбұрыштаудың дұрыс тәсілін анықтау үшін жеткіліксіз. Сол сияқты, ішкі белгісіздік текше төбелерінің таңбалары дұрыс беттік үшбұрыштауды анықтау үшін жеткіліксіз болғанда, яғни бір текше конфигурациясы үшін бірнеше үшбұрыштау мүмкін болғанда пайда болады. Marching Cubes әдісінің танымалдылығы мен кеңінен қолданылуы алгоритмді жетілдіруге, белгісіздіктерді жоюға және интерполянттың мінез-құлқын дұрыс қадағалауға әкелді. 1988 жылы Дёрст Лоренсен мен Клайн ұсынған үшбұрышты кесте толық емес екенін және кейбір Marching Cubes жағдайлары бірнеше үшбұрыштауға мүмкіндік беретінін алғашқы болып атап өтті. Дёрсттің "қосымша сілтемесі" Вайвилл, Вайвилл және Макфитерстің бұрынғы, тиімді (де Араужоны қараңыз) изожақты көпбұрышқа түрлендіру алгоритміне қатысты. Кейін, 1991 жылы Нильсон мен Хаманн текше бетіндегі интерполянттың мінез-құлқындағы белгісіздіктердің бар екенін байқады. Олар асимптотикалық шешіш деп аталатын тест ұсынды, ол текше бетіндегі интерполянтты дұрыс қадағалайды. Натаражан 1994 жылы бұл белгісіздік мәселесі текшенің ішінде де пайда болатынын байқады. Автор өз жұмысында интерполянттың сындық нүктелеріне негізделген белгісіздікті жою тестін ұсынды және Marching Cubes үшбұрыштау кестесіне төрт жаңа жағдай қосты (3, 4, 6 және 7 жағдайлардың кіші жағдайлары). Бұл кезде алгоритмге және оның үшбұрышты кестесіне енгізілген барлық жақсартуларға қарамастан, Marching Cubes әдісімен құрастырылған торлар әлі де топологиялық сәйкессіздіктерге ие болды. 1995 жылы Черняев ұсынған Marching Cubes 33 трилинейлік интерполянттың топологиясын сақтауға бағытталған алғашқы изожақты алу алгоритмдерінің бірі болып табылады. Өз жұмысында Черняев үшбұрышты іздеу кестесіндегі жағдайлар санын 33-ке дейін арттырды. Содан кейін ол ішкі белгісіздіктерді шешудің басқа тәсілін ұсынды, ол асимптотикалық шешішке негізделген. Кейін, 2003 жылы Нильсон Черняевтің іздеу кестесі толық екенін және трилинейлік интерполянттың барлық мүмкін мінез-құлқын көрсете алатынын дәлелдеді, ал Левинер және басқалар алгоритмді іске асыруды ұсынды. Сондай-ақ 2003 жылы Лопес пен Бродли Натаражан ұсынған тесттерді кеңейтті, Черняев ұсынған Marching Cubes 33 алгоритмімен құрастырылған тордың топологиялық дұрыстығына зиян келтіретін алгоритмдік қателіктерді анықтап, түзетті.

Алгоритм

Алгоритм скалярлық өріс бойынша сегіз көршілес нүктені бірден қарастырады (осылайша көзге көрінбейтін куб құрайды), содан кейін осы куб арқылы өтетін изожағының бөлігін бейнелеуге қажетті көпбұрыштарды анықтайды. Жеке көпбұрыштар кейін қажетті бетке біріктіріледі. Бұл куб ішіндегі 256 мүмкін көпбұрыш конфигурациясының (2⁸=256) алдын ала есептелген массивіне индекс жасау арқылы іске асырылады, мұнда әрбір 8 скалярлық мән 8 биттік бүтін санның биті ретінде қарастырылады. Егер скалярлық мән изомәнінен жоғары болса (яғни, беттің ішінде болса), тиісті бит 1-ге қойылады, ал егер төмен болса (сыртында), 0-ге қойылады. Барлық сегіз скаляр тексерілгеннен кейін алынған соңғы мән – көпбұрыш индекстер массивінің нақты индексі болады. Соңында, құрылған көпбұрыштардың әрбір төбесі кубтың қабырғасы бойымен тиісті орналасқан жерге, сол қабырғамен байланысты екі скалярлық мәнді сызықтық интерполяциялау арқылы орналастырылады. Скалярлық өрістің әрбір тор нүктесіндегі градиенті сол нүкте арқылы өтетін гипотетикалық изожақтың нормальдық векторы болып табылады. Сондықтан, осы нормальдарды әрбір кубтың қабырғалары бойынша интерполяциялау арқылы, алынған торды жарықтандыру моделімен көлеңдеу үшін қажетті төбелердің нормальдарын табуға болады.

Патент мәселелері

Маршылдаған кубтар алгоритмінің іске асырылуы АҚШ патенті 4,710,876 ретінде тіркелген. Патенттің қамқорлығын айналып өту және кейбір куб конфигурацияларында маршылдаған кубтардың туындайтын шағын екіұштылық мәселесін шешу мақсатында маршылдаған тетраэдр деп аталатын тағы бір ұқсас алгоритм әзірленді. Патент 2005 жылы қолданыстан шықты және одан бері 20 жылдан астам уақыт өткендіктен (1 желтоқсан 1987 ж.), графикалық қоғамдастық оны роялти төлеместен заңды түрде пайдалануға құқылы.