Super Resolve Dynamic Scene from Continuous Spike Streams论文笔记

news2024/10/7 2:19:56

摘要

近期,脉冲相机在记录高动态场景中展示了其优越的潜力。不像传统相机将一个曝光时间内的视觉信息进行压缩成像,脉冲相机连续地输出二的脉冲流来记录动态场景,因此拥有极高的时间分辨率。而现有的脉冲相机重建方法主要集中在重建和脉冲相机相同分辨率的图像上。然而,作为高时间分辨率的权衡,脉冲相机的空间分辨率是有限的。为了处理这一问题,我们设计了一种脉冲相机超分辨率框架,旨在从低分辨率的二值脉冲流中得到超分辨率的光强图像。由于相机和捕捉物体之间的相对运动,传感器同一像素上激发的脉冲无法形容外在场景中的相同点。本文利用相对运动,推导出光强与每个脉冲之间的关系,以恢复高时间分辨率和高空间分辨率的外部场景。实验结果表明,该方法可以从低分辨率的脉冲流中重建出良好的高分辨率图像。

介绍

随着实时计算机视觉应用的发展,传统数码相机的缺点逐渐暴露。传统相机通常在一个曝光窗口内积累光电信息来形成快照帧。这样的的成像原理可以为静态场景产出富含细节的清晰图片。然而,对于拥有高速移动的动态场景,移动物体上的某一点会被投影到传感器的不同像素点上,导致运动模糊。

为了解决这一问题,脉冲相机被提出。脉冲相机可以持续地监控到达的光子并且激发连续的脉冲流,从而记录高分辨率的动态场景。相比于事件相机,脉冲相机可以记录绝对的光照强度而不是相对光强变化。

在本文中,我们针对脉冲相机设计了一种全新的图像重建框架。通过利用相对运动,我们可以恢复场景的分辨率远远高于由脉冲流直接提供的分辨率。我们仔细分析了脉冲相机的成像原理,基于脉冲相机成像原理,构建了图像光强和每个脉冲之间的关系,从而可以从脉冲流中得到超像素的光强信息。文章的主要贡献如下:
1、我们为脉冲相机提出了一种超分辨率框架。
2、我们不是简单地将图像超分辨率算法应用于脉冲相机的LR(低分辨率,low resolution)重建,而是推导出光强与每个脉冲之间的关系,从而从买从流中估计像素级的超分辨率光强。
3、实验结果显示所提出的方法可以从二值LR脉冲流中重建出不错的HR光强图像,这是现有方法做不到的。

背景知识

脉冲相机的工作机制

脉冲相机包含了一系列的像素点,每一个像素点独立地记录光照强度。每一个像素包含三个主要的部分:感光器、积分器和比较器。感光器从外部场景捕获入射光,并将光强转换为积分器可以识别的电压。积分器对转化而来的电荷做累加,比较器持续地检测积累的信号。一旦达到阈值 θ \theta θ,脉冲则会被激发,积分器重置,开始新一轮的“积累与发射”循环。

由于每一个像素独立工作,我们可以将我们的讨论限定在一个像素 p = ( r , c ) p=(r,c) p=(r,c)上。 p p p t t t时刻的电荷量可以表示为:
A ( t ) = ∫ Ω p ∫ 0 t α ⋅ I ( z , x ) d x d z m o d    θ (1) A(t)=\int_{\Omega_p}\int_0^t\alpha\cdot I(z,x)dxdz\mod\theta\tag{1} A(t)=Ωp0tαI(z,x)dxdzmodθ(1)
这里, Ω p \Omega_p Ωp表示像素 p p p包含的空间区域, I ( z , t ) I(z,t) I(z,t)表示 t t t时刻 z = ( x , y ) z=(x,y) z=(x,y)位置上的光照强度, α \alpha α表示光电转化效率。脉冲可以在任意的时间 t t t被激发,但是相机只能以离散时间二值信号 S ( n ) S(n) S(n)的形式读出脉冲(如图二所示)。具体来说,相机以一个固定的短时间间隙 T T T来检查flag,如果 t t t时刻(其中 ( ( n − 1 ) T < t ≤ n T ) ((n-1)T<t≤nT) ((n1)T<tnT))有flag,则 S ( n ) = 1 S(n)=1 S(n)=1。否则, S ( n ) = 0 S(n)=0 S(n)=0。当光子连续到达时,传感器上的像素会同时独立地进行工作,激发出脉冲来表示特定数量光子的到达。随着时间的推进,相机会产生一些列的二值脉冲 S ∈ { 0 , 1 } H × W × N S\in \{0,1\}^{H\times W\times N } S{0,1}H×W×N(如图一(a)所示)。
在这里插入图片描述

