128
правок
Изменения
→Блендинг Пуассона
==Блендинг Пуассона==
[[Файл:Poisson int1.png|thumb|right|300px|Рис. $1.1$. Пример перепада яркости при простой вставке]]
[[Файл:Poisson int2.png|thumb|right|300px|Рис. $1.2$. Результат применения блендинга Пуассона]]
todo Note: Блендинг Пуассона на самом деле является гармонизацией, так как требует маску заменяемых пикселей. Почему-то в статьях его называют блендингом (Poisson blending), хотя оригинальная статья называлась Poisson Image Editing<ref name="PGB03">[https://www.cs.jhu.edu/~misha/Fall07/Papers/Perez03.pdf Poisson Image Editing] Patrick Perez, Michel Gangnet, Andrew Blake (2003)</ref>
Простая вставка одного изображения поверх другого нередко влечет заметный перепад яркости на границе вставки(рис. $1.1$). Метод Пуассона заключается в сглаживании этого перепада (рис. $1.2$) с целью сделать дефект менее заметным, используя градиент вставляемого изображения и значения пикселей фонового изображения на границе вставки.
Давайте обозначим за $AS$ изображение, которое служит фоном, а за $BI$ {{---}} изображение, вставляемое поверх $AS$.Область вставки будем задавать двоичной маской $M$, содержащей единицы в области наложения. Например:{| class="wikitable" style="background-color:#FFF; text-align:center"|-! Фоновое <br/> изображение $S$! Накладываемое <br/> изображение $I$! Маска $M$|-| [[Файл:Poisson_cat.jpg|200px]]| [[Файл:Poisson_cherry.jpg|200px]]| [[Файл:Poisson_cherry_mask.png|200px]]|}
Пусть $p$ {{---}} координаты пикселя двухмерного изображения (т.е. $(x, y)$). За $A_pImg_p$ {{---}} значения обозначим значение пикселя фонового изображение, с координатами $B_pp$ {{---}} значение пикселя вставляемого изображения$Img$. Пусть $\Omega$ {{---}} множество координат $p$, на которых определено вставляемое изображение что $BM_p = 1$. Тогда $\partial \Omega$ {{---}} координаты границы вставляемой области.
Пусть $N_p$ {{---}} множество соседей $p$ (максимум четыре пикселя, имеющих общую границу с $p$, т.е. пиксели со следующими координатами: $(x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)$). Для всех пар $<(p, q>)$ таких, что $q \in N_p$, введем $v_{pq} = B_p I_p - B_qI_q$
Обозначим результат блендинга за $O$. Так как мы хотим сделать результат бесшовным, пиксели $O_p$, где $p \in \partial\Omega$, сделаем равными $S_p$. Для того $p, q$ из внутренней части $\Omega$ постараемся найти такие значения, чтобы найти значение пикселей в месте наложения их разность была близка к $Bv_{pq}$, решаем . Для этого решим задачу минимизации:
$\underset{f_p,\; p \in \Omega}{\mathrm{min}}\; \underset{p, q \in \Omega}{\sum}\; (O_p - O_q - v_{pq})^2$, где $O_p = A_pS_p$ для $p \in \partial \Omega$
Заметим, что функция, которую мы хотим минимизировать, квадратична относительно переменных $O_p, p \in \Omega$. Для решения задачи минимизации вычислим частные производные по этим переменным и найдем значения переменных, при которых частные производные будут равны нулю.
Для $p \in \Omega$: $\frac{\partial{\underset{p, q \in \Omega}{\sum}\; (O_p - O_q - v_{pq})^2}}{\partial O_p} = \underset{q \in N_p}{\sum} 2 (O_p - O_q - v_{pq}) - \underset{q \in N_p}{\sum} 2 (O_q - O_p - v_{qp}) = 2 \underset{q \in N_p}{\sum} 2 (O_p - O_q - v_{pq})$.
Приравнивая к нулю, получаем: $|N_p| O_p - \underset{q \in N_p}{\sum} O_q = \underset{q \in N_p}{\sum} v_{pq}$.
Для точек, граничащих с $\partial \Omega$: $\;|N_p| O_p - \underset{q \in N_p \cap \Omega}{\sum} O_q = \underset{q \in N_p \cap \partial \Omega}{\sum} A_q S_q + \underset{q \in N_p}{\sum} v_{pq}$. Решаем систему уравнений и получаем значения $O_p$ для $p \in \Omega$. todo: Поскольку система уравнений sparse symmetric positive-defined, можно использовать следующие итеративные алгоритмы: Gauss-Seidel, V-cycle multigrid. Заметим, что метод Пуассона сдвигает цвета накладываемого изображения и сохраняет свойства градиента (прям всегда? нужно подумоть), туду Poisson blending для самых маленьких
==Трансфер стиля==