使用Tensorflow 2从2D视频文件沿y轴绘制1D图

2024-05-08 07:39:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图绘制浓度分布图,即X(每单位体积的粒子数-标量),其大小沿y轴,用于孤子图像形成的二维视频。它用于沿y轴(孤子中心或其附近)绘制一维图。我在下面打印了一些X值(self.X)。有人能就如何做到这一点提供建议吗

Soliton video image

该程序由以下人员运行:python3 render_video.py ~/tf2-model-g/nucleation_and_motion_in_fluid_2D.mp4 --params params/nucleation_and_motion_in_fluid_2D.yaml

显示在https://github.com/bjdarrer/tf2-model-g/blob/master/README.md

在{}-->https://github.com/frostburn/tf2-model-g/blob/master/fluid_model_g.py#L260

第260至271行:

def step(self):
    self.G, self.X, self.Y = self.reaction_integrator(self.G, self.X, self.Y)
    density_of_reactants = (
        self.params['density_G'] * self.G +
        self.params['density_X'] * self.X +
        self.params['density_Y'] * self.Y
    )
    rho = tf.math.log(self.params['base-density'] + density_of_reactants)
    if self.dims == 2:
        u, v = self.u, self.v  # Store unintegrated flow so that we're on the same timestep
        self.u, self.v, divergence = self.flow_integrator(rho, self.u, self.v)
        self.G, self.X, self.Y = self.diffusion_advection_integrator(self.G, self.X, self.Y, u, v, divergence)
        print("Value of X: ", self.X) # ***** BJD inserted this line 13.11.2020 *****


Value of X:  tf.Tensor(
[[0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 ...
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]], shape=(426, 240), dtype=float64)
  0% (1 of 960) |                                                                                               | Elapsed Time: 0:00:02 ETA:   0:47:21[swscaler @ 0x50eea00] Warning: data is not aligned! This can lead to a speed loss