在这里插入图片描述

问题描述

脉冲相机的目的是记录高速运动场景的动态光强变化过程。一旦脉冲阵列被捕捉到,我们旨在恢复出任何时刻的瞬时光强。特别是当考虑到脉冲相机有限的空间分辨率,我们的目标是超分辨高质量的光强图像与细节。我们没有采用简单结合脉冲重建算法和现有图像超分辨率算法的方法,而是直接估计每一个像素对应的超分辨率强度。这是一个病态的逆问题,可以表示为如下的形式。给定脉冲阵列 S ∈ { 0 , 1 } H × W × N S\in\{0,1\}^{H\times W\times N } S{0,1}H×W×N,我们的目标是从低分辨率的脉冲阵列中恢复高质量的高分辨率强度图像 I H D ∈ [ 0 , 255 ] c H × c W × c N I^{HD}\in[0,255]^{cH\times cW\times cN } IHD[0,255]cH×cW×cN,其中 c c c是放大因子。

方法

如图三所示,由于相机和物体之间的相对运动,传感器同一像素所激发的脉冲不再能描述物体上的相同点,而是记录了不同位置的光强。也就是说每一个脉冲会被映射到场景中的不同位置。通过合理地探索相机和场景之间的相对运动,恢复更高分辨率的场景是可能的。为此,我们开发了一个运动引导的脉冲相机超分辨率(MGSR, motion-guided spike camera super-resolution)框架,以从低分辨率的脉冲流中得到超分辨率图像。
在这里插入图片描述

强度脉冲关系

