<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kst179</id>
	<title>Алговики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kst179"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Kst179"/>
	<updated>2026-10-23T07:34:06Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23568</id>
		<title>Участник:Kst179/Metropolis light transport</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23568"/>
		<updated>2017-10-24T20:05:25Z</updated>

		<summary type="html">&lt;p&gt;Kst179: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Metropolis light transport&amp;lt;ref&amp;gt;Veach E., Guibas L. J. Metropolis light transport //Proceedings of the 24th annual conference on Computer graphics and interactive techniques. – ACM Press/Addison-Wesley Publishing Co., 1997. – С. 65-76.&amp;lt;/ref&amp;gt; &amp;amp;mdash; это алгоритм, применяющий один из вариантов метода Монте Карло &amp;amp;mdash; метод Метрополиса-Гастинга&amp;lt;ref&amp;gt;Hastings W. K. Monte Carlo sampling methods using Markov chains and their applications //Biometrika. – 1970. – Т. 57. – №. 1. – С. 97-109.&amp;lt;/ref&amp;gt;, Монте Карло на Марковских цепях (&#039;&#039;&#039;Metropolis-Hastings, Markov chain Monte Carlo, MCMC&#039;&#039;&#039;), для генерации изображений при помощи физического описания трехмерных сцен. Алгоритм используется в компьютерной графике, решает задачу глобального освещения (точное моделирование световых эффектов). Отличается от классических методов, таких как Bidirectional path tracing скоростью работы и точностью моделирования (возвращает несмещенное значение).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основной объект с которыми работает трассировщик лучей это &#039;&#039;пути&#039;&#039; от источников света до камеры. Путь это ломанная, каждое звено которой имитирует направление движения фотона, ломанная начинается в источнике света, изменяет направление при попадании на какую либо поверхность, а последнее звено должно заканчиваться в камере. Обозначим путь как &amp;lt;math&amp;gt;\overline{x} = x_1, x_2, \dots, x_k&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;gt;1, x_i&amp;lt;/math&amp;gt; &amp;amp;mdash; координата на поверхности некоторого объекта от которого отражается луч). Для каждого пути введем некоторую функцию &amp;lt;math&amp;gt;f(\overline{x})&amp;lt;/math&amp;gt;, обозначающую яркость, с которой этот луч освещает пиксель матрицы  камеры.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ray.jpg|справа|350пкс|Пример трассировки лучей]]&lt;br /&gt;
