图像之间的线性融合
1、直接剪切粘贴技术(cut-and-paste)
2、Alpha融合
Alpha融合是一个升级版的cut-and-paste
output = foreground * mask + background * (1-mask),
mask获取
3、多频段融合
单频段融合的不足
经验判断准则:
融合窗口大小要相当于输出图像中最大的显著特征的大小,从频谱上看生成的图像所包含频率个数应该是2的幂
融合窗口大小要小于2倍最小显著特征的大小,从输出图像的频谱上看最大频率<=2*最小频率
解决办法:
在低频处使用较大的窗口平滑融合避免截断
在高频处使用较小的窗口避免产生鬼影
流程
- 计算输入图像的高斯金字塔。
1. 将原图像作为最底层图像G0(高斯金字塔的第0层),利用高斯核(5*5)对其进行卷积,
2. 对卷积后的图像进行下采样(去除偶数行和列)得到上一层图像G1,
3. 将此图像作为输入,重复卷积和下采样操作得到更上一层图像,反复迭代多次,形成一个金字塔形的图像数据结构,即高斯金字塔。
- 对要融合的两张照片,构建拉普拉斯金字塔
上采样
1. 图像首先在每个维度上扩大为原来的两倍,新增的行(偶数行)以0填充。
2. 然后给指定的滤波器进行卷积(实际上是一个在每个维度都扩大为原来两倍的过滤器)去估计“丢失”像素的近似值。
拉普拉斯金字塔
在高斯金字塔的运算过程中,图像经过卷积和下采样操作会丢失部分高频细节信息。为描述这些高频信息,人们定义了拉普拉斯金字塔(Laplacian Pyramid, LP)。
用高斯金字塔的每一层图像减去其上一层图像上采样并高斯卷积之后的预测图像,得到一系列的差值图像即为 LP 分解图像。
- 将处于同一级的拉普拉斯金字塔进行融合。例如在拼接缝两侧使用简单的线性融合。
对金字塔的每一层,应用以下公式进行融合
- 将高层的拉普拉斯金字塔依次扩展直至和原图相同分辨率,将得到的图像依次叠加,则得到最终的输出图像。
C = L_C0+imresize(L_C1,size0)+imresize(L_C2,size0)+imresize(L_C3,size0)+imresize(L_C4,size0)+imresize(L_C5,size0);
不足
第一:每一层融合时的权重是由这一层的缩放尺度所决定的,这不见得是最优化的策略。
第二:在金字塔的上层,两个图像的融合会使得在原图像中相隔较远的像素的信息混叠到一起,这有时候会是不正确的行为。
第三:同时多频带融合仅仅提供图像融合的功能,而今天将要介绍的泊松图像编辑则不仅提供了融合图像的功能,还能提供更多我将要介绍的功能。
图像之间的非线性融合
泊松融合
算法的流程
- 计算图像g的梯度场patchGradientX、patchGradientY
- 计算背景图片的梯度场destinationGradientX、destinationGradientY
- 计算融合图像的梯度场,直接把ROI的梯度场覆盖到S的梯度场上:把背景图片的Ω区域的梯度场直接替换为g的梯度场v
- 求解融合图像的散度。通过步骤3,我们可以得到每个像素点的梯度值,也就是待重建图像的梯度场,因此接着我们需要对梯度求偏导,从而获得散度。对梯度(laplacianX,laplacianY)在x和y方向上求偏导。因此最后散度的计算为:laplacianX + laplacianY
- 已知图像每点的二阶微分值(即散度 div),求解各个图像点的像素值。
求解的加速方法有Jacobi, SOR, Conjugate Gradients, and FFT