每一个脉冲对应了一定量的光子 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te),其中 p = ( r , c ) p=(r,c) p=(r,c)表示像素的位置, t s t_s ts t e t_e te分别表示当前脉冲循环的开始和结束时间。基于公式(1),脉冲 s s s和强度 I I I之间的关系可以表示为:
θ = ∫ Ω p ∫ t s t e α ⋅ I ( z , t ) d t d z (2) \theta=\int_{\Omega_p}\int_{t_s}^{t_e}\alpha\cdot I(z,t)dtdz\tag{2} θ=ΩptsteαI(z,t)dtdz(2)
假设我们打算重建 k k k时刻的场景。基于灰度一致性假设,给定任意时刻某一点的光强 I ( z , t ) I(z,t) I(z,t),都可以将其转换为 k k k时刻对应物体点的光强 I ( z + u t → k ( z ) , k ) I(z+u_{t\rightarrow k}(z),k) I(z+utk(z),k)。其中 u t → k ( z ) u_{t\rightarrow k}(z) utk(z)表示将 t t t时刻上 z z z位置映射到 k k k时刻对应位置的偏移量。因此,我们可以构建场景强度和任意脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)之间的模型:
θ = ∫ Ω p ∫ t s t e α ⋅ I ( z , k ) M s ( z , t ) d t d z (3) \theta=\int_{\Omega_p}\int_{t_s}^{t_e}\alpha\cdot I(z,k)\mathcal{M}_s(z,t)dtdz\tag{3} θ=ΩptsteαI(z,k)Ms(z,t)dtdz(3)
这里, Ω \Omega Ω表示相机传感器的感受野, I ( z , k ) I(z,k) I(z,k)表示 k k k时刻 z z z位置的光强, M s ( z , t ) \mathcal{M}_s(z,t) Ms(z,t)是二值mask,表示强度 I ( z , k ) I(z,k) I(z,k)是否对 t t t时刻的脉冲 s s s有贡献。也就是说,如果 z z z的对应点 z + u k → t ( z ) z+u_{k\rightarrow t}(z) z+ukt(z)处在像素 p p p包含的空间区域,则 I ( z , k ) I(z,k) I(z,k)对像素有贡献,将 M s ( z , t ) \mathcal{M}_s(z,t) Ms(z,t)设置为1。否则 M s ( z , t ) \mathcal{M}_s(z,t) Ms(z,t)被设为0。从而可以得到 M s ( z , t ) \mathcal{M}_s(z,t) Ms(z,t)的表达式:
M s ( z , t ) = { 1 , z + u k → t ( z ) ∈ Ω p 0 , o t h e r w i s e (4) \mathcal{M}_s(z,t)=\begin{cases} 1, \quad z+u_{k\rightarrow t}(z)\in \Omega_{p}\\ 0, \quad otherwise\\ \end{cases}\tag{4} Ms(z,t)={1,z+ukt(z)Ωp0,otherwise(4)
其中 Ω p \Omega_p Ωp表示 p p p覆盖的空间区域。为了简单起见,我们使用 I k I_k Ik来表示 k k k时刻场景的光照强度。考虑到 I k ( z ) I_k(z) Ik(z)在时间上的连续性,公式(3)可以改写成:
θ = ∫ Ω ∫ t s t e α ⋅ I k ( z ) ⋅ M s ( z , t ) d t d z = ∫ Ω α ⋅ I k ( z ) ( ∫ t s t e M s ( z , t ) d t ) d z = ∫ Ω α ⋅ I k ( z ) ⋅ W s ( z ) d z (5) \theta=\int_{\Omega}\int_{t_s}^{t_e}\alpha\cdot I_k(z)\cdot \mathcal{M}_s(z,t)dtdz=\int_{\Omega}\alpha\cdot I_k(z)(\int_{t_s}^{t_e}\mathcal{M}_s(z,t)dt)dz=\int_{\Omega}\alpha\cdot I_k(z)\cdot \mathcal{W}_s(z)dz\tag{5} θ=ΩtsteαIk(z)Ms(z,t)dtdz=ΩαIk(z)(tsteMs(z,t)dt)dz=ΩαIk(z)Ws(z)dz(5)
其中 W s ( z ) = ∫ t s t e M s ( z , t ) d t \mathcal{W}_s(z)=\int_{t_s}^{t_e}\mathcal{M}_s(z,t)dt Ws(z)=tsteMs(z,t)dt代表 I k ( z ) I_k(z) Ik(z)对脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)的贡献程度。

脉冲相机超像素

基于以上的分析,任意的 I k ( z ) I_k(z) Ik(z)和脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)之间的关系可以被建模。为了超像素化光强图像,我们可以对重建平面进行重采样,建立如下的关系:
θ = ∑ q α ⋅ I k H R ( q ) ⋅ W s ( q ) (6) \theta=\sum_q\alpha\cdot I_k^{HR}(q)\cdot\mathcal{W}_s(q)\tag{6} θ=qαIkHR(q)Ws(q)(6)
这里 q = ( m , n ) q=(m,n) q=(m,n)表示 I k H R I_k^{HR} IkHR的坐标位置, W s ( q ) \mathcal{W}_s(q) Ws(q)表示 I k H R ( q ) I_k^{HR}(q) IkHR(q)对脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)的贡献程度。一旦在 k k k时刻附近有足够的脉冲被积累,我们可以通过最小化下面的损失函数 J ( I K h r ) J(I_K^{hr}) J(IKhr)来超分辨率化 I k H R I_k^{HR} IkHR
J ( I K H R ) = ∑ s = 1 N ∣ ∣ α ⋅ W s I k H R − θ ∣ ∣ 2 2 (7) J(I_K^{HR})=\sum_{s=1}^N||\alpha\cdot\mathcal{W}_sI_k^{HR}-\theta||_2^2\tag{7} J(IKHR)=s=1N∣∣αWsIkHRθ22(7)
其中 N N N表示选定时间框内的脉冲数量。 W s ∈ R 1 × M \mathcal{W}_s\in\mathbb{R}^{1\times M} WsR1×M M = c H × c W M=cH\times cW M=cH×cW表示待重建的高分辨率图像中的像素个数。

