图像抠图,Matting
图像抠图问题的数学定义为:
${I_i = \alpha_i F_i + (1 - \alpha_i)B_i} $
- F - 前景图像
- B - 背景图像
- alpha - alpha matte
对于每个像素,前景图像颜色 ${F = [R_F, G_F, B_F, \alpha]} $(或 ${F = [\alpha R_F, \alpha G_F, \alpha B_F]}$),背景图像颜色 ${B=[R_B, G_B, B_B]}$,
数学问题可以转化为:
${I_i = F_i + (1 - \alpha_i)B_i} $
可以认为图像是由前景和背景合成,在不同的区域,alpha 值控制前景和背景占得比例不一样,其取值范围 [0, 1].
例如,前景区域中,背景所占比例为 0%(alpha=0);背景区域中,前景所占比例为 0%(alpha=1).
Python - Image.blend() 函数
from PIL import Image
blend_img = Image.blend(im1, im2, alpha)
Image.blend(im1, im2, alpha)
函数:
通过采用常数 alpha,对两个输入图像 im1 和 im2 插值,创建新图像:
out = image1 * (1.0 - alpha) + image2 * alpha
类似于 Matting 的数学公式.
- im1 - 第一张输入图像
- im2 - 第二张输入图像,必须与 im1 尺寸和模式相同.
- alpha - 插值的 alpha 因子. 如果 alpha=0.0,则返回 im1 的副本. 如果 alpha=1.0,则返回 im2 的副本.
如:
from PIL import Image
img1 = Image.open(png_file1)
img2 = Image.open(png_file2)
blend_img = Image.blend(img1, img2, alpha=0.3)
Python - Image.composite() 函数
composite(image1, image2, mask)
函数:
使用透明图(transparency mask) 对两张图像合并,组合新图像.
- image1 - 第一张图像
- image2 - 第二张图像,与 image1 尺寸和模式相同.
- mask - mask 图像,透明图. 可以是 “1”,“L” 或 “RGBA” 模式. 与 image1 和 image2 尺寸相同.
Related
[1] - 图像处理中的全局优化技术(Global optimization techniques in image processing and computer vision) (二)