精华内容
下载资源
问答
  • 本文考虑多元样条函数维数级数和函数计算。文[2〕,[3〕中,讨论了通过1维面上光滑...本文通过构造合冲序列及Grdbner基的性质,推导协调矩阵与维数级数关系,给出了由协调矩阵的核空间计算样条函数函数方法。
  • 针对某矿山数据进行了不同边界品位矿体自动建模实验,显式方法建模结果对比表明,基于径向函数隐式曲面矿体建模方法自动化程度高、模型光滑且无拓扑错误,可为国内数字矿山地学三软件研发提供新方案。
  • 线性变换值域与核

    千次阅读 2019-05-17 20:12:12
    定义1 ...的维数称为秩,的维数称为零度。 例1:在线性空间中,令则值域就是的核就是子空间P。 定理1 设是n维线性空间V线性变换,是V一组,在这组矩阵是A,则 (1)值域是...

    定义1

    \mathfrak{A}是线性空间V的一个线性变换,\mathfrak{A}的全体像组成的集合称为\mathfrak{A}值域,用\mathfrak{A}V表示,所有被\mathfrak{A}变成零向量组成的集合称为\mathfrak{A},用\mathfrak{A}^{-1}(0)表示。

    若用集合的记号则\mathfrak{A}V=\left\{\mathfrak{A}\xi | \xi \in V \right\},\mathfrak{A}^{-1}(0)=\left\{\xi|\mathfrak{A}\xi=0,\xi\in V\right\}.

    线性变换的值域于核都是V的子空间,他们对加法和数量乘法是封闭的。\mathfrak{A}V的维数称为\mathfrak{A}\mathfrak{A}^{-1}(0)的维数称为\mathfrak{A}零度

    例1:在线性空间P[x]_n中,令\mathfrak{D}(f(x))=f'(x).\mathfrak{D}的值域就是P[x]_{n-1},\mathfrak{D}的核就是子空间P。

    定理1

    \mathfrak{A}是n维线性空间V的线性变换,\varepsilon _1,\varepsilon _2,...,\varepsilon _n是V的一组基,在这组基下\mathfrak{A}的矩阵是A,则

    (1)\mathfrak{A}的值域\mathfrak{A}V是由基像组生成的子空间,即\mathfrak{A}V=L(\mathfrak{A}\varepsilon _1,\mathfrak{A}\varepsilon _2,...,\mathfrak{A}\varepsilon _n);

    (2)\mathfrak{A}的秩=A的秩;

    定理2

    \mathfrak{A}是n维线性空间V的线性变换,则\mathfrak{A}V的一组基的原像及\mathfrak{A}^{-1}(0)的一组基合起来就是V的一组基,由此还有\mathfrak{A}的秩+\mathfrak{A}的零度=n.

    推论:对于有限维线性空间的线性变换,它是单射的充分必要条件为它是满射。虽然子空间\mathfrak{A}V\mathfrak{A}^{-1}(0)的维数之和为n,但是\mathfrak{A}V+\mathfrak{A}^{-1}(0)并不一定是整个空间。

    例2:设A是一个n阶矩阵,A^2=A.则A相似于一个对角矩阵\left|\begin{matrix} 1\\ &1\\ &&\ddots \\ &&&1\\ &&&&0\\ &&&&&\ddots \\ &&&&&&0\end{matrix} \right |.

     

    展开全文
  • 该方法通过构建具有较小维数特征子空间正交来简化矩阵K,从而降低DKPCA计算复杂性。DKPCA方法相比,该方法具有更高计算效率,且只需较小计算机存储空间。将该方法应用于TE(tennessee eastman)过程...
  • 作者 | 小小挖掘机 来源 | SIGAI 主成分分析 主成分分析是一种数据降维和去除相关性的方法,它通过线性变换将向量投影到低空间。...其中e为投影后空间的基向量,是标准正交基;a为重构系数,也是投影到低空间后...

    作者 | 小小挖掘机
    来源 | SIGAI

    主成分分析

    主成分分析是一种数据降维和去除相关性的方法,它通过线性变换将向量投影到低维空间。对向量进行投影就是对向量左乘一个矩阵,得到结果向量:

    y = Wx

    结果向量的维数小于原始向量的维数。降维要确保的是在低维空间中的投影能很好的近似表达原始向量,即重构误差最小化:

    其中e为投影后空间的基向量,是标准正交基;a为重构系数,也是投影到低维空间后的坐标。如果定义如下的散布矩阵:

    其中m和μ为所有样本的均值向量。则上面的重构误差最小化等价于求解如下问题:

    通过拉格朗日乘数法可以证明,使得该函数取最小值的ej为散度矩阵最大的d’个特征值对应的单位长度特征向量。矩阵W的列ej是我们要求解的基向量,由它们构成投影矩阵。计算时,先计算散布矩阵(或者协方差矩阵),再对该进行进行特征值分解,找到最大的一部分特征值和对应的特征向量,构成投影矩阵。可以证明,协方差矩阵或散布矩阵是实对称半正定矩阵,因此所有特征值非负。进行降维时,先将输入向量减掉均值向量,然后左乘投影矩阵,即可得到投影后的向量。

    主成分分析一种无监督学习算法,也是一种线性方法。

    线性判别分析

    线性判别分析向最大化类间差异、最小化类内差异的方向线性投影。其基本思想是通过线性投影来最小化同类样本间的差异,最大化不同类样本间的差异。具体做法是寻找一个向低维空间的投影矩阵W,样本的特征向量x经过投影之后得到的新向量:

    y = Wx

    同一类样投影后的结果向量差异尽可能小,不同类的样本差异尽可能大。简单的说,就是经过这个投影之后同一类的样本进来聚集在一起,不同类的样本尽可能离得远。这种最大化类间差异,最小化类内差异的做法,在机器学习的很多地方都有使用。

    类内散布矩阵定义为:

    它衡量的内类样本的发散程度。其中mi为每个类的均值向量,m为所有样本的均值向量。类间散布矩阵定义为:

    它衡量的了各类样本之间的差异。训练时的优化目标是类间差异与类内差异的比值:

    上面的问题带有冗余,如果w是最优解,将其乘以一个不为0的系数之后还是最优解。为了消掉冗余,加上如下约束:

    然后使用拉格朗日乘数法,最后归结于求解矩阵的特征值与特征向量:

    LDA是有监督的学习算法,在计算过程中利用了样本标签值,是线性模型。LDA也不能直接用于分类和回归问题,要对降维后的向量进行分类还需要借助其他算法。

    kNN算法

    kNN算法将样本分到离它最相似的样本所属的类。算法本质上使用了模板匹配的思想。要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接近的k个样本,统计这些样本的类别进行投票,票数最多的那个类就是分类结果。

    由于需要计算样本间的距离,因此需要依赖距离定义,常用的有欧氏距离,Mahalanobis距离,Bhattacharyya距离。另外,还可以通过学习得到距离函数,这就是距离度量学习。

    kNN算法是一种判别模型,即支持分类问题,也支持回归问题,是一种非线性模型。它天然的支持多分类问题。kNN算法没有训练过程,是一种基于实例的算法。

    人工神经网络

    人工神经网络是一种仿生的方法,参考了动物的神经元结构。从本质上看,它是一个多层复合函数。对于多层前馈型神经网络,即权连接网络,每一层实现的变换为:

    其中W为权重矩阵,b为偏置向量,f为激活函数。正向传播时反复用上上对每一层的输出值进行计算,得到最终的输出。使用激活函数是为了保证非线性,万能逼近定理保证了神经网络可以比较闭区间上任意一个连续函数。

    权重和偏置通过训练得到,采用的是反向传播算法。反向传播算法从复合函数求导的链式法则导出,用于计算损失函数对权重,偏置的梯度值。算法从最外层的导数值算起,依次递推的计算更内层的导数值,这对应于从神经网络的输出层算起,反向计算每个隐含层参数的导数值。其核心是误差项的定义,定义误差项为损失函数对临时变量u的梯度:

    其中,nl是神经网络的层数。最后一个层的误差项可以直接求出,其他层的误差项根据上面的递推公式进行计算。根据误差项,可以计算出损失函数对每一层权重矩阵的梯度值:

    以及对偏置向量的梯度值:

    然后用梯度下降法对它们的值进行更新。参数初始化一般采用随机数,而不是简单的初始化为0。为了加快收敛速度,还可以使用动量项,它积累了之前的梯度信息。

    神经网络训练时的损失函数不是凸函数,因此有陷入局部极值,鞍点的风险。另外,随着层数的增加,会导致梯度消失问题,这是因为每次计算误差项时都需要乘以激活函数的导数值,如果其绝对值小于1,多次连乘之后导致误差项趋向于0,从而使得计算出来的参数梯度值接近于0,参数无法有效的更新。

    复合函数求导 + 梯度下降法

    标准的神经网络是一种有监督的学习算法,它是一种非线性模型,它既可以用于分类问题,也可以用于回归问题,并且支持多分类问题。

    支持向量机

    支持向量机的核心思想是最大化分类间隔。简单的支持向量机就是让分类间隔最大化的线性分类器,找到多维空间中的一个超平面。它在训练是求解的问题为:

    这从点到超平面的距离方程导出,通过增加一个约束条件消掉了优化变量的冗余。可以证明,这个问题是凸优化问题,并且满足Slater条件。这个问题带有太多的不等式约束,不易求解,因此通过拉格朗日对偶转换为对偶问题求解:

    同样的,这个问题也是凸优化问题。此时支持向量机并不能解决非线性分类问题,通过使用核函数,将向量变换到高维空间,使它们更可能是线性可分的。而对向量先进行映射再做内积,等价于先做内积再做映射,因此核函数并不用显式的对向量进行映射,而是对两个向量的内积进行映射,这是核函数的精髓。

    加入核函数K之后的对偶问题变为:

    预测函数为:

    其中b通过KKT条件求出。如果使用正定核,这个问题也是凸优化问题。求解采用了SMO算法,这是一种分治法,每次挑选出两个变量进行优化,其他变量保持不动。选择优化变量的依据是KKT条件,对这两个变量的优化是一个带等式和不等式约束的二次函数极值问题,可以直接得到公式解。另外,这个子问题同样是一个凸优化问题。

    标准的支持向量机只能解决二分类问题。对于多分类问题,可以用这种二分类器的组合来解决,有以下几种方案:

    1对剩余方案。对于有k个类的分类问题,训练k个二分类器。训练时第i个分类器的正样本是第i类样本,负样本是除第i类之外其他类型的样本,这个分类器的作用是判断样本是否属于第i类。在进行分类时,对于待预测样本,用每个分类器计算输出值,取输出值最大那个作为预测结果。

    1对1方案。如果有k个类,训练Ck2个二分类器,即这些类两两组合。训练时将第i类作为正样本,其他各个类依次作为负样本,总共有k (k − 1) / 2种组合。每个分类器的作用是判断样本是属于第i类还是第j类。对样本进行分类时采用投票的方法,依次用每个二分类器进行预测,如果判定为第m类,则m类的投票数加1,得票最多的那个类作为最终的判定结果。

    除了通过二分类器的组合来构造多类分类器之外,还可以通过直接优化多类分类的目标函数得到多分类器。

    SVM是一种判别模型。它既可以用于分类问题,也可以用于回归问题。标准的SVM只能支持二分类问题,使用多个分类器的组合,可以解决多分类问题。如果不使用核函数,SVM是一个线性模型,如果使用非线性核,则是非线性模型,这可以从上面的预测函数看出。

    logistic回归

    logistic回归是一种二分类算法,直接为样本估计出它属于正负样本的概率。先将向量进行线性加权,然后计算logistic函数,可以得到[0,1]之间的概率值,它表示样本x属于正样本的概率:

    正样本标签值为1,负样本为0。使用logistic函数的原因是它单调增,并且值域在(0, 1)之间,刚好符合概率的要求。训练时采用最大似然估计,求解对数似然函数的极值:

    可以证明这是一个凸优化问题,求解时可以用梯度下降法,也可以用牛顿法。如果正负样本的标签为+1和-1,则可以采用另外一种写法:

    训练时的目标同样是最大化对数似然函数:

    同样的,这也是一个凸优化问题。预测时并不需要计算logistic函数,而是直接计算:

    Logistic回归是一种二分类算法,虽然使用了概率,但它是一种判别模型!另外要注意的是,logistic回归是一种线性模型,这从它的预测函数就可以看出。它本身不能支持多分类问题,它的扩展版本softmax回归可以解决多分类问题。

    K均值算法

    K均值算法是一种聚类算法,把样本分配到离它最近的类中心所属的类,类中心由属于这个类的所有样本确定。

    k均值算法是一种无监督的聚类算法。算法将每个样本分配到离它最近的那个类中心所代表的类,而类中心的确定又依赖于样本的分配方案。

    在实现时,先随机初始化每个类的类中心,然后计算样本与每个类的中心的距离,将其分配到最近的那个类,然后根据这种分配方案重新计算每个类的中心。这也是一种分阶段优化的策略。

    与k近邻算法一样,这里也依赖于样本之间的距离,因此需要定义距离的计算方式,最常用的是欧氏距离,也可以采用其他距离定义。算法在实现时要考虑下面几个问题:

    1.类中心向量的初始化。一般采用随机初始化。最简单的是Forgy算法,它从样本集中随机选择k个样本作为初始类中心。第二种方案是随机划分,它将所有样本随机的分配给k个类中的一个,然后按照这种分配方案计算各个类的类中心向量。

    2.参数k的设定。可以根据先验知识人工指定一个值,或者由算法自己确定。

    3.迭代终止的判定规则。一般做法是计算本次迭代后的类中心和上一次迭代时的类中心之间的距离,如果小于指定阈值,则算法终止。

    卷积神经网络

    卷积神经网络是对全连接神经网络的发展,它使用卷积层,池化层自动学习各个尺度上的特征。卷积运算为:

    在这里需要注意多通道卷积的实现,它的输入图像,卷积核都有多个通道,分别用各个通道的卷积核对输入图像的各个通道进行卷积,然后再累加。这里也使用了激活函数,原因和全连接神经网络相同。池化运算最常见的有均值池化,max池化,分别用均值和最大值代替图像的一块矩形区域。使用池化的原因是为了降维,减小图像的尺寸,另外,它还带来了一定程度的平移和旋转的不变性。Max池化是非线性操作,现在用的更多。

    对于经典的网络结构,包括LeNet-5网络,AlexNet,VGG网络,GoogLeNet,残差网络等经典的网络结构,创新点,要熟记于心。

    自Alex网络出现之后,各种改进的卷积网络不断被提出。这些改进主要在以下几个方面进行:卷积层,池化层,激活函数,损失函数,网络结构。对于这些典型的改进,也要深刻理解。

    由于引入了卷积层和池化层,因此反向传播算法需要为这两种层进行考虑。卷积层误差项的反向传播的公式为:

    根据误差项计算卷积核梯度值的公式为:

    如果采用均值池化,池化层的误差项反向传播计算公式为:

    如果使用max池化,则为:

    注意,池化层没有需要训练得到的参数。

    卷积神经网络具有迁移学习的能力,我们可以把这个网络的参数作为训练的初始值,在新的任务上继续训练,这种做法称为fine-tune,即网络微调。大量的实验结果和应用结果证明,这种微调是有效的。这说明卷积神经网络在一定程度上具有迁移学习的能力,卷积层学习到的特征具有通用性。VGG网络在ImageNet数据集上的训练结果在进行微调之后,被广泛应用于目标检测、图像分割等任务。

    和全连接神经网络一样,卷积神经网络是一个判别模型,它既可以用于分类问题,也可以用用于回归问题,并且支持多分类问题。

    循环神经网络

    循环神经网络是一种具有记忆功能的神经网络,每次计算时,利用了上一个时刻的记忆值,特别适合序列数据分析。网络接受的是一个序列数据,即一组向量,依次把它们输入网络,计算每个时刻的输出值。记忆功能通过循环神层实现:

    它同时利用了本时刻的输入值和上一个时刻的记忆值。输出层的变换为:

    这和普通神经网络没什么区别。由于引入了循环层,因此反向传播算法有所不同,称为BPTT,即时间轴上的反向传播算法。算法从最后一个时刻算起,沿着时间轴往前推。误差项的递推公式为:

    递推的终点为最后一个时刻。

    根据误差项计算对权重和偏置的梯度值的公式为:

    循环神经网络同样存在梯度消失问题,因此出现了LSTM,GRU等结构。

    以循环神经网络为基础,构造出了两类通用的框架,分别是连接主义时序分类(CTC),以及序列到序列学习(seq2seq)。用于解决语音识别,自然语言处理中的问题。其中,seq2seq采用了编码器-解码器结构,用两个循环神经网络组合起来完成计算,一个充当编码器,一个充当解码器。

    和其他类型的神经网络一样,循环神经网络是一个判别模型,既支持分类问题,也支持回归问题,并且支持多分类问题。

    高斯混合模型

    高斯混合模型通过多个正态分布的加权和来描述一个随机变量的概率分布,概率密度函数定义为:

    其中x为随机向量,k为高斯分布的个数,wi为权重,μ为高斯分布的均值向量,∑为协方差矩阵。所有权重之和为1,即:

    任意一个样本可以看作是先从k个高斯分布中选择出一个,选择第i个高斯分布的概率为wi,再由第i个高斯分布

    产生出这个样本数据x。高斯混合模型可以逼近任何一个连续的概率分布,因此它可以看做是连续性概率分布的万能逼近器。之所有要保证权重的和为1,是因为概率密度函数必须满足在

    内的积分值为1。

    指定高斯分布的个数,给定一组训练样本,可以通过期望最大化EM算法确定高斯混合模型的参数。每次迭代时,在E步计算期望值,在M步最大化期望值,如此循环交替。

    EM算法

    EM算法是一种迭代法,其目标是求解似然函数或后验概率的极值,而样本中具有无法观测的隐含变量。因为隐变量的存在,我们无法直接通过最大化似然函数来确定参数的值。可以采用一种策略,构造出对数似然函数的一个下界函数,这个函数不含有隐变量,然后优化这个下界。不断的提高这个下界,使原问题达到最优解,这就是EM算法所采用的思路。算法的构造依赖于Jensen不等式。

    算法在实现时首先随机初始化参数θ的值,接下来循环迭代,每次迭代时分为两步:

    E步,基于当前的参数估计值

    ,计算在给定x时对z的条件概率的数学期望:

    M步,求解如下极值问题,更新θ的值:

    实现*Qi *时可以按照下面的公式计算:

    迭代终止的判定规则是相邻两次函数值之差小于指定阈值。需要注意的是,EM算法只能保证收敛到局部极小值。


    搜索进入小程序,解锁更多新鲜资讯和优质内容,不要错过哟!

    展开全文
  • 函数

    2019-10-08 17:12:02
    代数与核函数 是一个意思  5)高斯函数 正态分布就是一个高斯...高斯函数本质:将每一个样本点映射到一个无穷维的特征空间; 无穷:将 m*n 数据集,映射为 m*m 数据集,m 表示样本个,n 表示原始...

    代数与核函数 是一个意思

     

     5)高斯函数

    • 正态分布就是一个高斯函数;
    • 高斯函数和高斯核函数,形式类似;

     

     6)其它

    • 高斯核函数,也称为 RBF 核(Radial Basis Function Kernel),也称为径向基函数;
    • 高斯核函数的本质:将每一个样本点映射到一个无穷维的特征空间;
    1. 无穷维:将 m*n 的数据集,映射为 m*m 的数据集,m 表示样本个数,n 表示原始样本特征种类,样本个数是无穷的,因此,得到的新的数据集的样本也是无穷维的;
    2. 高斯核升维的本质,使得线性不可分的数据线性可分;

     

     

     2)经过高斯核,得到新的数据集

    np.exp(m):表示 e 的 m 次幂;

    np.empty(元组):(元组)=(m, n),生成一个 m 行 n 列的空的矩阵;

    升维后用多项式核函数分类

     

    升维后用多项式核函数分类

     

    展开全文
  • 在OpenCV里实现DCT变换

    千次阅读 2019-11-22 08:32:44
    由于DCT的变换构成的基向量图像内容无关,而且变换是可以分离的,既二DCT可以用两次一DCT来完成,使得数学运算难度大大简化,再配以已经发现的其它快速算法,使得DCT编码得到了广泛的应...

    离散余弦变换简称为DCT(是英Discrete Cosine Transform的缩写词),是一种数字处理方法,经常用于数据处理。DCT是多种数字变换方法的一种,它是把空间域图像变换到频率域进行分析的方法。由于DCT的变换核构成的基向量与图像内容无关,而且变换核是可以分离的,既二维DCT可以用两次一维DCT来完成,使得数学运算难度大大简化,再配以已经发现的其它快速算法,使得DCT编码得到了广泛的应用。将DCT应用于图像数据压缩,可以减少代表图像亮度(或色度)层次数码信息,达到数据压缩的目的。利用DCT不仅可将图像编码,还可以在编码变换过程发现图像细节的位置,以便删去或略去对视觉不敏感的部分,而更加突出视觉的敏感部分,通过选择主要数据来传输、重视图像。

      利用DCT压缩图像数据,主要是根据图像信号在频率域的统计特性。在空间域看来,图像内容千差万别;但在频率域上,经过对大量图像的统计分析发现,图像经过DCT变换后,其频率系数的主要成分集中于比较小的范围,且主要位于低频部分。利用DCT变换揭示出这种规律后,可以再采取一些措施把频谱中能量较小的部分舍弃,尽量保留传输频谱中主要的频率分量,就能够达到图像数据压缩目的。

    离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它与离散傅里叶变换类似,但是只使用实数。这种变化经常被信号处理和图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行有损压缩。在压缩算法中,现将输入图像划分为8*8或16*16的图像块,对每个图像块作DCT变换;然后舍弃高频的系数,并对余下的系数进行量化以进一步减少数据量;最后使用无失真编码来完成压缩任务。解压缩时首先对每个图像块作DCT反变换,然后将图像拼接成一副完整的图像。

    大多数自然信号(包括声音和图像)的能量都集中在余弦变换后的低频部分。由于人眼对于细节信息不是很敏感,因此信息含量更少的高频部分可以直接去掉,从而在后续的压缩操作中获得较高的压缩比。

    可以用代码演示如下:

    #python 3.7.4,opencv4.1
    #蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
    #
    import numpy as np
    import cv2
    from matplotlib import pyplot as plt
    
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    
    #快速DCT变换补充大小
    def dctpad(src):
        h, w = src.shape[:2]
        h1 = int((h/8+0.5))*8
        w1 = int((w/8+0.5))*8
    
        # 获取优化的大小
    #    dft_M = cv2.getOptimalDFTSize(w1)
    #    dft_N = cv2.getOptimalDFTSize(h1)
        #拷贝到补充的数组
        dft_A = np.zeros((h1, w1), dtype=np.float32)
        dft_A[:h, :w] = src    
        return dft_A
    
    #图片的路径
    imgname = "img1.jpg"
    
    #读取图片
    image = cv2.imread(imgname, cv2.IMREAD_GRAYSCALE)
    
    #图片的高度和宽度
    h,w = image.shape[:2]
    print(w,h)
    
    #
    imgf = dctpad(image)
    print(imgf.dtype, imgf.shape)
    dct = np.zeros_like(imgf)
    imsize = imgf.shape
    #8x8 DCT
    for i in range(0,imgf.shape[0],8):
        for j in range(0,imgf.shape[1],8):
            dct[i:(i+8),j:(j+8)] = cv2.dct(imgf[i:(i+8),j:(j+8)])
    #
    pos = 128
    
    # 显示其中一块数据对比
    plt.figure()
    plt.imshow(image[pos:pos+8,pos:pos+8],cmap='gray')
    plt.title( "8x8原图像块")
    
    # 显示DCT中一块数据
    plt.figure()
    plt.imshow(dct[pos:pos+8,pos:pos+8],cmap='gray',vmax= np.max(dct)*0.01,vmin = 0, extent=[0,np.pi,np.pi,0])
    plt.title( "8x8 DCT图像块")
    
    # 显示完整的DCT图像
    plt.figure()
    plt.imshow(dct,cmap='gray',vmax = np.max(dct)*0.01,vmin = 0)
    plt.title( "8x8 DCT的图像")
    
    # 阈值分割,相当于量化
    thresh = 0.012
    dct_thresh = dct * (abs(dct) > (thresh*np.max(dct)))
    print(abs(dct)> (thresh*np.max(dct)))
    
    plt.figure()
    plt.imshow(dct_thresh,cmap='gray',vmax = np.max(dct)*0.01,vmin = 0)
    plt.title( "阈值分割 8x8 DCT 图像")
    
    percent_nonzeros = np.sum( dct_thresh != 0.0 ) / (imsize[0]*imsize[1]*1.0)
    
    print("保留系数 %f%% " % (percent_nonzeros*100.0))
    
    #
    im_dct = np.zeros(imsize)
    # 8x8 IDCT 
    for i in range(0,im_dct.shape[0],8):
        for j in range(0,im_dct.shape[1],8):
            im_dct[i:(i+8),j:(j+8)] = cv2.idct(dct_thresh[i:(i+8),j:(j+8)])
    plt.figure()
    plt.imshow( np.hstack( (image, im_dct) ) ,cmap='gray')
    plt.title("原图和压缩后再恢复图" )
    
    
    plt.show()
    #
    cv2.waitKey(0)
    cv2.destroyAllWindows()
     
    

    结果输出如下:

    同样大小的两块数据在变换前和变换后的对比

    DCT变换之后,进行阈值分割前后的对比,可见保留的像素更加少了。

    仅保留系数 4.583562%像素复原后的图像与原图进行比较。

     

     

     

    玩转人工智能库-深入浅出OpenCV
    https://edu.csdn.net/course/detail/26616

     

    Python游戏开发入门

    http://edu.csdn.net/course/detail/5690
     

    你也能动手修改C编译器

    http://edu.csdn.net/course/detail/5582

    展开全文
  •  7.2 维数基与坐标  7.3 基变换与坐标变换  7.4 线性子空间  7.5 子空间的交与和  7.6 子空间的直和  7.7 线性空间的同构  7.8 线性空间的mathematica符号运算 第8章 线性变换  8.1 线性变换的概念与基本...
  • ArcGIS地统计分析模块应用、网络路径分析和矢量空间分析(网络追踪分析及市区选房分析为例)、空间校正、明暗等高线(以土壤项目数据为例)、噪声影响分布分析、专题图制作、三地形分析、ArcGIS影像配准、虚拟...
  • 通过径向基核函数将网络特征评估标准映射至高维空间进行计算,建立网络特征评估和后续网络入侵分类器之间联系,在特征选择阶段解决了分类器参数设计问题,建立网络入侵检测模型,并采用KDD 99数据集对F-SVM...
  • 以再生希尔伯特空间中的线性分析为基础,把样本集映射到再生空间中,然后张成再生空间的一个线性子空间,并求出这个子空间的基.利用基线性表示子空间中的其他元素,减小了求解矩阵的维数,通过求解规模相对较小的...
  • 前十三讲属于点集拓扑学部分,主要讲点集拓扑学的基本概念,连续映射同胚,拓扑空间的几种常见运算(如积空间、商空间等)以及主要的拓扑性质(如分离性、可性、紧性、连通性等),并简要地介绍了曲面分类、函数...
  • §6.3 维数基与坐标 §6.4 基变换与坐标变换 §6.5 线性子空间 §6.6 子空间的交与和 §6.7 子空间的直和 §6.8 线性空间的同构 第七章 线性变换 §7.1 线性变换的定义 §7.2 线性变换的运算 §7.3 线性...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 2.19 程序运行正确,但退出时却“coredump”(核心转储)了,怎么回事? 联合 2.20 结构和联合有什么区别? 2.21 有办法初始化联合吗? 2.22 ...
  • 2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 联合 2.20 结构和联合有什么区别? 2.21 有办法初始化联合吗? 2.22 有没有一...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 29 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 29 联合 30 2.20 结构和联合有什么区别? 30 2.21 有办法初始化...
  • 2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 58 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 58 联合 59 2.20 结构和联合有什么区别? 59 2.21 有办法初始化联合...
  • 2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 58 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 58 联合 59 2.20 结构和联合有什么区别? 59 2.21 有办法初始化联合...
  •  2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样?  2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事?  联合  2.20 结构和联合有什么区别?  2.21 有办法初始化联合吗? ...
  • 2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 联合 2.20 结构和联合有什么区别? 2.21 有办法初始化联合吗? 2.22 有没有一...
  • 2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样?  2.19 程序运行正确,但退出时却“coredump”(核心转储)了,怎么回事?  联合  2.20 结构和联合有什么区别?  2.21 有办法初始化联合吗?  ...
  •  2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 2.19 程序运行正确,但退出时却“coredump”(核心转储)了,怎么回事? 联合 2.20 结构和联合有什么区别? 2.21 有办法初始化联合吗? 2.22...
  • 2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 29 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 29 联合 30 2.20 结构和联合有什么区别? 30 2.21 有办法初始化...
  • 数字电路制造工业进步,使得系统设计人员能在更小的空间内实现更多功 能,从而提高系统可靠性和速度。 集成电路类型很多,从大方面可以分为模拟电路和数字集成电路2 大 类。数字集成电路广泛用于计算机、...
  • 本章讨论公有继承,这种继承模拟了is-a关系,即派生对象是对象特例。例如,物理学家是科 学家特例。有些继承关系是多态,这意味着相同方法名称可能导致依赖于对象类型行为。要实现 这种行为,需要使用...
  • 本章讨论公有继承,这种继承模拟了is-a关系,即派生对象是对象特例。例如,物理学家是科 学家特例。有些继承关系是多态,这意味着相同方法名称可能导致依赖于对象类型行为。要实现 这种行为,需要使用...
  • 本章讨论公有继承,这种继承模拟了is-a关系,即派生对象是对象特例。例如,物理学家是科 学家特例。有些继承关系是多态,这意味着相同方法名称可能导致依赖于对象类型行为。要实现 这种行为,需要使用...

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

核空间的基与维数