为了解决这一问题,我们设计了一种运动辅助的脉冲相机超分辨率(MGSR, motion-guided spike camera super resolution)框架,如图四所示。
在这里插入图片描述
首先,一个基础的亮度推测算法被运用在脉冲流 S S S中,生成一系列基础的亮度图像 { I t L R } , t ∈ ϕ k \{I_t^{LR}\},t\in\phi_k {ItLR},tϕk ϕ k \phi_k ϕk的一个典型选择是 { k , k ± 1 , k ± 2 , ⋅ ⋅ ⋅ } \{k,k±1,k±2,\cdot\cdot\cdot\} {k,k±1,k±2,}。有了基础的重建,我们可以估计出不同帧的位移量并且将 I k H R I_k^{HR} IkHR上的点映射到其他帧中。然后我们可以进一步计算出每个亮度图像像素 I k H R ( q ) I_k^{HR}(q) IkHR(q)对每个脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)的贡献程度(这里 q q q指的是图像上的像素点, p p p指的是传感器上的像素点,可以通过图5或者更加直观的理解),构建出一系列的贡献图 { W s } \{\mathcal{W}_s\} {Ws}。基于贡献图 { W s } \{\mathcal{W}_s\} {Ws},高分辨率图像 I H R I^{HR} IHR可以通过求解公式(7)得到。
在这里插入图片描述

光强推测

假设一个短脉冲间隔内的光照强度是稳定的,我们粗略地推测出瞬时光强:
I t L R ( p ) = θ α ⋅ ( t e − t s ) (8) I_t^{LR}(p)=\frac{\theta}{\alpha\cdot(t_e-t_s)}\tag{8} ItLR(p)=α(tets)θ(8)
其中, t e < t < t s t_e<t<t_s te<t<ts。值得注意的是,这些基本的重建只是用来估计相对运动。

运动估计

我们使用光流法来进行粗略估计,从而得到关键帧 I k L R I_k^{LR} IkLR到参考帧 I t L R I_t^{LR} ItLR的运动场信息:
u k → t = F ( I k L R , I t L R ) (9) u_{k\rightarrow t}=\mathcal{F}(I_k^{LR},I_t^{LR})\tag{9} ukt=F(IkLR,ItLR)(9)
其中 F ( ⋅ ) \mathcal{F}(\cdot) F()表示光流法。 u k → t = ( u k → t h , u k → t v ) u_{k\rightarrow t}=(u_{k\rightarrow t}^h,u_{k\rightarrow t}^v) ukt=(ukth,uktv)表示 I k L R I_k^{LR} IkLR I t L R I_t^{LR} ItLR的运动场信息,可以将 I k L R I_k^{LR} IkLR映射到 I t L R I_t^{LR} ItLR

权重计算

给定运动场信息 u k → t u_{k\rightarrow t} ukt,给定任意点 z z z,我们都可以轻松地根据公式(4)推断出是否 I k H R ( z ) I_k^{HR}(z) IkHR(z)对脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)有贡献。然后可以计算出每个图像像素 I k H R ( q ) I_k^{HR}(q) IkHR(q)对脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)的权重(贡献程度):
W s ( q ) = ∫ z ∈ Ω q ∫ t s t e M s ( z , t ) d t d z (10) \mathcal{W}_s(q)=\int_{z\in \Omega_q}\int_{t_s}^{t_e}\mathcal{M}_s(z,t)dtdz\tag{10} Ws(q)=zΩqtsteMs(z,t)dtdz(10)
其中 Ω q \Omega_q Ωq表示像素 q q q I k H R I_k^{HR} IkHR中覆盖的范围。由于相机和场景的相对运动,一个脉冲通常通常和和 I k H R I_k^{HR} IkHR中的多个像素有关。相关像素的数量也会随着运动速度和脉冲生命周期 t e − t s t_e-t_s tets的增加而增加。图5展示了权重的计算,图6真实了不同相对运动对应的权重图。
在这里插入图片描述

超像素成像

一旦足够的脉冲被积累,我们可以通过解公式(7)来得到 c H × c W cH\times cW cH×cW的超像素图像。在本文中,我们使用了梯度下降法来求解这个问题,可以被表示为:
I k H R : = I K H R − γ ⋅ ∇ I k H R J ( I k H R ; W s ) (11) I_k^{HR}:=I_K^{HR}-\gamma\cdot\nabla_{I_k^{HR}}J(I_k^{HR};\mathcal{W}_s)\tag{11} IkHR:=IKHRγIkHRJ(IkHR;Ws)(11)
其中 γ \gamma γ是更新梯度。特别地,我们也可以使用这个算法作为一个一般的重建算法,此时我们可以将 c c c设置为1,以重建与脉冲流相同空间分辨率的图像。在算法1中总结了所提出的MGSR方法。
在这里插入图片描述

