重新调整视频帧之间的时差

时间:2017-12-06 22:38:38

标签: python image-processing scikit-learn

我有一个关于运输的视频。每个框架看起来像这样:

enter image description here

我计算了时间衍生的东西。如果f(i)是第i帧,则下面的图像是2 * f(i)-f(i + 1)-f(i-1):

enter image description here

移动粒子在此时间衍生视频中具有更明显的特征。问题是我实际上无法使它成为视频,因为浮动图像的线性组合([-1,1]上的强度)不一定是浮动图像(因为强度不在[-1,1]范围内)。因此,我想将图像重新缩放到[-1,1]。

我尝试使用sklearn的预处理模块:

from sklearn import preprocessing

images = [image1, image2, ...] 
#each imagek is a 1D image array 

scaler = preprocessing.MinMaxScaler([-1,1])
scaler.fit(images)

rescaled_images = scaler.transform(images)

此方法放大噪音并消除对比度。 enter image description here

关于如何在不丢失信息的情况下将这些时间衍生图像重新缩放到[-1,1]的任何建议?任何帮助表示赞赏!

(我昨天问过,但删除了这个问题,因为我没有时间正确指出图形问题)

1 个答案:

答案 0 :(得分:1)

正如我在评论中所提到的那样,它不起作用的原因是因为MinMaxScaler用于特征缩放,但您希望缩放整个图像。假设您的图像是numpy数组,最简单的方法如下:

# create a 128x128 image to work with
image = np.random.random((128, 128),)
# scale to [0, 1]
newimage = (image - image.min()) / (image.max() - image.min())
# Now scale to [-1, 1]
newimage = newimage*2-1
print(newimage.min(), newimage.max())

输出: -1.0,1.0