其实就是用到了图片在不同背景下得到的效果,这里提供一个测试的地方
黑白
原理
这里用到图形学里的一个混合的计算公式:
现已知混合图某个像素点的值为
其在白色背景下混合值为
其实就是解个方程组
求解得
这里有个问题就是
结果
这也就是将图片混合的公式
其次是
实现
这里有两张图片
接着按照上面的结果来计算生成结果的值
1 | import cv2 as cv |
numpy计算
1 | r1 = (np.where(img1 < 100, 100, img1)).astype(np.uint8) |
合成结果
彩色
原理
回顾上面方程的解
解
其主要问题是
但这样的效果下的黑底并不是很好
所以需要插值来平均色彩
实现
1 | import cv2 as cv |
numpy计算
1 | image1 = image1.astype(np.float32) * scale1 |
通过调整到插值来达成效果
这是我认为还不错的结果
两张图片的区别较小时结果会更为理想