实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/963493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows 重新映射 CapsLock 大写锁定到 Ctrl

Windows 重新映射 CapsLock 大写锁定到 Ctrl 本要点中的这些方法适用于我的美国键盘布局。我不确定其他布局。如果出现问题&#xff0c;请恢复您的更改&#xff1b;删除您创建的注册表项&#xff08;并重新启动&#xff09;。 强烈推荐 方法5 ctrl2cap&#xff0c;因为不会影…

代码随想录第35天|860.柠檬水找零 , 406.根据身高重建队列(很多细节点注意一下),452. 用最少数量的箭引爆气球

860.柠檬水找零 思路比较简单 class Solution {public boolean lemonadeChange(int[] bills) {//然后向你付 5 美元、10 美元或 20 美元//如果收到5&#xff0c;直接收下//如果收到10&#xff0c;需要付回去5//如果收到20&#xff0c;需要付回去105或者555//开始时我手上拥有…

java基础-----第八篇

系列文章目录 文章目录 系列文章目录一、Java类加载器二、双亲委托模型 一、Java类加载器 JDK自带有三个类加载器&#xff1a;bootstrap ClassLoader、ExtClassLoader、AppClassLoader。 BootStrapClassLoader是ExtClassLoader的父类加载器&#xff0c;默认负责加载%JAVA_HOME…

Ops实践 | 国产化KylinOS系统中快速部署企业内部高性能DNS服务器、时间同步服务器 (精选)...

各位看友&#xff0c;由于微信公众号推送机制改变&#xff0c;现在需要设置为星标才能收到的本公众号推送消息哟。关注回复【学习交流群】加入【安全开发运维】答疑交流群 请朋友们【多多点击文中的广告】&#xff0c;支持作者更新更多文章。 目录: 本文为作者原创文章&#xf…

c++数据结构之 队列

c数据结构 --- 队列 队列的特点队列的相关概念&#xff1a;队列的操作&#xff1a;队列的分类&#xff1a;演示例子简单的例子例子2、循环队列的C实现 队列的特点 队列&#xff08;Queue&#xff09;与栈一样&#xff0c;是一种线性存储结构&#xff0c;它具有如下特点&#x…

学习振弦采集模块的开发基本原理

飞讯教学篇&#xff1a;学习振弦采集模块的开发基本原理 振弦采集模块是一种用于测量物体振动、形变、压力等物理量的电子设备。它通过测量物体的振动变化&#xff0c;可以得出物体在不同条件下的动态特性&#xff0c;对于工程设计、科学研究、医学检测等领域都有广泛应用。本…

代码随想录笔记--二叉树篇

1--递归遍历 1-1--前序遍历 前序遍历&#xff1a;根→左→右&#xff1b; #include <iostream> #include <vector>struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(int x) : val(x), le…

6400万美元:苹果与SpaceX达成合作协议,推进苹果 SOS 卫星服务

根据最新披露的文件&#xff0c;苹果卫星服务提供商Globalstar近期与马斯克旗下的SpaceX达成一项重要合作协议&#xff0c;向SpaceX支付了6400万美元&#xff0c;用于在2023-2025年期间发射卫星&#xff0c;以进一步扩展苹果iPhone系列的SOS卫星服务。 这项卫星服务的主要目的是…

Citespace、vosviewer、R语言的文献计量学 、SCI

文献计量学是指用数学和统计学的方法&#xff0c;定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体&#xff0c;注重量化的综合性知识体系。特别是&#xff0c;信息可视化技术手段和方法的运用&#xff0c;可直观的展示主题的研究发展历程、研究现状、研究…

中国太保首席数据库专家林春:先难后易,核心系统数据库升级复盘

P17 是中国太平洋保险&#xff08;以下简称太保&#xff09;关联关系最为复杂、商业数据库绑定程度最深、业务影响最多的核心系统之一。但就是这样一个对太保业务至关重要的系统却被选为数据库升级的“实验品”。当然&#xff0c;说是“实验品”只是因为这是太保第一次对关键的…

怎样来实现流量削峰方案

削峰从本质上来说就是更多地延缓用户请求&#xff0c;以及层层过滤用户的访问需求&#xff0c;遵从“最后落地到数据库的请求数要尽量少”的原则。 1.消息队列解决削峰 要对流量进行削峰&#xff0c;最容易想到的解决方案就是用消息队列来缓冲瞬时流量&#xff0c;把同步的直…

ArcGIS地块面积分割调整工具插件

地块分割调整工具可以实现将选定的图斑按照面积比例或者指定的面积&#xff0c;分割成多个图斑。 各个图斑的面积用逗号分隔&#xff0c;比例分割设置时&#xff0c;用整数表示。 面积分割时&#xff0c;最后一个图斑的面积可以不写&#xff0c;插件可以自动计算图斑的面积&a…

1448. 统计二叉树中好节点的数目(javascript)1448. Count Good Nodes in Binary Tree

给你一棵根为 root 的二叉树&#xff0c;请你返回二叉树中好节点的数目。 「好节点」X 定义为&#xff1a;从根到该节点 X 所经过的节点中&#xff0c;没有任何节点的值大于 X 的值。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,3,null,1,5] 输出&#xff1a;4 解释…

unity面试题(性能优化篇)

CPU 预处理、缓存数据 注释空的unity函数 运算cpu->gpu 减少昂贵计算(开方) 限制帧数 加载(预加载、分帧加载、异步加载、对象池) 慎用可空类型比较 避免频繁计算(分帧、隔帧) 算法优化 变体收集预热 使用clear操作代替容器的new操作 unity spine使用二进制格式…

mac有些软件卸载不了怎么办?正确的Mac软件卸载方法

很多用户Mac用户在整理磁盘空间时发现有很多不常用的软件想要卸载&#xff0c;一顿卸载操作之后发现有些第三方软件是无法完成卸载或成功卸载之后桌面仍保留该软件的图标&#xff0c;在使用Mac过程中遇到有些软件卸载不了怎么办&#xff1f;别着急&#xff0c;小编这就给你支招…

基于指数分布算法优化的BP神经网络(预测应用) - 附代码

基于指数分布算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于指数分布算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.指数分布优化BP神经网络2.1 BP神经网络参数设置2.2 指数分布算法应用 4.测试结果&#xff1a;5…

2023年淘宝商家成长层级与利好规则

淘宝店铺成长层级越高&#xff0c;对店铺的经营会越好&#xff0c;但有些小伙伴对成长层级和商家利好规则内容的更新变化不太清楚&#xff0c;下面我们就来一起了解一下吧。 一、店铺成长层级 1、入口&#xff1a;店铺层级与权益 2、晋升路径 V1-V2&#xff1a;基础运营&#…

flutter plugins插件【二】【FlutterAssetsGenerator】

2、FlutterAssetsGenerator 介绍地址&#xff1a;https://juejin.cn/post/6898542896274735117 配置assets目录 ​ 插件会从pubspec.yaml文件下读取assets目录&#xff0c;因此要使用本插件&#xff0c;你需要在pubspec.yaml下配置资源目录 flutter:# The following line ens…

A. Increasing and Decreasing

题目&#xff1a;样例&#xff1a; 输入 3 1 4 3 1 3 3 100 200 4输出 1 3 4 -1 100 150 180 200 思路&#xff1a; 思维题&#xff0c;这里我们看一下规律&#xff0c;我们已知a(1)&#xff0c;a(n) &#xff0c;又因为 数列b 应该是递减的&#xff0c;而观察规律可知 &#x…

【云计算•云原生】5.云原生之初识DevOps

文章目录 1.DevOps背景2.DevOps概念3.DevOps工具链 1.DevOps背景 软件开发必须包含两个团队&#xff1a;开发团队和运维团队 开发团队负责开发项目&#xff0c;系统迭代更新运维团队负责项目测试以及部署上线&#xff0c;维持系统稳定运行 一个软件周期中是由这两个团队相互…