将图像的差异添加到一个图像中 (Linux/Python)
Add diff of images into one image (Linux/Python)
我正在寻找一种仅将图像的差异融合到一个图像中的方法。我正在寻找 linux 命令或使用 python.
实现此目的的方法
示例:
来源图片:
结果应该是:
谢谢!!
文斯
从仅包含背景的图像开始并将每一帧与其进行比较是有意义的。背景可以计算为整个序列的中值。如果我们假设背景中值图像是 a0.jpg 并且接下来的三个带有 3 个点的帧将是 a1.jpg、a2.jpg 和 a3.jpg,那么可以使用 [= 将它们合并在一起22=] scikit-image 的函数,并仅在遇到变化的那些像素处修改值。请注意,由于压缩,容差阈值 (th) 设置为 0.1。您可以使用该值 (0,1) 来获得或多或少的灵敏度。
以下脚本应该是这样的:
import skimage.io as io
from skimage.util import compare_images
import numpy as np
im0 = io.imread('a0.jpg') # median of source images
im1 = io.imread('a1.jpg') # source image 1
im2 = io.imread('a2.jpg') # source image 2
im3 = io.imread('a3.jpg') # source image 3
im_all = np.copy(im0)
th = 0.1
# d = np.max(np.abs(im2 - im0), -1)
d = compare_images(im1, im0, method='diff')
d= np.max(np.abs(d), -1)
im_all[d>th] = im1[d>th]
io.imsave("d1.jpg", d>th)
d = compare_images(im2, im0, method='diff')
d= np.max(np.abs(d), -1)
im_all[d>th] = im2[d>th]
io.imsave("d2.jpg", d>th)
d = compare_images(im3, im0, method='diff')
d= np.max(np.abs(d), -1)
im_all[d>th] = im3[d>th]
io.imsave("d3.jpg", d>th)
io.imsave("im_all.jpg", im_all)
这不是我所要求的,但它足以满足我的需要:
convert 1.jpg 2.jpg 3.jpg -evaluate-sequence max evalresult.png
对于带有云的示例图像,效果不是很好(因为云是白色的),但在另一个上下文中效果很好(当差异比背景更亮时)
我正在寻找一种仅将图像的差异融合到一个图像中的方法。我正在寻找 linux 命令或使用 python.
实现此目的的方法示例: 来源图片:
结果应该是:
谢谢!!
文斯
从仅包含背景的图像开始并将每一帧与其进行比较是有意义的。背景可以计算为整个序列的中值。如果我们假设背景中值图像是 a0.jpg 并且接下来的三个带有 3 个点的帧将是 a1.jpg、a2.jpg 和 a3.jpg,那么可以使用 [= 将它们合并在一起22=] scikit-image 的函数,并仅在遇到变化的那些像素处修改值。请注意,由于压缩,容差阈值 (th) 设置为 0.1。您可以使用该值 (0,1) 来获得或多或少的灵敏度。 以下脚本应该是这样的:
import skimage.io as io
from skimage.util import compare_images
import numpy as np
im0 = io.imread('a0.jpg') # median of source images
im1 = io.imread('a1.jpg') # source image 1
im2 = io.imread('a2.jpg') # source image 2
im3 = io.imread('a3.jpg') # source image 3
im_all = np.copy(im0)
th = 0.1
# d = np.max(np.abs(im2 - im0), -1)
d = compare_images(im1, im0, method='diff')
d= np.max(np.abs(d), -1)
im_all[d>th] = im1[d>th]
io.imsave("d1.jpg", d>th)
d = compare_images(im2, im0, method='diff')
d= np.max(np.abs(d), -1)
im_all[d>th] = im2[d>th]
io.imsave("d2.jpg", d>th)
d = compare_images(im3, im0, method='diff')
d= np.max(np.abs(d), -1)
im_all[d>th] = im3[d>th]
io.imsave("d3.jpg", d>th)
io.imsave("im_all.jpg", im_all)
这不是我所要求的,但它足以满足我的需要:
convert 1.jpg 2.jpg 3.jpg -evaluate-sequence max evalresult.png
对于带有云的示例图像,效果不是很好(因为云是白色的),但在另一个上下文中效果很好(当差异比背景更亮时)