&lt;br /&gt;
Обычные методы трассировки лучей генерируют очень много путей и потом аггрегируют значение яркости по каждому пикселю. Это может быть очень долго, из за того что много компьютерного времени уходит на генерацию лучей с малой яркостью последующий вклад которых в результатирующее изображение мал (пример &amp;amp;mdash; две комнаты, разделенные слегка приоткрытой дверью в одной находится источник света, в другой &amp;amp;mdash; камера, тогда большинство независимо сгенерированных путей будет проходить сквозь стену, а значит иметь нулевую яркость). &lt;br /&gt;
&lt;br /&gt;
В &#039;&#039;&#039;MLT&#039;&#039;&#039; путь считается случайной величиной, с плотностью вероятности &amp;lt;math&amp;gt;p(\overline{x}) = \frac{1}{b}f(\overline{x}), b=const&amp;lt;/math&amp;gt;, а генерация путей происходит согласно этому распределению. Тогда получается что более весомых путей мы генерируем больше, а пути проходящие через стены или на которых теряется слишком много яркости мы практически не рассматриваем. Также если генерировать пути согласно вышеописанному распределению то выражение для подсчета окончательного изображения &amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x}&amp;lt;/math&amp;gt;, (где &amp;lt;math&amp;gt;m_j&amp;lt;/math&amp;gt; &amp;amp;mdash; значение &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го пикселя, &amp;lt;math&amp;gt;\Omega&amp;lt;/math&amp;gt; &amp;amp;mdash; пространство всевозможных путей, &amp;lt;math&amp;gt;w_j(\overline{x})&amp;lt;/math&amp;gt; &amp;amp;mdash; индикатор того, что &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt; попадает в &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-й пиксель) можно заменить на следующую несмещенную оценку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x} = \int _{\Omega} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} p(\overline{x})d\overline{x} = \mathbb{E} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} \approx \frac{1}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})\frac{f(\overline{x_i})}{p(\overline{x_i})} = \frac{b}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
То есть после семплирования путей &amp;lt;math&amp;gt;\overline{x_1}, \overline{x_2}, \dots, \overline{x_N}&amp;lt;/math&amp;gt; получаем что яркость j-го пикселя пропорциональна количеству приходящих в этот пиксель лучей а от их вида никак не зависит (но для этого необходимо чтобы пути строго соответствовали своему распределению).&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Для семплирования путей из, вообще говоря, неизвестного нам распределения &amp;lt;math&amp;gt;p(\overline{x})&amp;lt;/math&amp;gt; используется метод &#039;&#039;&#039;MCMC&#039;&#039;&#039;. Построим следующую марковскую цепь: введем некоторую вероятность &amp;lt;math&amp;gt;K(\overline{y}|\overline{x})&amp;lt;/math&amp;gt; перехода &amp;lt;math&amp;gt;\overline{x} \rightarrow \overline{y}&amp;lt;/math&amp;gt;. Выберем произвольный путь &amp;lt;math&amp;gt;\overline{x_0}&amp;lt;/math&amp;gt; и случайным блужданием будем переходить от &amp;lt;math&amp;gt;\overline{x_{i-1}}&amp;lt;/math&amp;gt; к &amp;lt;math&amp;gt;\overline{x_i}&amp;lt;/math&amp;gt;. Пусть &amp;lt;math&amp;gt;\overline{x_0}&amp;lt;/math&amp;gt; распределено с некоторой плотностью вероятности &amp;lt;math&amp;gt;p_0(\overline{x})&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; будет распределено как &amp;lt;math&amp;gt;p_i(\overline{x}) = \int_{\Omega} K(\overline{x}|\overline{y})p_{i-1}(\overline{y})d\overline{y}&amp;lt;/math&amp;gt;. При некоторых условиях на &amp;lt;math&amp;gt;K(\overline{x}|\overline{y}), ~\underset{i\rightarrow\infty}{lim}p_i(\overline{x}) = p(\overline{x})&amp;lt;/math&amp;gt;, откуда следует что при правильном выборе &amp;lt;math&amp;gt;K(\overline{x}|\overline{y})&amp;lt;/math&amp;gt;, и большом количестве переходов, независимо от выбора &amp;lt;math&amp;gt;\overline{x_0}&amp;lt;/math&amp;gt;, все &amp;lt;math&amp;gt;\overline{x_i}&amp;lt;/math&amp;gt; будут распределены согласно вероятности &amp;lt;math&amp;gt;p(\overline{x})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть мы находимся в состоянии (пути) &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt;, сделаем над путем некоторую мутацию (небольшое изменение) и получим некоторый другой путь &amp;lt;math&amp;gt;\overline{y}&amp;lt;/math&amp;gt;. На пространстве всевозможных мутаций над &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt; введем вероятность &amp;lt;math&amp;gt;T(\overline{y}| \overline{x})&amp;lt;/math&amp;gt; того что при мутации &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt; получится &amp;lt;math&amp;gt;\overline{y}&amp;lt;/math&amp;gt;. Далее мы можем принять эту мутацию или отклонить с некоторой вероятностью &amp;lt;math&amp;gt;a(\overline{y}|\overline{x})&amp;lt;/math&amp;gt;. Если мутация принимается, то совершается переход по марковской цепи &amp;lt;math&amp;gt;\overline{x} \rightarrow \overline{y}&amp;lt;/math&amp;gt;,  иначе &amp;lt;math&amp;gt;\overline{x}\rightarrow\overline{x}&amp;lt;/math&amp;gt;, т.е. мы остаемся в том же состоянии. Таким образом мы сконструировали &amp;lt;math&amp;gt;K(\overline{y}|\overline{x}) = a(\overline{y}|\overline{x})T(\overline{y}|\overline{x})&amp;lt;/math&amp;gt;, при &amp;lt;math&amp;gt;\overline{x} \neq \overline{y}, K(\overline{x}|\overline{x}) = \int_{\Omega}(1-a(\overline{y}|\overline{x}))T(\overline{y}|\overline{x})d\overline{y}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;T(\overline{y}|\overline{x})&amp;lt;/math&amp;gt; определяется тем, как именно мы производим мутации над путями, будет обсуждено чуть позже, а &amp;lt;math&amp;gt;a(\overline{y}|\overline{x})&amp;lt;/math&amp;gt; выбирается таким, чтобы цепь сходилась к стационарному состоянию, и скорость сходимости была как можно выше. Согласно &#039;&#039;принципу детального равновесия&#039;&#039; Марковская цепь сходится к стационарному распределению &amp;lt;math&amp;gt;p(\overline{x})&amp;lt;/math&amp;gt; при &amp;lt;math&amp;gt;p(\overline{x})K(\overline{y}|\overline{x}) = p(\overline{y})K(\overline{x}|\overline{y})&amp;lt;/math&amp;gt;, или, что тоже самое: &lt;br /&gt;
&amp;lt;math&amp;gt;\frac{1}{b}f(\overline{x})a(\overline{y}|\overline{x})T(\overline{y}|\overline{x}) = \frac{1}{b}f(\overline{y})a(\overline{y}|\overline{x})T(\overline{x}|\overline{y})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Откуда получаем &amp;lt;math&amp;gt;\frac{a(\overline{y}|\overline{x})}{a(\overline{x}|\overline{y})} = \frac{f(\overline{y})T(\overline{x}|\overline{y})}{f(\overline{x})T(\overline{y}|\overline{x})}&amp;lt;/math&amp;gt;. Так как скорость сходимости необходима как можно большая, то выберем &amp;lt;math&amp;gt; a(\overline{y}|\overline{x})&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; a(\overline{x}|\overline{y})&amp;lt;/math&amp;gt; максимально возможным: &amp;lt;math&amp;gt;a(\overline{y}|\overline{x}) = min\left\{ 1, \frac{f(\overline{y})T(\overline{x}|\overline{y})}{f(\overline{x})T(\overline{y}|\overline{x})} \right\} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Теперь определим функцию &amp;lt;math&amp;gt;f(\overline{x})&amp;lt;/math&amp;gt;. Функция &amp;lt;math&amp;gt;f(\overline{x})&amp;lt;/math&amp;gt; складывается из нескольких промежуточных значений, каждое из которых отображает какая часть освещенности падает при прохождении звена пути/отражения луча от поверхности. Рассмотрим одно звено пути &amp;lt;math&amp;gt;x&#039; \rightarrow x&#039;&#039;&amp;lt;/math&amp;gt;. Пусть x&#039; находится на поверхности объекта излучающего свет. Тогда определим &amp;lt;math&amp;gt;L_e(x&#039;\rightarrow x&#039;&#039;)&amp;lt;/math&amp;gt; как освещенность точки &amp;lt;math&amp;gt;x&#039;&#039;&amp;lt;/math&amp;gt; при излучении света из точки &amp;lt;math&amp;gt;x&#039;&amp;lt;/math&amp;gt;. Для точечного источника &amp;lt;math&amp;gt;L_e(x&#039;\rightarrow x&#039;&#039;) = \frac{I}{||x&#039; - x&#039;&#039;||^2}&amp;lt;/math&amp;gt;, где I &amp;amp;mdash; интенсивность источника, для излучающей поверхности с нормалью &amp;lt;math&amp;gt;\overline{n}&amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x&#039;&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;L_e(x&#039; \rightarrow x&#039;&#039;) = I\frac{|&amp;lt;\overline{n}, x&#039;&#039;-x&#039;&amp;gt;|}{||x&#039;-x&#039;&#039;||^3}&amp;lt;/math&amp;gt; и т.д. для каждого типа источника функция будет разной.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Kst179</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23487</id>
		<title>Участник:Kst179/Metropolis light transport</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23487"/>
		<updated>2017-10-24T14:22:56Z</updated>

		<summary type="html">&lt;p&gt;Kst179: /* Математическое описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Metropolis light transport &amp;amp;mdash; это алгоритм, применяющий один из вариантов метода Монте Карло &amp;amp;mdash; метод Метрополиса-Гастинга, Монте Карло на Марковских цепях (&#039;&#039;&#039;Metropolis-Hastings, Markov chain Monte Carlo, MCMC&#039;&#039;&#039;), для генерации изображений при помощи физического описания трехмерных сцен. Алгоритм используется в компьютерной графике, решает задачу глобального освещения (точное моделирование световых эффектов). Отличается от классических методов, таких как Bidirectional path tracing скоростью работы и точностью моделирования (возвращает несмещенное значение).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основной объект с которыми работает трассировщик лучей это &#039;&#039;пути&#039;&#039; от источников света до камеры. Путь это ломанная, каждое звено которой имитирует направление движения фотона, ломанная начинается в источнике света, изменяет направление при попадании на какую либо поверхность, а последнее звено должно заканчиваться в камере. Обозначим путь как &amp;lt;math&amp;gt;\overline{x} = x_1, x_2, \dots, x_k&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;gt;1, x_i&amp;lt;/math&amp;gt; &amp;amp;mdash; координата на поверхности некоторого объекта от которого отражается луч). Для каждого пути введем некоторую функцию &amp;lt;math&amp;gt;f(\overline{x})&amp;lt;/math&amp;gt;, обозначающую яркость, с которой этот луч освещает пиксель матрицы  камеры.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ray.jpg|справа|350пкс|Пример трассировки лучей]]&lt;br /&gt;
&lt;br /&gt;
Обычные методы трассировки лучей генерируют очень много путей и потом аггрегируют значение яркости по каждому пикселю. Это может быть очень долго, из за того что много компьютерного времени уходит на генерацию лучей с малой яркостью последующий вклад которых в результатирующее изображение мал (пример &amp;amp;mdash; две комнаты, разделенные слегка приоткрытой дверью в одной находится источник света, в другой &amp;amp;mdash; камера, тогда большинство независимо сгенерированных путей будет проходить сквозь стену, а значит иметь нулевую яркость). &lt;br /&gt;
&lt;br /&gt;
В &#039;&#039;&#039;MLT&#039;&#039;&#039; путь считается случайной величиной, с плотностью вероятности &amp;lt;math&amp;gt;p(\overline{x}) = \frac{1}{b}f(\overline{x}), b=const&amp;lt;/math&amp;gt;, а генерация путей происходит согласно этому распределению. Тогда получается что более весомых путей мы генерируем больше, а пути проходящие через стены или на которых теряется слишком много яркости мы практически не рассматриваем. Также если генерировать пути согласно вышеописанному распределению то выражение для подсчета окончательного изображения &amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x}&amp;lt;/math&amp;gt;, (где &amp;lt;math&amp;gt;m_j&amp;lt;/math&amp;gt; &amp;amp;mdash; значение &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го пикселя, &amp;lt;math&amp;gt;\Omega&amp;lt;/math&amp;gt; &amp;amp;mdash; пространство всевозможных путей, &amp;lt;math&amp;gt;w_j(\overline{x})&amp;lt;/math&amp;gt; &amp;amp;mdash; индикатор того, что &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt; попадает в &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-й пиксель) можно заменить на следующую несмещенную оценку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x} = \int _{\Omega} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} p(\overline{x})d\overline{x} = \mathbb{E} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} \approx \frac{1}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})\frac{f(\overline{x_i})}{p(\overline{x_i})} = \frac{b}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
То есть после семплирования путей &amp;lt;math&amp;gt;\overline{x_1}, \overline{x_2}, \dots, \overline{x_N}&amp;lt;/math&amp;gt; получаем что яркость j-го пикселя пропорциональна количеству приходящих в этот пиксель лучей а от их вида никак не зависит (но для этого необходимо чтобы пути строго соответствовали своему распределению).&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Для семплирования путей из, вообще говоря, неизвестного нам распределения &amp;lt;math&amp;gt;p(\overline{x})&amp;lt;/math&amp;gt; используется метод &#039;&#039;&#039;MCMC&#039;&#039;&#039;. Построим следующую марковскую цепь: введем некоторую вероятность &amp;lt;math&amp;gt;K(\overline{y}|\overline{x})&amp;lt;/math&amp;gt; перехода &amp;lt;math&amp;gt;\overline{x} \rightarrow \overline{y}&amp;lt;/math&amp;gt;. Выберем произвольный путь &amp;lt;math&amp;gt;\overline{x_0}&amp;lt;/math&amp;gt; и случайным блужданием будем переходить от &amp;lt;math&amp;gt;\overline{x_{i-1}}&amp;lt;/math&amp;gt; к &amp;lt;math&amp;gt;\overline{x_i}&amp;lt;/math&amp;gt;. Пусть &amp;lt;math&amp;gt;\overline{x_0}&amp;lt;/math&amp;gt; распределено с некоторой плотностью вероятности &amp;lt;math&amp;gt;p_0(\overline{x})&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; будет распределено как &amp;lt;math&amp;gt;p_i(\overline{x}) = \int_{\Omega} K(\overline{x}|\overline{y})p_{i-1}(\overline{y})d\overline{y}&amp;lt;/math&amp;gt;. При некоторых условиях на &amp;lt;math&amp;gt;K(\overline{x}|\overline{y}), ~\underset{i\rightarrow\infty}{lim}p_i(\overline{x}) = p(\overline{x})&amp;lt;/math&amp;gt;, откуда следует что при правильном выборе &amp;lt;math&amp;gt;K(\overline{x}|\overline{y})&amp;lt;/math&amp;gt;, и большом количестве переходов, независимо от выбора &amp;lt;math&amp;gt;\overline{x_0}&amp;lt;/math&amp;gt;, все &amp;lt;math&amp;gt;\overline{x_i}&amp;lt;/math&amp;gt; будут распределены согласно вероятности &amp;lt;math&amp;gt;p(\overline{x})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть мы находимся в состоянии (пути) &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt;, сделаем над путем некоторую мутацию (небольшое изменение) и получим некоторый другой путь &amp;lt;math&amp;gt;\overline{y}&amp;lt;/math&amp;gt;. На пространстве всевозможных мутаций над &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt; введем вероятность &amp;lt;math&amp;gt;T(\overline{y}| \overline{x})&amp;lt;/math&amp;gt; того что при мутации &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt; получится &amp;lt;math&amp;gt;\overline{y}&amp;lt;/math&amp;gt;. Далее мы можем принять эту мутацию или отклонить с некоторой вероятностью &amp;lt;math&amp;gt;a(\overline{y}|\overline{x})&amp;lt;/math&amp;gt;. Если мутация принимается, то совершается переход по марковской цепи &amp;lt;math&amp;gt;\overline{x} \rightarrow \overline{y}&amp;lt;/math&amp;gt;,  иначе &amp;lt;math&amp;gt;\overline{x}\rightarrow\overline{x}&amp;lt;/math&amp;gt;, т.е. мы остаемся в том же состоянии. Таким образом мы сконструировали &amp;lt;math&amp;gt;K(\overline{y}|\overline{x}) = a(\overline{y}|\overline{x})T(\overline{y}|\overline{x})&amp;lt;/math&amp;gt;, при &amp;lt;math&amp;gt;\overline{x} \neq \overline{y}, K(\overline{x}|\overline{x}) = \int_{\Omega}(1-a(\overline{y}|\overline{x}))T(\overline{y}|\overline{x})d\overline{y}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;T(\overline{y}|\overline{x})&amp;lt;/math&amp;gt; определяется тем, как именно мы производим мутации над путями, будет обсуждено чуть позже, а &amp;lt;math&amp;gt;a(\overline{y}|\overline{x})&amp;lt;/math&amp;gt; выбирается таким, чтобы цепь сходилась к стационарному состоянию, и скорость сходимости была как можно выше. Согласно &#039;&#039;принципу детального равновесия&#039;&#039; Марковская цепь сходится к стационарному распределению &amp;lt;math&amp;gt;p(\overline{x})&amp;lt;/math&amp;gt; при &amp;lt;math&amp;gt;p(\overline{x})K(\overline{y}|\overline{x}) = p(\overline{y})K(\overline{x}|\overline{y})&amp;lt;/math&amp;gt;, или, что тоже самое: &lt;br /&gt;
&amp;lt;math&amp;gt;\frac{1}{b}f(\overline{x})a(\overline{y}|\overline{x})T(\overline{y}|\overline{x}) = \frac{1}{b}f(\overline{y})a(\overline{y}|\overline{x})T(\overline{x}|\overline{y})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Откуда получаем &amp;lt;math&amp;gt;\frac{a(\overline{y}|\overline{x})}{a(\overline{x}|\overline{y})} = \frac{f(\overline{y})T(\overline{x}|\overline{y})}{f(\overline{x})T(\overline{y}|\overline{x})}&amp;lt;/math&amp;gt;. Так как скорость сходимости необходима как можно большая, то выберем &amp;lt;math&amp;gt; a(\overline{y}|\overline{x})&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; a(\overline{x}|\overline{y})&amp;lt;/math&amp;gt; максимально возможным: &amp;lt;math&amp;gt;a(\overline{y}|\overline{x}) = min\left\{ 1, \frac{f(\overline{y})T(\overline{x}|\overline{y})}{f(\overline{x})T(\overline{y}|\overline{x})} \right\} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Теперь определим функцию &amp;lt;math&amp;gt;f(\overline{x})&amp;lt;/math&amp;gt;. Функция &amp;lt;math&amp;gt;f(\overline{x})&amp;lt;/math&amp;gt; складывается из нескольких промежуточных значений, каждое из которых отображает какая часть освещенности падает при прохождении звена пути/отражения луча от поверхности. Рассмотрим одно звено пути &amp;lt;math&amp;gt;x&#039; \rightarrow x&#039;&#039;&amp;lt;/math&amp;gt;. Пусть x&#039; находится на поверхности объекта излучающего свет. Тогда определим &amp;lt;math&amp;gt;L_e(x&#039;\rightarrow x&#039;&#039;)&amp;lt;/math&amp;gt; как освещенность точки &amp;lt;math&amp;gt;x&#039;&#039;&amp;lt;/math&amp;gt; при излучении света из точки &amp;lt;math&amp;gt;x&#039;&amp;lt;/math&amp;gt;. Для точечного источника &amp;lt;math&amp;gt;L_e(x&#039;\rightarrow x&#039;&#039;) = \frac{I}{||x&#039; - x&#039;&#039;||^2}&amp;lt;/math&amp;gt;, где I &amp;amp;mdash; интенсивность источника, для излучающей поверхности с нормалью &amp;lt;math&amp;gt;\overline{n}&amp;lt;/math&amp;gt; в точке &amp;lt;math&amp;gt;x&#039;&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;L_e(x&#039; \rightarrow x&#039;&#039;) = I\frac{|&amp;lt;\overline{n}, x&#039;&#039;-x&#039;&amp;gt;|}{||x&#039;-x&#039;&#039;||^3}&amp;lt;/math&amp;gt; и т.д. для каждого типа источника функция будет разной.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Kst179</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23450</id>
		<title>Участник:Kst179/Metropolis light transport</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23450"/>
		<updated>2017-10-23T20:34:11Z</updated>

		<summary type="html">&lt;p&gt;Kst179: /* Математическое описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Metropolis light transport &amp;amp;mdash; это алгоритм, применяющий один из вариантов метода Монте Карло &amp;amp;mdash; метод Метрополиса-Гастинга, Монте Карло на Марковских цепях (&#039;&#039;&#039;Metropolis-Hastings, Markov chain Monte Carlo, MCMC&#039;&#039;&#039;), для генерации изображений при помощи физического описания трехмерных сцен. Алгоритм используется в компьютерной графике, решает задачу глобального освещения (точное моделирование световых эффектов). Отличается от классических методов, таких как Bidirectional path tracing скоростью работы и точностью моделирования (возвращает несмещенное значение).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основной объект с которыми работает трассировщик лучей это &#039;&#039;пути&#039;&#039; от источников света до камеры. Путь это ломанная, каждое звено которой имитирует направление движения фотона, ломанная начинается в источнике света, изменяет направление при попадании на какую либо поверхность, а последнее звено должно заканчиваться в камере. Обозначим путь как &amp;lt;math&amp;gt;\overline{x} = x_1, x_2, \dots, x_k&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;gt;1, x_i&amp;lt;/math&amp;gt; &amp;amp;mdash; координата на поверхности некоторого объекта от которого отражается луч). Для каждого пути введем некоторую функцию &amp;lt;math&amp;gt;f(\overline{x})&amp;lt;/math&amp;gt;, обозначающую яркость, с которой этот луч освещает пиксель матрицы  камеры.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ray.jpg|справа|350пкс|Пример трассировки лучей]]&lt;br /&gt;
&lt;br /&gt;
Обычные методы трассировки лучей генерируют очень много путей и потом аггрегируют значение яркости по каждому пикселю. Это может быть очень долго, из за того что много компьютерного времени уходит на генерацию лучей с малой яркостью последующий вклад которых в результатирующее изображение мал (пример &amp;amp;mdash; две комнаты, разделенные слегка приоткрытой дверью в одной находится источник света, в другой &amp;amp;mdash; камера, тогда большинство независимо сгенерированных путей будет проходить сквозь стену, а значит иметь нулевую яркость). &lt;br /&gt;
&lt;br /&gt;
В &#039;&#039;&#039;MLT&#039;&#039;&#039; путь считается случайной величиной, с плотностью вероятности &amp;lt;math&amp;gt;p(\overline{x}) = \frac{1}{b}f(\overline{x}), b=const&amp;lt;/math&amp;gt;, а генерация путей происходит согласно этому распределению. Тогда получается что более весомых путей мы генерируем больше, а пути проходящие через стены или на которых теряется слишком много яркости мы практически не рассматриваем. Также если генерировать пути согласно вышеописанному распределению то выражение для подсчета окончательного изображения &amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x}&amp;lt;/math&amp;gt;, (где &amp;lt;math&amp;gt;m_j&amp;lt;/math&amp;gt; &amp;amp;mdash; значение &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го пикселя, &amp;lt;math&amp;gt;\Omega&amp;lt;/math&amp;gt; &amp;amp;mdash; пространство всевозможных путей, &amp;lt;math&amp;gt;w_j(\overline{x})&amp;lt;/math&amp;gt; &amp;amp;mdash; индикатор того, что &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt; попадает в &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-й пиксель) можно заменить на следующую несмещенную оценку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x} = \int _{\Omega} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} p(\overline{x})d\overline{x} = \mathbb{E} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} \approx \frac{1}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})\frac{f(\overline{x_i})}{p(\overline{x_i})} = \frac{b}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
То есть после семплирования путей &amp;lt;math&amp;gt;\overline{x_1}, \overline{x_2}, \dots, \overline{x_N}&amp;lt;/math&amp;gt; получаем что яркость j-го пикселя пропорциональна количеству приходящих в этот пиксель лучей а от их вида никак не зависит (но для этого необходимо чтобы пути строго соответствовали своему распределению).&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Для семплирования путей из вообще говоря неизвестного нам распределения &amp;lt;math&amp;gt;p(\overline{x})&amp;lt;/math&amp;gt; используется метод &#039;&#039;&#039;MCMC&#039;&#039;&#039;. Построим следующую марковскую цепь: введем некоторую вероятность &amp;lt;math&amp;gt;K(\overline{y}|\overline{x})&amp;lt;/math&amp;gt; перехода &amp;lt;math&amp;gt;\overline{x} \rightarrow \overline{y}&amp;lt;/math&amp;gt;. Выберем произвольный путь &amp;lt;math&amp;gt;\overline{x_0}&amp;lt;/math&amp;gt; и случайным блужданием будем переходить от &amp;lt;math&amp;gt;\overline{x_{i-1}}&amp;lt;/math&amp;gt; к &amp;lt;math&amp;gt;\overline{x_i}&amp;lt;/math&amp;gt;. Пусть &amp;lt;math&amp;gt;\overline{x_0}&amp;lt;/math&amp;gt; распределено с плотностью вероятности &amp;lt;math&amp;gt;p_0(\overline{x})&amp;lt;/math&amp;gt;, далее определим итеративно:&amp;lt;math&amp;gt;p_i(\overline{x}) = \int_{\Omega} K(\overline{x}|\overline{y})p_{i-1}(\overline{y})d\overline{y}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Kst179</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23396</id>
		<title>Участник:Kst179/Metropolis light transport</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23396"/>
		<updated>2017-10-23T18:10:10Z</updated>

		<summary type="html">&lt;p&gt;Kst179: /* Математическое описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Metropolis light transport &amp;amp;mdash; это алгоритм, применяющий один из вариантов метода Монте Карло &amp;amp;mdash; метод Метрополиса-Гастинга, Монте Карло на Марковских цепях (&#039;&#039;&#039;Metropolis-Hastings, Markov chain Monte Carlo, MCMC&#039;&#039;&#039;), для генерации изображений при помощи физического описания трехмерных сцен. Алгоритм используется в компьютерной графике, решает задачу глобального освещения (точное моделирование световых эффектов). Отличается от классических методов, таких как Bidirectional path tracing скоростью работы и точностью моделирования (возвращает несмещенное значение).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основной объект с которыми работает трассировщик лучей это &#039;&#039;пути&#039;&#039; от источников света до камеры. Путь это ломанная, каждое звено которой имитирует направление движения фотона, ломанная начинается в источнике света, изменяет направление при попадании на какую либо поверхность, а последнее звено должно заканчиваться в камере. Обозначим путь как &amp;lt;math&amp;gt;\overline{x} = x_1, x_2, \dots, x_k&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;gt;1, x_i&amp;lt;/math&amp;gt; &amp;amp;mdash; координата на поверхности некоторого объекта от которого отражается луч). Для каждого пути введем некоторую функцию &amp;lt;math&amp;gt;f(\overline{x})&amp;lt;/math&amp;gt;, обозначающую яркость, с которой этот луч освещает пиксель матрицы  камеры.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ray.jpg|справа|350пкс|Пример трассировки лучей]]&lt;br /&gt;
&lt;br /&gt;
Обычные методы трассировки лучей генерируют очень много путей и потом аггрегируют значение яркости по каждому пикселю. Это может быть очень долго, из за того что много компьютерного времени уходит на генерацию лучей с малой яркостью последующий вклад которых в результатирующее изображение мал (пример &amp;amp;mdash; две комнаты, разделенные слегка приоткрытой дверью в одной находится источник света, в другой &amp;amp;mdash; камера, тогда большинство независимо сгенерированных путей будет проходить сквозь стену, а значит иметь нулевую яркость). &lt;br /&gt;
&lt;br /&gt;
В &#039;&#039;&#039;MLT&#039;&#039;&#039; путь считается случайной величиной, с плотностью вероятности &amp;lt;math&amp;gt;p(\overline{x}) = \frac{1}{b}f(\overline{x}), b=const&amp;lt;/math&amp;gt;, а генерация путей происходит согласно этому распределению. Тогда получается что более весомых путей мы генерируем больше, а пути проходящие через стены или на которых теряется слишком много яркости мы практически не рассматриваем. Также если генерировать пути согласно вышеописанному распределению то выражение для подсчета окончательного изображения &amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x}&amp;lt;/math&amp;gt;, (где &amp;lt;math&amp;gt;m_j&amp;lt;/math&amp;gt; &amp;amp;mdash; значение &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го пикселя, &amp;lt;math&amp;gt;\Omega&amp;lt;/math&amp;gt; &amp;amp;mdash; пространство всевозможных путей, &amp;lt;math&amp;gt;w_j(\overline{x})&amp;lt;/math&amp;gt; &amp;amp;mdash; индикатор того, что &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt; попадает в &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-й пиксель) можно заменить на следующую несмещенную оценку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x} = \int _{\Omega} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} p(\overline{x})d\overline{x} = \mathbb{E} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} \approx \frac{1}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})\frac{f(\overline{x_i})}{p(\overline{x_i})} = \frac{b}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
То есть после семплирования путей &amp;lt;math&amp;gt;\overline{x_1}, \overline{x_2}, \dots, \overline{x_N}&amp;lt;/math&amp;gt; получаем что яркость j-го пикселя пропорциональна количеству приходящих в этот пиксель лучей а от их вида никак не зависит (но для этого необходимо чтобы пути строго соответствовали своему распределению).&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Для семплирования путей из вообще говоря неизвестного нам распределения &amp;lt;math&amp;gt;p(\overline{x})&amp;lt;/math&amp;gt; используется метод &#039;&#039;&#039;MCMC&#039;&#039;&#039;. Построим следующую марковскую цепь: введем некоторую вероятность &amp;lt;math&amp;gt;K(\overline{y}|\overline{x})&amp;lt;/math&amp;gt; перехода &amp;lt;math&amp;gt;\overline{x} \rightarrow \overline{y}&amp;lt;/math&amp;gt;. Выберем произвольный путь &amp;lt;math&amp;gt;\overline{x_0}&amp;lt;/math&amp;gt; и случайным блужданием будем переходить от &amp;lt;math&amp;gt;\overline{x_{i-1}}&amp;lt;/math&amp;gt; к &amp;lt;math&amp;gt;\overline{x_i}&amp;lt;/math&amp;gt;. Пусть &amp;lt;math&amp;gt;\overline{x_0}&amp;lt;/math&amp;gt; распределено с плотностью вероятности &amp;lt;math&amp;gt;p_0(\overline{x})&amp;lt;/math&amp;gt;, тогда определим итеративно:&amp;lt;math&amp;gt;p_i(\overline{x}) = \int_{\Omega} K(\overline{x}|\overline{y})p_{i-1}(\overline{y})d\overline{y}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Kst179</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23394</id>
		<title>Участник:Kst179/Metropolis light transport</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23394"/>
		<updated>2017-10-23T16:33:15Z</updated>

		<summary type="html">&lt;p&gt;Kst179: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Metropolis light transport &amp;amp;mdash; это алгоритм, применяющий один из вариантов метода Монте Карло &amp;amp;mdash; метод Метрополиса-Гастинга, Монте Карло на Марковских цепях (&#039;&#039;&#039;Metropolis-Hastings, Markov chain Monte Carlo, MCMC&#039;&#039;&#039;), для генерации изображений при помощи физического описания трехмерных сцен. Алгоритм используется в компьютерной графике, решает задачу глобального освещения (точное моделирование световых эффектов). Отличается от классических методов, таких как Bidirectional path tracing скоростью работы и точностью моделирования (возвращает несмещенное значение).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основной объект с которыми работает трассировщик лучей это &#039;&#039;пути&#039;&#039; от источников света до камеры. Путь это ломанная, каждое звено которой имитирует направление движения фотона, ломанная начинается в источнике света, изменяет направление при попадании на какую либо поверхность, а последнее звено должно заканчиваться в камере. Обозначим путь как &amp;lt;math&amp;gt;\overline{x} = x_1, x_2, \dots, x_k&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;gt;1, x_i&amp;lt;/math&amp;gt; &amp;amp;mdash; координата на поверхности некоторого объекта от которого отражается луч). Для каждого пути введем некоторую функцию &amp;lt;math&amp;gt;f(\overline{x})&amp;lt;/math&amp;gt;, обозначающую яркость, с которой этот луч освещает пиксель матрицы  камеры.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ray.jpg|справа|350пкс|Пример трассировки лучей]]&lt;br /&gt;
&lt;br /&gt;
Обычные методы трассировки лучей генерируют очень много путей и потом аггрегируют значение яркости по каждому пикселю. Это может быть очень долго, из за того что много компьютерного времени уходит на генерацию лучей с малой яркостью последующий вклад которых в результатирующее изображение мал (пример &amp;amp;mdash; две комнаты, разделенные слегка приоткрытой дверью в одной находится источник света, в другой &amp;amp;mdash; камера, тогда большинство независимо сгенерированных путей будет проходить сквозь стену, а значит иметь нулевую яркость). &lt;br /&gt;
&lt;br /&gt;
В &#039;&#039;&#039;MLT&#039;&#039;&#039; путь считается случайной величиной, с плотностью вероятности &amp;lt;math&amp;gt;p(\overline{x}) = \frac{1}{b}f(\overline{x}), b=const&amp;lt;/math&amp;gt;, а генерация путей происходит согласно этому распределению. Тогда получается что более весомых путей мы генерируем больше, а пути проходящие через стены или на которых теряется слишком много яркости мы практически не рассматриваем. Также если генерировать пути согласно вышеописанному распределению то выражение для подсчета окончательного изображения &amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x}&amp;lt;/math&amp;gt;, (где &amp;lt;math&amp;gt;m_j&amp;lt;/math&amp;gt; &amp;amp;mdash; значение &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го пикселя, &amp;lt;math&amp;gt;\Omega&amp;lt;/math&amp;gt; &amp;amp;mdash; пространство всевозможных путей, &amp;lt;math&amp;gt;w_j(\overline{x})&amp;lt;/math&amp;gt; &amp;amp;mdash; индикатор того, что &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt; попадает в &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-й пиксель) можно заменить на следующую несмещенную оценку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x} = \int _{\Omega} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} p(\overline{x})d\overline{x} = \mathbb{E} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} \approx \frac{1}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})\frac{f(\overline{x_i})}{p(\overline{x_i})} = \frac{b}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
То есть после семплирования путей &amp;lt;math&amp;gt;\overline{x_1}, \overline{x_2}, \dots, \overline{x_N}&amp;lt;/math&amp;gt; получаем что яркость j-го пикселя пропорциональна количеству приходящих в этот пиксель лучей а от их вида никак не зависит (но для этого необходимо чтобы пути строго соответствовали своему распределению).&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Kst179</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23392</id>
		<title>Участник:Kst179/Metropolis light transport</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23392"/>
		<updated>2017-10-23T15:57:29Z</updated>

		<summary type="html">&lt;p&gt;Kst179: /* += Общее описание алгоритма = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Metropolis light transport &amp;amp;mdash; это алгоритм, применяющий один из вариантов метода Монте Карло &amp;amp;mdash; метод Метрополиса-Гастинга, Монте Карло на Марковских цепях (&#039;&#039;&#039;Metropolis-Hastings, Markov chain Monte Carlo, MCMC&#039;&#039;&#039;), для генерации изображений при помощи физического описания трехмерных сцен. Алгоритм используется в компьютерной графике, решает задачу глобального освещения (точное моделирование световых эффектов). Отличается от классических методов, таких как Bidirectional path tracing скоростью работы и точностью моделирования (возвращает несмещенное значение).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основной объект с которыми работает трассировщик лучей это &#039;&#039;пути&#039;&#039; от источников света до камеры. Путь это ломанная, каждое звено которой имитирует направление движения фотона, ломанная начинается в источнике света, изменяет направление при попадании на какую либо поверхность, а последнее звено должно заканчиваться в камере. Обозначим путь как &amp;lt;math&amp;gt;\overline{x} = x_1, x_2, \dots, x_k&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;gt;1, x_i&amp;lt;/math&amp;gt; &amp;amp;mdash; координата на поверхности некоторого объекта от которого отражается луч). Для каждого пути введем некоторую функцию &amp;lt;math&amp;gt;f(\overline{x})&amp;lt;/math&amp;gt;, обозначающую яркость, с которой этот луч освещает пиксель матрицы  камеры. Обычные методы трассировки лучей генерируют очень много путей и потом аггрегируют значение яркости по каждому пикселю. Это может быть очень долго, из за того что много компьютерного времени уходит на генерацию лучей с малой яркостью последующий вклад которых в результатирующее изображение мал (пример &amp;amp;mdash; две комнаты, разделенные слегка приоткрытой дверью в одной находится источник света, в другой &amp;amp;mdash; камера, тогда большинство независимо сгенерированных путей будет проходить сквозь стену, а значит иметь нулевую яркость). В &#039;&#039;&#039;MLT&#039;&#039;&#039; путь считается случайной величиной, с плотностью вероятности &amp;lt;math&amp;gt;p(\overline{x}) = \frac{1}{b}f(\overline{x}), b=const&amp;lt;/math&amp;gt;, а генерация путей происходит согласно этому распределению. Тогда получается что более весомых путей мы генерируем больше, а пути проходящие через стены или на которых теряется слишком много яркости мы практически не рассматриваем. Также если генерировать пути согласно вышеописанному распределению то выражение для подсчета окончательного изображения &amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x}&amp;lt;/math&amp;gt;, (где &amp;lt;math&amp;gt;m_j&amp;lt;/math&amp;gt; &amp;amp;mdash; значение &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го пикселя, &amp;lt;math&amp;gt;\Omega&amp;lt;/math&amp;gt; &amp;amp;mdash; пространство всевозможных путей, &amp;lt;math&amp;gt;w_j(\overline{x})&amp;lt;/math&amp;gt; &amp;amp;mdash; индикатор того, что &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt; попадает в &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-й пиксель) можно заменить на следующую несмещенную оценку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x} = \int _{\Omega} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} p(\overline{x})d\overline{x} = \mathbb{E} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} \approx \frac{1}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})\frac{f(\overline{x_i})}{p(\overline{x_i})} = \frac{b}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
То есть после семплирования путей &amp;lt;math&amp;gt;\overline{x_1}, \overline{x_2}, \dots, \overline{x_N}&amp;lt;/math&amp;gt; получаем что яркость j-го пикселя пропорциональна количеству приходящих в этот пиксель лучей а от их вида никак не зависит (но для этого необходимо чтобы пути строго соответствовали своему распределению).&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Kst179</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23390</id>
		<title>Участник:Kst179/Metropolis light transport</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23390"/>
		<updated>2017-10-23T15:57:02Z</updated>

		<summary type="html">&lt;p&gt;Kst179: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Metropolis light transport &amp;amp;mdash; это алгоритм, применяющий один из вариантов метода Монте Карло &amp;amp;mdash; метод Метрополиса-Гастинга, Монте Карло на Марковских цепях (&#039;&#039;&#039;Metropolis-Hastings, Markov chain Monte Carlo, MCMC&#039;&#039;&#039;), для генерации изображений при помощи физического описания трехмерных сцен. Алгоритм используется в компьютерной графике, решает задачу глобального освещения (точное моделирование световых эффектов). Отличается от классических методов, таких как Bidirectional path tracing скоростью работы и точностью моделирования (возвращает несмещенное значение).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
=+= Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основной объект с которыми работает трассировщик лучей это &#039;&#039;пути&#039;&#039; от источников света до камеры. Путь это ломанная, каждое звено которой имитирует направление движения фотона, ломанная начинается в источнике света, изменяет направление при попадании на какую либо поверхность, а последнее звено должно заканчиваться в камере. Обозначим путь как &amp;lt;math&amp;gt;\overline{x} = x_1, x_2, \dots, x_k&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;gt;1, x_i&amp;lt;/math&amp;gt; &amp;amp;mdash; координата на поверхности некоторого объекта от которого отражается луч). Для каждого пути введем некоторую функцию &amp;lt;math&amp;gt;f(\overline{x})&amp;lt;/math&amp;gt;, обозначающую яркость, с которой этот луч освещает пиксель матрицы  камеры. Обычные методы трассировки лучей генерируют очень много путей и потом аггрегируют значение яркости по каждому пикселю. Это может быть очень долго, из за того что много компьютерного времени уходит на генерацию лучей с малой яркостью последующий вклад которых в результатирующее изображение мал (пример &amp;amp;mdash; две комнаты, разделенные слегка приоткрытой дверью в одной находится источник света, в другой &amp;amp;mdash; камера, тогда большинство независимо сгенерированных путей будет проходить сквозь стену, а значит иметь нулевую яркость). В &#039;&#039;&#039;MLT&#039;&#039;&#039; путь считается случайной величиной, с плотностью вероятности &amp;lt;math&amp;gt;p(\overline{x}) = \frac{1}{b}f(\overline{x}), b=const&amp;lt;/math&amp;gt;, а генерация путей происходит согласно этому распределению. Тогда получается что более весомых путей мы генерируем больше, а пути проходящие через стены или на которых теряется слишком много яркости мы практически не рассматриваем. Также если генерировать пути согласно вышеописанному распределению то выражение для подсчета окончательного изображения &amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x}&amp;lt;/math&amp;gt;, (где &amp;lt;math&amp;gt;m_j&amp;lt;/math&amp;gt; &amp;amp;mdash; значение &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го пикселя, &amp;lt;math&amp;gt;\Omega&amp;lt;/math&amp;gt; &amp;amp;mdash; пространство всевозможных путей, &amp;lt;math&amp;gt;w_j(\overline{x})&amp;lt;/math&amp;gt; &amp;amp;mdash; индикатор того, что &amp;lt;math&amp;gt;\overline{x}&amp;lt;/math&amp;gt; попадает в &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-й пиксель) можно заменить на следующую несмещенную оценку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;m_j = \int _{\Omega} w_j(\overline{x})f(\overline{x})d\overline{x} = \int _{\Omega} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} p(\overline{x})d\overline{x} = \mathbb{E} w_j(\overline{x})\frac{f(\overline{x})}{p(\overline{x})} \approx \frac{1}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})\frac{f(\overline{x_i})}{p(\overline{x_i})} = \frac{b}{N} \sum _{i=0} ^{N} w_j(\overline{x_i})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
То есть после семплирования путей &amp;lt;math&amp;gt;\overline{x_1}, \overline{x_2}, \dots, \overline{x_N}&amp;lt;/math&amp;gt; получаем что яркость j-го пикселя пропорциональна количеству приходящих в этот пиксель лучей а от их вида никак не зависит (но для этого необходимо чтобы пути строго соответствовали своему распределению).&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Kst179</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23369</id>
		<title>Участник:Kst179/Metropolis light transport</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23369"/>
		<updated>2017-10-23T12:11:20Z</updated>

		<summary type="html">&lt;p&gt;Kst179: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Metropolis light transport &amp;amp;mdash; это алгоритм, применяющий один из вариантов метода Монте Карло &amp;amp;mdash; метод Метрополиса-Гастинга, Монте Карло на Марковских цепях (&#039;&#039;&#039;Metropolis-Hastings, Markov chain Monte Carlo, MCMC&#039;&#039;&#039;), для генерации изображений при помощи физического описания трехмерных сцен. Алгоритм используется в компьютерной графике, решает задачу глобального освещения (точное моделирование световых эффектов). Отличается от классических методов, таких как Bidirectional path tracing скоростью работы и точностью моделирования (возвращает несмещенное значение).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Kst179</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23116</id>
		<title>Участник:Kst179/Metropolis light transport</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kst179/Metropolis_light_transport&amp;diff=23116"/>
		<updated>2017-10-21T10:37:18Z</updated>

		<summary type="html">&lt;p&gt;Kst179: Новая страница: «= Свойства и структура алгоритма =  == Общее описание алгоритма ==  == Математическое описан…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Kst179</name></author>
	</entry>
</feed>