如何显示一组图像中随时间变化的像素变化? (随时间成像的亮度变化物体)
How to display pixel variance over time from a set of images? (brightness changing object imaged over time)
我想用热图显示 intensity/brightness 一组图像随时间的变化。这些是随时间成像的亮度变化物体的图像。这对于查看对象的哪些部分(哪些像素)具有最高的亮度变化很有用。
我目前正在使用 OpenCV 来处理这些图像,但找不到任何直接获取此热图的方法。除此之外,如果有人可以建议一种计算方差的方法,而不必为每个像素的值创建一个单独的数组(也许直接从图像堆栈中计算它?),那也会有帮助。
This in an example of what one of the images looks like
生成一些合成数据:
- 所有像素都随着 3 的标准变化
- 一些像素发生变化(形状 X),标准为 5
代码:
import cv2
lena = cv2.imread("lena.png", 0)
lena = cv2.resize(dices, (100,100))
images = np.zeros((30, *lena.shape))
images[0] = lena.astype('float64')
mask = np.rot90(np.eye(100)) + np.eye(100)
for i in range(1,30):
img = images[i-1]
img += np.random.randn(*lena.shape)*3
img += mask*5
images[i] = img
创建的图像集如下所示
渲染图像的代码:
plt.close('all')
plt.figure(figsize=(25,25))
for i in range(25):
plt.subplot(5,5,i+1)
plt.imshow(images[i],cmap='gray')
plt.xticks([])
plt.yticks([])
plt.tight_layout()
plt.show()
最后,热图找出图像中以不同速度变化的部分。
import seaborn as sns; sns.set()
ax = sns.heatmap(images.std(axis=0))
plt.show()
我们拿回了面具。
我想用热图显示 intensity/brightness 一组图像随时间的变化。这些是随时间成像的亮度变化物体的图像。这对于查看对象的哪些部分(哪些像素)具有最高的亮度变化很有用。
我目前正在使用 OpenCV 来处理这些图像,但找不到任何直接获取此热图的方法。除此之外,如果有人可以建议一种计算方差的方法,而不必为每个像素的值创建一个单独的数组(也许直接从图像堆栈中计算它?),那也会有帮助。
This in an example of what one of the images looks like
生成一些合成数据:
- 所有像素都随着 3 的标准变化
- 一些像素发生变化(形状 X),标准为 5
代码:
import cv2
lena = cv2.imread("lena.png", 0)
lena = cv2.resize(dices, (100,100))
images = np.zeros((30, *lena.shape))
images[0] = lena.astype('float64')
mask = np.rot90(np.eye(100)) + np.eye(100)
for i in range(1,30):
img = images[i-1]
img += np.random.randn(*lena.shape)*3
img += mask*5
images[i] = img
创建的图像集如下所示
渲染图像的代码:
plt.close('all')
plt.figure(figsize=(25,25))
for i in range(25):
plt.subplot(5,5,i+1)
plt.imshow(images[i],cmap='gray')
plt.xticks([])
plt.yticks([])
plt.tight_layout()
plt.show()
最后,热图找出图像中以不同速度变化的部分。
import seaborn as sns; sns.set()
ax = sns.heatmap(images.std(axis=0))
plt.show()
我们拿回了面具。