精华内容
下载资源
问答
  • 四维矩阵存储多张3维图片

    千次阅读 2018-08-01 08:13:42
    最近申请基金,想到一个... 这里实现一个简单的四维矩阵存储多张一维图片例子,供大家参考。  对于通道的定义,比如原图是RGB3通道,一千张图片放到四维矩阵,通道数还是3。  之前给的代码太繁琐,这...

      最近申请基金,想到一个idea,将常见的三维图片训练集处理为四维模糊图片,用四维图片训练集训练模型,比较新模型和旧模型的准确率。

      网上找了一大堆,有两个博客提出这个问题,下面的回复都没什么卵用。

      这里实现一个简单的四维矩阵存储多张一维图片例子,供大家参考。

      对于通道的定义,比如原图是RGB3通道,一千张图片放到四维矩阵,通道数还是3。

            之前给的代码太繁琐,这里重新修改简化了,方便读者理解和实现。

    read_file函数的作用就是读取文件夹下所有的猫狗图片,每读取一张,进行三种不同程度的高斯模糊之后,定义一个四维矩阵,将包括原图在内的四张图片添加到四维矩阵中,生成一张新的图片

    def endwith(s,*endstring):
       resultArray = map(s.endswith,endstring)
       if True in resultArray:
           return True
       else:
           return False
    #猫狗数据集
    def read_file(path):
        img_list = []
        label_list = []
        dir_counter = 0
    
        # 对路径下的所有子文件夹中的所有jpg文件进行读取并存入到一个list中
        for child_dir in os.listdir(path):
            child_path = os.path.join(path, child_dir)
    
            for dir_image in os.listdir(child_path):
    
                if endwith(dir_image, 'jpg'):
                    
                    img = Image.open(os.path.join(child_path, dir_image))
                    #图片归一化处理
                    img=img.resize((255,255))
                    arr = np.asarray(img, dtype="float32")
                    #高斯模糊处理
                    image1 = img.filter(GaussianBlur(radius=1))
                    arr1 = np.asarray(image1, dtype="float32")
                    image2 = img.filter(GaussianBlur(radius=3))
                    arr2 = np.asarray(image2, dtype="float32")
                    image3 = img.filter(GaussianBlur(radius=5))
                    arr3 = np.asarray(image3, dtype="float32")
                    #合成四维矩阵,将图片逐个放到矩阵中
                    new = np.empty((255, 255, 3, 4), dtype="float32")#最后一维是图片index
                    new[:, :, :, 0] = arr
                    new[:, :, :, 1] = arr1
                    new[:, :, :, 2] = arr2
                    new[:, :, :, 3] = arr3
                    img_list.append(new)
                    label_list.append(dir_counter)
            dir_counter += 1
        # 返回的img_list转成了 np.array的格式
        img_list = np.array(img_list)
        return img_list, label_list

     

    展开全文
  • Python:使用 pyts 把一维时间序列转换成二维图片

    千次阅读 多人点赞 2019-05-04 23:15:00
    在之前的一篇博客 —— 将一维时间序列转化成二维图片中,我翻译了一篇文章,说的是将一个时间序列信号转换成二维图片: 然后在文章的最后发了一个 Github 代码,这个代码是原文作者的代码,有人反应代码不能跑起来...

    在之前的一篇博客 —— 将一维时间序列转化成二维图片中,我翻译了一篇文章,说的是将一个时间序列信号转换成二维图片:

    img

    然后在文章的最后发了一个 Github 代码,这个代码是原文作者的代码,有人反应代码不能跑起来。

    这里我使用 Python 的一个第三方库 pyts,参考官方文档,改写了一下。测试了一下,可以在 Pyhon3.7 上成功运行。官方上说明的是 Python 版本应该不小于 3.5。

    1. 安装 pyts 库

    注: 代码使用的 pyts 库的版本为 0.7.1,目前最新版本的 pyts 库改变比较大,会出现 cannot import name 'GASF' from 'pyts.image' 的报错。所以安装的时候要指定 pyts 的版本。

    打开命令行,使用 pip 命令安装:
    pip install pyts==0.7.1

    2. 准备一维时间序列

    我使用 MATLAB 生成了一个 sin x 的时间序列图,plot 出来是这样的:

    在这里插入图片描述

    总共有 512 个点,也就是最大能够生成 512×512512\times 512 的图片。

    要把生成的图片保存为 .csv 文件:

    在这里插入图片描述

    3. 转换成图片

    接下来就是简单地转换成二维图片了,先贴代码吧,或者可以在我的 Github 上下载,里面有批量处理和保存 GAF 图片的代码:

    import numpy as np
    import matplotlib.pyplot as plt
    from pyts.image import GASF, GADF
    
    x = np.loadtxt(open("sinx.csv","rb"),delimiter=",",skiprows=0).T
    # print(type(x),x.shape)
    
    X = x[0:]
    X = X.reshape(1, -1)
    print(type(X),X.shape)
    image_size = 28
    gasf = GASF(image_size)
    X_gasf = gasf.fit_transform(X)
    print(X_gasf.shape)
    print(X_gasf[0,4,2],X_gasf[0,2,4])
    gadf = GADF(image_size)
    X_gadf = gadf.fit_transform(X)
    print(X_gadf[0,1,2],X_gadf[0,2,1])
    
    # Show the results for the first time series
    plt.figure(figsize=(16, 8))
    plt.subplot(121)
    plt.imshow(X_gasf[0], cmap='rainbow', origin='lower')
    plt.title("GASF", fontsize=16)
    plt.subplot(122)
    plt.imshow(X_gadf[0], cmap='rainbow', origin='lower')
    plt.title("GADF", fontsize=16)
    plt.savefig('sinx.jpg')
    plt.show()
    

    运行,出来的效果是这样的:

    在这里插入图片描述
    文中的 .csv 文件和代码都放在我的 repository 中,如果对你有帮助,可以在 Github 中给我个 Star,这会是对我的一份鼓励与肯定!

    展开全文
  • 在之前 CSDN 上的一篇博客 —— 将一维时间序列转化成二维图片中,我翻译了一篇文章,说的是将一个时间序列信号转换成二维图片:然后在文章的最后发了一个 Github 代码,这个代码是原文作者的代码,有人反应代码不能...

    在之前 CSDN 上的一篇博客 —— 将一维时间序列转化成二维图片中,我翻译了一篇文章,说的是将一个时间序列信号转换成二维图片:

    然后在文章的最后发了一个 Github 代码,这个代码是原文作者的代码,有人反应代码不能跑起来。

    这里我使用 Python 的一个第三方库 pyts,参考官方文档,改写了一下。测试了一下,可以在 Pyhon3.7 上成功运行。

    1. 准备一维时间序列

    我使用 MATLAB 生成了一个 sin x 的时间序列图,plot 出来是这样的:

    sinx

    总共有 512 个点,也就是最大能够生成 512*512 的图片。

    要把生成的图片保存为 .csv 文件:

    2. 转换成图片

    接下来就是简单地转换成二维图片了,先贴代码吧,或者可以在我的 Github 上下载,里面有批量处理和保存 GAF 图片的代码:

    import numpy as np

    import matplotlib.pyplot as plt

    from pyts.image import GASF, GADF

    x = np.loadtxt(open("sinx.csv","rb"),delimiter=",",skiprows=0).T

    # print(type(x),x.shape)

    X = x[0:]

    X = X.reshape(1, -1)

    print(type(X),X.shape)

    image_size = 28

    gasf = GASF(image_size)

    X_gasf = gasf.fit_transform(X)

    print(X_gasf.shape)

    print(X_gasf[0,4,2],X_gasf[0,2,4])

    gadf = GADF(image_size)

    X_gadf = gadf.fit_transform(X)

    print(X_gadf[0,1,2],X_gadf[0,2,1])

    # Show the results for the first time series

    plt.figure(figsize=(16, 8))

    plt.subplot(121)

    plt.imshow(X_gasf[0], cmap='rainbow', origin='lower')

    plt.title("GASF", fontsize=16)

    plt.subplot(122)

    plt.imshow(X_gadf[0], cmap='rainbow', origin='lower')

    plt.title("GADF", fontsize=16)

    plt.savefig('sinx.jpg')

    plt.show()

    运行,出来的效果是这样的:

    GAF

    文中的 .csv 文件和代码都放在我的 repository 中,如果对你有帮助,可以在 Github 中给我个 Star,这会是对我的一份鼓励与肯定!

    展开全文
  • 一维时间序列转化成二维图片

    万次阅读 多人点赞 2019-01-13 13:40:51
    原文地址:Encoding Time Series as Images 虽然现在深度学习在计算机视觉和语音识别上发展得很好...但是如果使用 Gramian Angular Field (GAF),可以把时间序列转成图片,充分利用目前机器视觉上的优势。 这篇文章...

    原文地址:Encoding Time Series as Images

    虽然现在深度学习在计算机视觉和语音识别上发展得很好,但是碰到时间序列时,构建预测模型是很难的。原因包括循环神经网络较难训练、一些研究比较难以应用,而且没有现存与训练网络,1D-CNN 不方便。

    但是如果使用 Gramian Angular Field (GAF),可以把时间序列转成图片,充分利用目前机器视觉上的优势。

    这篇文章会包括下面这些内容:

    • 数学先验知识;
    • Gram Matrix 为何可以为单变量的时间序列构建一个好的二维表示;
    • Gram Matrix 点积为何不能表示 CNN 的数据;
    • 为 CNN 准备好 Gram Matrix 结构的操作是什么;

    还会包括 Python 代码:

    • 用于 GAF 计算的 numpy 工具;

    下面的动图展示了对数据进行极坐标编码,然后对生成的角度进行类似于 Gram 矩阵的操作:

    1. 数学先验知识

    GAF 的数学方法与内积与相应的 Gram 矩阵有很深的联系。

    1.1. 点积(Dot product)

    内积是两个向量之间的运算,用来度量它们的「相似性」。它允许使用来自传统 Euclidian Geometry 的概念:长度、角度、第二维度和第三维度的正交性。

    在二维空间上,两个向量 uuvv 之间的内积定义为:
    u,v=u1v1+u2v2 \langle u,v\rangle=u_1 \cdot v_1+u_2 \cdot v_2
    或者:
    u,v=uvcos(θ) \langle u,v\rangle=\|u\|\cdot \|v\|\cdot\cos{(\theta)}
    如果 uuvv​ 的范数为 1,我们就得到:
    u,v=cos(θ) \langle u,v\rangle=cos{(\theta)}
    因此,如果处理的是单位向量,他们的内积就只由角度 θ\theta 决定了,这个角度可以用弧度来表示。计算出来的值会在 [-1,1] 内。记住这些定理,在本文的其他位置会用到。

    注意:在 Euclidian 集合(n 维)中,两个向量的内积的正式定义为:
    u,v=i=1nuivi \langle u,v\rangle=\sum_{i=1}^{n}u_i\cdot v_i

    1.2. Gram 矩阵(Gram Matrix)

    在线性代数和几何中,Gram 矩阵是一个有用的工具,它经常用于计算一组向量的线性相关关系。

    定义:一组 n 个向量的 Gram 矩阵是由每一对向量的点积定义的矩阵。从数学上讲,这可以解释为:
    G=(u1,v1u1,v2u1,vnu2,v1u2,v2u2,vnun,v1un,v2un,vn) G=\begin{pmatrix} \langle u_1,v_1\rangle & \langle u_1,v_2\rangle & \cdots & \langle u_1,v_n\rangle \\ \langle u_2,v_1\rangle & \langle u_2,v_2\rangle & \cdots & \langle u_2,v_n\rangle \\ \vdots & \vdots & \ddots & \vdots \\ \langle u_n,v_1\rangle & \langle u_n,v_2\rangle & \cdots & \langle u_n,v_n\rangle \\ \end{pmatrix}
    再有,假设所有的二维向量都是单位向量,我们会得到:
    G=(cos(ϕ1,1)cos(ϕ1,2)cos(ϕ1,n)cos(ϕ2,1)cos(ϕ2,2)cos(ϕ2,n)cos(ϕn,1)cos(ϕn,2)cos(ϕn,n)) G=\begin{pmatrix} \cos{(\phi_{1,1})} & \cos{(\phi_{1,2})} & \cdots & \cos{(\phi_{1,n})} \\ \cos{(\phi_{2,1})} & \cos{(\phi_{2,2})} & \cdots & \cos{(\phi_{2,n})} \\ \vdots & \vdots & \ddots & \vdots \\ \cos{(\phi_{n,1})} & \cos{(\phi_{n,2})} & \cdots & \cos{(\phi_{n,n})} \\ \end{pmatrix}
    其中 Φ(i,j)\Phi(i,j) 是两个向量的夹角。

    关键结论:为什么要用 Gram 矩阵?

    Gram 矩阵保留了时间依赖性。由于时间随着位置从左上角到右下角的移动而增加,所以时间维度被编码到矩阵的几何结构中。

    :单变量时间序列在某种程度上无法解释数据的共现和潜在状态;我们的目标应该是找到替代的和更丰富的表示。

    2. 实现方式

    假设有一时间序列 X=x1, ,xnX={x_1,\cdots,x_n}

    2.1. 缩放

    使用一个限定在 [-1,1] 的最小-最大定标器(Min-Max scaler)来把时间序列缩放到 [-1,1] 里,这样做的原因是为了使内积不偏向于值最大的观测。

    在这个用例中,标准缩放器 不是合适的候选者,因为它的输出范围和产生的内部积都可能超过 [- 1,1]。

    然而,与最小-最大定标器结合,内积确实保留了输出范围:
    ,:[1,1]×[1,1][1,1](x,y)xy \langle\cdot,\cdot\rangle:[-1,1]\times[-1,1]\rightarrow[-1,1] \\ (x,y)\rightarrow x\cdot y
    在 [-1,1] 中进行点积的选择并不是无害的。如非必要,把 [-1,1] 作为输入范围是非常可取的。

    2.2. 噪声图片

    缩放完时间序列之后,我们计算每一对的点积并把它们放进 Gram 矩阵里:
    G=(x1x1x1x2x1xnx2x1x2x2x2xnxnx1xnx2xnxn) G=\begin{pmatrix} x_1\cdot x_1 & x_1\cdot x_2 & \cdots & x_1\cdot x_n \\ x_2\cdot x_1 & x_2\cdot x_2 & \cdots & x_2\cdot x_n \\ \vdots & \vdots & \ddots & \vdots \\ x_n\cdot x_1 & x_n\cdot x_2 & \cdots & x_n\cdot x_n \\ \end{pmatrix}

    我们查看一下 G 的值来看一下这个图片:

    可以看到:

    1. 输出似乎遵循以 0 为中心的高斯分布。

    2. 得到的图片是有噪声的。

    前者解释了后者,因为数据的高斯分布越多,就越难将其与高斯噪声区分开来。

    这对我们的神经网络来说是个问题。此外,CNN 在处理稀疏数据方面表现更好(CNN work better with sparse data)已经得到证实。

    2.3. 非稀疏性

    高斯分布并不奇怪。当看三维内积值 zz 的图像,对所有 (x,y)R²(x, y)∈R^² 的可能的组合,我们得到一个点积的三位表面:

    假设时间序列的值服从均匀分布 [-1,1],则矩阵的值服从高斯分布。下面是长度为 n 的不同时间序列的 Gram 矩阵值输出的直方图:

    3. 开始编码

    由于单变量时间序列是一维的,点积不能区分有价值的信息和高斯噪声,除了改变空间,没有其他利用「角」关系的方法。

    因此,在使用类似于 Gram 矩阵的构造之前,我们必须将时间序列编码为至少二维的空间。为此,我们将在一维时间序列和二维空间之间构造一个双射映射,这样就不会丢失任何信息。

    这种编码很大程度上是受到极坐标转换的启发,但是在这种情况下,半径坐标表示时间。

    3.1. 缩放序列

    第一步:用 Min-Max scaler 把序列缩放到 [-1,1] 上

    我们的过程与上面实现方式中类似。加上 Min-Max scaler,我们的极坐标编码将是双射的,使用 arccosarccos函数双射(参见下一步)。

    第二步:将缩放后的时间序列转换到「极坐标」

    需要考虑两个量,时间序列的值及其对应的时间戳。这两个变量分别用角度半径表示。

    假设我们的时间序列由 NN 个时间戳 tt 和对应的 xx 组成,那么:

    • 角度是用 arccos(x)arccos(x) 计算的,值在 [0,π][0,\pi] 之间。
    • 首先计算半径变量,我们把区间 [0,1] 分成 NN 等份。因此,我们得到 N+1N+1 个分隔点 {0, ,1}\{0,\cdots,1\} 。然后我们丢弃 0,并连续地将这些点与时间序列关联起来。

    数学定义为:
    {ϕi=arccos(xi)ri=iN \begin{cases} \phi_i=arccos(x_i) \\ r_i=\frac{i}{N} \end{cases}
    这些编码有几个优点:

    1. 整个编码是双射的(作为双射函数的组合)。
    2. 它通过 rr 坐标保持时间依赖性。这个优点很有用。

    4. 时间序列的内积

    在二维空间中,接下来的问题是我们如何使用内积运算来处理稀疏性。

    4.1. 为什么不是极坐标编码值的内积呢?

    二维极坐标空间的内积有几个限制,因为每个向量的范数都根据时间依赖性进行了调整。更准确地说应该是:

    • 两个截然不同的观察结果之间的内积将偏向于最近的一个(因为范数随时间增加);
    • 当计算观测值与自身的内积时,得到的范数也是有偏差的。

    因此,如果存在一个像这样的内积运算,它应该只依赖于角度。

    4.2. 使用角度

    由于任何类似于内积的操作都不可避免地将两个不同观测值的信息转换成一个值,所以我们不能同时保留两个角度给出的信息。我们必须做出一些让步。

    为了最好地从两个角度解释个体和连接信息,作者定义了内积的另一种操作
    xy=cos(θ1+θ2) x\oplus y=\cos{(\theta_1+\theta_2)}
    其中 θ\theta 表示 xxyy 的角度。

    注意:我选择了不同的符号而不是使用内积,因为这个操作不满足内积的要求(线性,正定)。

    这就产生了如下的类 Gram 矩阵:
    G=(cos(ϕ1+ϕ1)cos(ϕ1+ϕ2)cos(ϕ1+ϕn)cos(ϕ2+ϕ1)cos(ϕ2+ϕ2)cos(ϕ2+ϕn)cos(ϕn+ϕ1)cos(ϕn+ϕ2)cos(ϕn+ϕn)) G=\begin{pmatrix} \cos{(\phi_1+\phi_1)} & \cos{(\phi_1+\phi_2)} & \cdots & \cos{(\phi_1+\phi_n)} \\ \cos{(\phi_2+\phi_1)} & \cos{(\phi_2+\phi_2)} & \cdots & \cos{(\phi_2+\phi_n)} \\ \vdots & \vdots & \ddots & \vdots \\ \cos{(\phi_n+\phi_1)} & \cos{(\phi_n+\phi_2)} & \cdots & \cos{(\phi_n+\phi_n)} \\ \end{pmatrix}

    作者的选择这样做的动机是:相对于笛卡尔坐标,极坐标保留绝对的时间关系。

    优势

    1. 对角线由缩放后的时间序列的原始值构成(我们将根据深度神经网络学习到的高层特征来近似重构时间序列);
    2. 时间相关性是通过时间间隔 kk 的方向叠加,用相对相关性来解释的。

    4.3. 稀疏表示

    现在我们来画出格拉姆角场(Gramian Angular Field)的值的密度分布:

    从上图中我们可以看出,格拉姆角场要稀疏得多。为了解释这一点,让我们用 uvu\oplus v 在笛卡尔坐标重新表示:
    cos(θ1+θ2)=cos(arccos(x)+arccos(y))=cos(acrccos(x))cos(arccos(y))sin(arccos(x))sin(arccos(y))=xy+1x21y2=x,y1x21y2 \begin{matrix} \cos(\theta_1+\theta_2) & = & cos(arccos(x)+arccos(y)) \\ & = & cos(acrccos(x))\cdot cos(arccos(y))-sin(arccos(x))\cdot sin(arccos(y)) \\ & = & x\cdot y+\sqrt{1-x^2}\cdot \sqrt{1-y^2} \\ & = & \langle x,y \rangle-\sqrt{1-x^2}\cdot \sqrt{1-y^2} \end{matrix}
    我们在上一项中注意到,新构造的运算对应于传统内积的惩罚版本
    xy=xy1x21y2 x\oplus y=x\cdot y-\rangle-\sqrt{1-x^2}\cdot \sqrt{1-y^2}
    为了了解一下这种惩罚的作用。让我们先来看看整个操作的 3D 图:

    可以看到:

    • 惩罚将平均输出移向 -1;
    • xxyy 越接近0,惩罚越大。主要的原因是,这些点点更接近高斯噪声;
    • 对于 x=yx=y:会转换为 -1;
    • 输出很容易与高斯噪声区分开。

    缺点

    • 主对角线,然而,生成的 GAM 很大是由于 nn2n\mapsto n^2,而原始时间序列的长度为 n。作者建议通过使用分段聚合近似(Piecewise Aggregation Approximation)减少大小。
    • 这个操作不是真正意义上的内积。

    5. 代码

    Github 上可以找到将单变量时间序列转换为图像的 numpy 实现。

    总结:这篇博文的灵感主要来自王志光和 Tim 的一篇详细的论文,他们利用平铺的卷积神经网络将时间序列编码为图像进行视觉检查和分类。论文中还提到了另一种有趣的编码技术:马尔科夫转换域。

    展开全文
  • 生成一维图片

    2019-10-03 08:53:34
    //生成一维图片 private byte[] GetBarcode(int height, int width, BarcodeLib.TYPE type, string code, out System.Drawing.Image image) { image = null; BarcodeLib.Barcode b = new BarcodeLib.Barcode...
  • 一维码测试图片

    2013-09-04 15:27:38
    一维图片连接测试 
  • 各位大神,我想在android手机上解析一维码的图片,哪位大神帮帮小妹
  • 如何生成一维条码图片

    千次阅读 2017-02-22 21:20:03
    在创建类型对话框的列表双击”创建一维条码”. 出现一维条码参数对话框,如下图。 根据需要选择编码类型,条码颜色,然后输入条码号,单击”确定”按钮。(如果想生成透明的条码图,需要勾上”透明”选择框)...
  • 图片的二维数组转一维数组 降维

    千次阅读 2018-07-24 17:39:19
    我这里用的是python3,网上的其他的版本全是自己写的通过两个for循环,...图片本质就相当于个二数组或者二矩阵(这里的图片指的是灰度图) 先在代码中引入库 import cv2 as cv import numpy as np...
  • 对Python中一维向量和一维向量转置相乘的方法详解在Python中有时会碰到需要一个一维列向量(n*1)与另一个一维列向量(n*1)的转置(1*n)相乘,得到一个n*n的矩阵的情况。但是在python中,我们发现,无论是“.T”还是“np...
  • 今天使用scikit-image读取图片后,发现图片个三数组,按理解图片不该是个二数组么?为什么是个三数组呢?
  • 怎么用matlab画个已知图片里曲线的二或者三坐标图,大神求解????
  • 种奇特的Flash 3维图片展示特效,由鼠标控制的,跟着鼠标变化而变化,整体像是个“S”型,
  • rt,我有一组一维数据,我现在想把这些数据存储成n x n图片格式,应该怎么做
  • 近期做的一个项目,其中有一个批量生成一维码,然后将多个一维码放到一个图片输出的功能。自己做了一个小Demo,在这里记录一下。生成一维码的功能使用的是barcode,一下是代码,代码很简单,就一下帖处理,不在每块做...
  • 重建图片管理

    2019-03-06 20:20:16
    重建图片 图片一 图片2
  • 目的:把幅二维图片中的块感兴趣的区域提取出来。 做法:1、查阅相关资料,得知:图像相乘的普遍应用是模板操作,也称ROI(感兴趣区域)操作。 2、编写MATLAB程序 遇到的问题:原图像与模板图像维数不同 代码...
  • 识别图片上的一维码信息先需要引用一个DLL文件zxing.dll文件 你可以在扩展与跟新里面将这个添加,也可以通过这个地址 https://code.msdn.microsoft.com/ZXINGNET-QRCode-Generator-05128cfb?SRC=VSIDE 下载dll...
  • c#一维条码生成图片

    千次阅读 2015-12-22 15:00:53
    //图片高度设置(px单位)  b.Width = width;//图片宽度设置(px单位)  image = b.Encode(type, code);//生成图片  image.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);  }  catch ...
  • jQuery三维图片展示,支持鼠标拖动 点击放大图片,可看作是个比较另类的焦点图特效,自动改变图片层级,单击或拖动图片后,该图片会置于最上层显示,鼠标单击图片右下角的按钮,可放大显示图片。
  • 【图像处理】使用一维DFT叠加实现对图片的二维傅里叶变换 MATLAB 一维DFT 将DFT转化为矩阵运算 参考文档 Gamma公式展示 Γ(n)=(n−1)!∀n∈N\Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n−1)!∀n∈N 是...
  • 期设计的三立体图片,是我综合了往期所有比较难看出来的图片,这些三立体图片的难度系数最少是10颗星,难道了很多的人,但是这些图片却被个小孩轻易找到了答案,我们起来看看是哪些三立体图片。...
  • // byte[] rawdataBytes = _ir.RawDataList[0].ToByteArray(); // MemoryStream ms = new MemoryStream(rawdataBytes); // System.Drawing.Image _Image...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,753
精华内容 2,301
关键字:

一维图片