Value of X:  tf.Tensor(
[[-4.63608184e-24 -4.36049800e-24 -3.96075313e-24 ... -5.27033753e-24
  -5.03750622e-24 -4.84189560e-24]
 [ 2.76706114e-24  2.59755449e-24  2.45328517e-24 ...  2.86976915e-24
   2.95354289e-24  2.90518059e-24]
 [-6.71999498e-24 -6.43068214e-24 -6.04211608e-24 ... -7.49891717e-24
  -7.20906517e-24 -6.96166453e-24]
 ...
 [-7.49120287e-24 -7.43495675e-24 -7.33722895e-24 ... -7.87227733e-24
  -7.66850690e-24 -7.55316064e-24]
 [-6.62339916e-24 -7.00430269e-24 -7.22697968e-24 ... -5.13241412e-24
  -5.62753357e-24 -6.14297167e-24]
 [-2.95495662e-24 -2.83991588e-24 -2.64129974e-24 ... -3.35524379e-24
  -3.15960041e-24 -3.04178300e-24]], shape=(426, 240), dtype=float64)
  0% (2 of 960) |                                                                                               | Elapsed Time: 0:00:03 ETA:   0:26:36Value of X:  tf.Tensor(
[[-9.47390594e-25  8.49165771e-25  1.85097134e-24 ... -9.88883148e-24
  -6.58483185e-24 -3.49179228e-24]
 [-3.94139524e-24 -1.45189300e-24  4.41879845e-25 ... -1.34799377e-23
  -1.02628610e-23 -6.95616006e-24]
 [ 8.18336833e-24  9.84605465e-24  1.07562913e-23 ... -2.49403108e-25
   2.86674937e-24  5.79328209e-24]

https://github.com/frostburn/tf2-model-g/blob/master/render_video.py#L33第33至45行

def make_video_frame(rgb, indexing='ij'):
    if indexing == 'ij':
        rgb = [tf.transpose(channel) for channel in rgb]
    frame = tf.stack(rgb, axis=-1)
    frame = tf.clip_by_value(frame, 0.0, 1.0)
    return tf.cast(frame * 255, 'uint8').numpy()


def nucleation_and_motion_in_G_gradient_fluid_2D(writer, args, R=16):
    dx = 2*R / args.height
    x = (np.arange(args.width) - args.width // 2) * dx
    y = (np.arange(args.height) - args.height // 2) * dx
    x, y = np.meshgrid(x, y, indexing='ij')

如何访问图像中心所有y值的X值,即1-D中的孤子


Tags: ofinpyselfmodeltfvideoargs
1条回答
网友
1楼 · 发布于 2024-05-08 07:39:34

这是通过包含numpy代码来解决的:np.savetxt("test.txt", self.X)将X值保存到数组文本文件中,时间为第二个单位,使用断点单步执行程序

请参见此处的代码:

        if self.dims == 2:
            u, v = self.u, self.v  # Store unintegrated flow so that we're on the same timestep
            self.u, self.v, divergence = self.flow_integrator(rho, self.u, self.v)
            self.G, self.X, self.Y = self.diffusion_advection_integrator(self.G, self.X, self.Y, u, v, divergence)
            print("Value of X: ", self.X) # ***** BJD inserted this line 13.11.2020 *****       

            np.savetxt("test.txt", self.X) # BJD added 18.11.2020

https://github.com/bjdarrer/tf2-model-g/blob/master/fluid_model_g.py#L272

第二个时间单位的X值绘制了1D图。请参见下面的附图和1D值

1d plot of X values along y axis at row = 120

[ 7.94994701e-24  9.85394009e-24  1.16724732e-23  1.32964743e-23
  1.46426920e-23  1.56451249e-23  1.62247381e-23  1.62714663e-23
  1.56643109e-23  1.43263700e-23  1.22840384e-23  9.69274339e-24
  6.80830998e-24  3.91114440e-24  1.21418229e-24 -1.20497031e-24
 -3.41488779e-24 -5.57379433e-24 -7.82536116e-24 -1.01917593e-23
 -1.25153317e-23 -1.44811319e-23 -1.57152112e-23 -1.59172105e-23
 -1.49702335e-23 -1.29833925e-23 -1.02537849e-23 -7.16747715e-24
 -4.07926538e-24 -1.21401588e-24  1.37888695e-24  3.80664014e-24
  6.26134589e-24  8.92580731e-24  1.18936633e-23  1.51317529e-23
  1.84919882e-23  2.17584411e-23  2.47040950e-23  2.71353081e-23
  2.89152259e-23  2.99694201e-23  3.02806073e-23  2.98763983e-23
  2.88124186e-23  2.71563628e-23  2.49810332e-23  2.23688269e-23
  1.94188927e-23  1.62435883e-23  1.29512082e-23  9.62920834e-24
  6.34788108e-24  3.18911971e-24  2.79939637e-25 -2.20131819e-24
 -4.06380382e-24 -5.17455116e-24 -5.52257949e-24 -5.23938686e-24
 -4.56365781e-24 -3.77035437e-24 -3.10239379e-24 -2.73563768e-24
 -2.78161914e-24 -3.30750470e-24 -4.34786101e-24 -5.89968378e-24
 -7.91404629e-24 -1.03041562e-23 -1.29750195e-23 -1.58584013e-23
 -1.89286104e-23 -2.21875709e-23 -2.56302874e-23 -2.92145279e-23
 -3.28513734e-23 -3.64143835e-23 -3.97525079e-23 -4.26964680e-23
 -4.50643261e-23 -4.66827795e-23 -4.74343885e-23 -4.73207155e-23
 -4.65131763e-23 -4.53633391e-23 -4.43660753e-23 -4.41000796e-23
 -4.51905031e-23 -4.83331736e-23 -5.43906759e-23 -6.45346948e-23
 -8.03882901e-23 -1.04128146e-22 -1.38534658e-22 -1.87007603e-22
 -2.53577094e-22 -3.42926128e-22 -4.60412050e-22 -6.12048255e-22
 -8.04399336e-22 -1.04435508e-21 -1.33877363e-21 -1.69401102e-21
 -2.11537416e-21 -2.60654177e-21 -3.16899233e-21 -3.80146531e-21
 -4.49947504e-21 -5.25490422e-21 -6.05572752e-21 -6.88594224e-21
 -7.72579326e-21 -8.55235963e-21 -9.34051728e-21 -1.00642222e-20
 -1.06979952e-20 -1.12184568e-20 -1.16057624e-20 -1.18448233e-20
 -1.19262340e-20 -1.18468578e-20 -1.16100375e-20 -1.12254034e-20
 -1.07082695e-20 -1.00786437e-20 -9.35992740e-21 -8.57742847e-21
 -7.75683514e-21 -6.92280202e-21 -6.09777366e-21 -5.30112722e-21
 -4.54865757e-21 -3.85237113e-21 -3.22051949e-21 -2.65780148e-21
 -2.16568595e-21 -1.74283487e-21 -1.38561728e-21 -1.08869469e-21
 -8.45638503e-22 -6.49524336e-22 -4.93445336e-22 -3.70897308e-22
 -2.76011146e-22 -2.03638508e-22 -1.49328474e-22 -1.09254138e-22
 -8.01470426e-23 -5.92710118e-23 -4.44273344e-23 -3.39526040e-23
 -2.66679125e-23 -2.17655977e-23 -1.86595791e-23 -1.68510352e-23
 -1.58556626e-23 -1.52061025e-23 -1.45052962e-23 -1.34870661e-23
 -1.20474092e-23 -1.02332298e-23 -8.19661117e-24 -6.13229680e-24
 -4.21647245e-24 -2.56316371e-24 -1.21193812e-24 -1.52531919e-25
  6.23620809e-25  1.07140526e-24  1.07088324e-24  4.54160347e-25
 -9.29919036e-25 -3.14710611e-24 -6.14247656e-24 -9.75582634e-24
 -1.37745379e-23 -1.79907813e-23 -2.22338974e-23 -2.63725554e-23
 -3.03058110e-23 -3.39677826e-23 -3.73524561e-23 -4.05382634e-23
 -4.36805719e-23 -4.69567026e-23 -5.04815682e-23 -5.42360534e-23
 -5.80453665e-23 -6.16147035e-23 -6.45977063e-23 -6.66618754e-23
 -6.75291547e-23 -6.69951561e-23 -6.49463207e-23 -6.13893615e-23
 -5.64868983e-23 -5.05742818e-23 -4.41308860e-23 -3.76978298e-23
 -3.17621894e-23 -2.66481131e-23 -2.24555364e-23 -1.90673084e-23
 -1.62172814e-23 -1.35911829e-23 -1.09278863e-23 -8.09715091e-24
 -5.13973303e-24 -2.26083096e-24  2.26451201e-25  1.99600234e-24
  2.80923930e-24  2.57837594e-24  1.36540430e-24 -6.73844499e-25
 -3.35995393e-24 -6.53161970e-24 -1.00428155e-23 -1.37325142e-23
 -1.73985771e-23 -2.07974339e-23 -2.36703294e-23 -2.57826699e-23
 -2.69616894e-23 -2.71233461e-23 -2.62838895e-23 -2.45532783e-23
 -2.21107261e-23 -1.91693737e-23 -1.59430731e-23 -1.26264947e-23
 -9.38909951e-24 -6.37205823e-24 -3.67582761e-24 -1.33786645e-24
  6.84229467e-25  2.50366362e-24  4.26174238e-24  6.06727554e-24]


import matplotlib.pyplot as pp  # BJD added 18.11.2020

    for n in progressbar.progressbar(range(args.num_frames)):
        fluid_model_g.step()
        if n % args.oversampling == 0:
            rgb = [
                6*(-fluid_model_g.G + max_G) / (max_G - min_G),
                5*(fluid_model_g.Y - min_Y) / (max_Y - min_Y),
                0.7*(fluid_model_g.X - min_X) / (max_X - min_X),
            ]
            zero_line = 1 - tf.exp(-600 * fluid_model_g.Y**2)
            frame = make_video_frame([c * zero_line for c in rgb])
            writer.append_data(frame)

#=========================inserted code==================================================
              
            y1 = np.loadtxt("test.txt")  # shape of 2D array of X values = (426, 240)
            row1 = y1[120]   # row 120 of 2D array (426, 240)
           
            print(row1)
            pp.plot(row1)
            pp.show()
#===========================================================================

见:

https://github.com/bjdarrer/tf2-model-g/blob/master/backups/render_video___X_seed__1d__backup_11-12-2020_1a.py#L158

相关问题 更多 >

    热门问题