Блендинг изображений
Определение: |
Блендингом изображений (англ. image blending) называют метод, позволяющий наложить часть одного изображения поверх другого таким образом, чтобы композиция изображений выглядела естественно, без швов на границах вставки. |
- картинка*
Пуассон
Простая вставка одного изображения поверх другого нередко влечет заметный перепад яркости на границе вставки. Метод Пуассона заключается в сглаживании этого перепада с целью сделать дефект менее заметным.
Давайте обозначим за $A$ изображение, которое служит фоном, а за $B$ — изображение, вставляемое поверх $A$. $\partial B$ — граница вставляемой области.
Обозначим координаты пикселя двухмерного изображения $p$ (т.е. $(x, y)$). $A_p$ — значения пикселя фонового изображение, $B_p$ — значение пикселя вставляемого изображения. Пусть $\Omega$ — множество координат $p$, на которых определено вставляемое изображение $B$.
Пусть $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 - B_q$
Обозначим результат за $O$. Для того чтобы найти значение пикселей при наложении $B$, решаем задачу минимизации:
$\underset{f_p,\; p \in \Omega}{\mathrm{min}}\; \underset{p, q \in \Omega}{\sum}\; (O_p - O_q - v_{pq})^2$, где $O_p = B_p$ для $p \in \partial \Omega$
Глубокий блендинг
Гармонизация
fun Harmonization( I, // Входное изображение M, // Маска S // Стилевое изображение ): // Тут будет комментарий I' := SinglePassHarmonization(I, M, S, IndependentMapping) // Тут тоже O := SinglePassHarmonization(I', M, S, ConsistentMapping) return O
fun SinglePassHarmonization( I, // Входное изображение M, // Маска S, // Стилевое изображение $\pi$ // Neural mapping function todo: translate this shit ): F_I := ComputeNeuralActivations(I) F_S := ComputeNeuralActivations(S) P := $\pi$(F_I, M, F_S) O := Reconstruct(I, M, S, P) return O