Cuda图像处理函数关于eval函数的,求助

 


 

本技术方案提出了一种基于紧框架特征字典的图像修复方法利用离散余弦变换DCT-Ⅱ型正交矩阵,构造出具有冗余性的离散余弦变换DCT框架系统并成功应用于图像修复领域,有效的修复图像的文理结构信息图像在DCT小框架基的分解下,得到的框架系数代表图像不同方向或不同阶的边缘特征信息同时利用框架系数稀疏的先验知识,建立基于加权范数的DCT框架系数优化模型提出基于逼近算子的迭代算法获取模型的解。在概率模型的假设下利鼡拉普拉斯概率分布先验模型近似几何框架系数的实际概率分布,同时假设模型噪声的高斯分布条件下利用MAP技术建立自适应稀疏软阈值算子,对图像进行几何框架系数稀疏表示既能够保护边缘特征又能滤除噪声。

随着计算机处理能力的提高利用计算机辅助人类完成任務越来越具备智能化处理能力。在日常生活中信息化程度越来越高,数字信息技术在社会各个领域都得到广泛的应用特别是各种移动電子设备和无线网络普及度的不断提高,随之而来的是各种纷繁复杂的数据以及如何对这些数据分析和处理例如对摄像设备获取得到的圖像数据进行加工处理,修改画面的某些场景图像修复(Image Inpainting)问题就是研究图像智能化算法,自动修复图像中部分缺失或破损区域信息并且修复的效果需要合理符合图像的局部结构。图像修复算法能够让计算机具有艺术家的创作才华填补完成符合人的视觉要求的图像缺失信息,是数字Cuda图像处理函数领域近年来热门的研究方向之一

计算机智能化水平越来越高,如智能手机人与计算机之间的交互更具智能化囷人性化,利用图像修复技术能够自动填补视频中某些场景或区域在人们生活中城市智能化越来越普及,监控摄像头广泛应用于获取城市状况信息但是由于监控环境和硬件条件的限制,获取的视频信息部分受到遮挡或模糊需要利用修复技术还原缺失部分并填充放大图潒,重现出真实画面的图像信息如何从被噪声或奇异点污染或部分缺失的观测数据中恢复出原始数据结构信息,已成为图像与计算机视覺、机器学习、数据挖掘等众多研究领域所面临的一个核心的研究课题

图像修复问题的难点就是要让填补的信息满足人的视觉效果同时苻合实际的物理结构。解决图像修复问题大致可分成两大类方法:基于PDE(Partial Differential Equations)方法和基于样本特征(Patch-based)方法由于在数据缺失的区域并不存在任何有鼡信息,需要人为地对其进行先验假设基于PDE或样本基图像修复方法,都需要假设已知数据和填补的数据应该具有同样的统计特性或几何結构信息在先验的信息的假设下,建立具有先验的信息约束模型能够将病态的图像修复逆问题转换成适定问题,将局部或全局的图像先验结构特征逐步地扩充到数据缺失区域中基于样本基算法是利用非局部的图像特征数据,逐片填充缺失区域的信息对大区域缺失数據的修复可以得到比较好的视觉效果。将缺失区域的边界分成很多图像块(Patch),图像块被赋予不同的优先等级优先级高的图像块需要优先填补,才能有效修复出图像的边缘结构信息

基于信号表示的稀疏性和冗余性而提出的稀疏表示(Sparse Representation)方法是一种有效描述信号的方法,能够简单有效地在数学上描述或分析数据并成功应用于Cuda图像处理函数领域。在冗余紧框架下利用冗余紧框架系统对图像进行分解,然后对系数进荇伸缩处理能够比正交基更好地保护图像边缘细节;对于图像修复问题,假设已知和未知的图像数据具有相同的稀疏表示特性建立关於系数冗余基系数稀疏的优化模型,提出迭代算法并利用硬阈值算子或软阈值算子对冗余基系数进行收缩稀疏表示逐步恢复图像原有结構信息。基于冗余基稀疏表示图像修复算法如曲波变换系统(Curvelet Transform),紧框架系统(Tight Frame)能有效修复小区域数据缺失信息然而,与基于PED算法相似基於冗余基的稀疏表示算法对大的数据缺失区域并不能得到较好的结果。

利用非局部(Nonlocal)图像特征,通过训练学习能够对图像块信息进行稀疏表示嘚特征字典能够有效重建出图像结构。利用范数度量对图像块进行聚类然后利用奇异值分解算法对每一组相似的图像块特征进行训练嘚到对应的特征字典。对于特征字典的训练学习K-SVD算法能够比较有效地解决训练学习字典的非凸优化模型问题。特征字典能够有效得表示圖像块特征但是字典中包含的原子特征的个数即字典的维数需要根据实际的特征进行自适应选择。可以利用最小描述长度MDL(Minimum Description Length)原则确定字典維数并用穷举法求解确定字典维数。但是样本的维数太大时MDL算法的效率不高。对于字典训练学习很大依赖于图像块样本的选择如何哽好地对将度量图像块特征并对特征进行归类,获取更有代表性特征字典需要进一步研究

2010)中的算法修复得到的结果,图像的文理结构並没有很好得正确填补出来;图1(c)是著名Cuda图像处理函数软件的内容识别填充(Content-Aware Fill)技术修复得到的结果能够填补一定的图像的文理结构信息,但昰其结果并不十分满足人的视觉要求因此,根据先验假设填充满足人的视觉习惯的图像结构信息保持图像全局与局部一致性相结合的高质量图像是十分关键的。

为解决现有技术中存在的问题本技术方案提出了一种基于紧框架特征字典的图像修复方法,本技术方案具体通过如下技术方案实现:

一种基于紧框架特征字典的图像修复方法所述方法包括以下步骤:

  1. 一种基于紧框架特征字典的图像修复方法,其特征在于所述方法包括以下步骤:

S1:将图像数据划分成若干个图像块,其中包括需要修复的目标图像块PT,假设目标结构特征;

S2:利鼡DCT框架系统将空间域的图像结构信息变换到DCT框架域中,不同的频带框架系数代表不同的频带特征其中,所述DCT框架系统利用离散余弦变換DCT-Ⅱ型正交矩阵构造出来;

S3:从已知的图像数据区域中选取与所述目标图像块PT具有相似结构特征的图像块构成对所述目标图像块PT具有相姒特征的样本特征字典,其中是第i个样本特征利用框架系数稀疏的先验知识,建立基于加权范数的DCT框架系数优化模型基于逼近算子的迭代算法获取所述模型的解,构造出合适的特征字典;

S4:利用构造的特征字典预测估计出目标图像特征信息即其中,为线性组合系数;

S5:参照估计得出的目标图像特征信息对图像进行修复

  1. 其特征在于:所述步骤S3中,在概率模型的假设下利用拉普拉斯概率分布先验模型菦似几何框架系数的实际概率分布,同时假设模型噪声的高斯分布条件下利用MAP技术建立自适应稀疏软阈值算子,对图像进行几何框架系數稀疏表示
  2. 其特征在于:所述利用框架系数稀疏的先验知识,建立基于加权范数的DCT框架系数优化模型基于逼近算子的迭代算法获取所述模型的解,构造出合适的特征字典具体为:构造有约束的正则化模型框架下:

其中是系数约束项,是特征的线性组合与目标特征的逼菦程度s是解的约束空间,所述约束空间为仿射包、锥包或凸包;系数约束项是系数的稀疏性用范数或范数度量空间度量;是目标特征與之间逼近程度;利用近似凸优化与的逼近算子作为求解的稀疏先验问题。

  1. 其特征在于:大小为的DCT-Ⅱ型的正交矩阵表示为:

将矩阵的每一荇系数作为一维滤波器其中第一行是低通滤波器,其它各行是高通滤波器

其中是系数约束项,是特征的线性组合与目标特征的逼近程喥是解的约束空间,所述约束空间为仿射包、锥包或凸包;系数约束项是系数的稀疏性用范数或范数度量空间度量;是目标特征与之間逼近程度,利用近似凸优化与的逼近算子作为求解的稀疏先验问题

本技术方案的有益效果是:本技术方案利用DCT框架系统在不同频带检測图像结构特征信息,研究DCT小框架域中样本特征选取问题解决图像块结构相似性的度量技术难点,具有创新性;针对样本特征字典所生荿的线性特征结构空间研究有约束空间特征字典构造问题,具有理论性和针对性;利用近似凸优化与的逼近算子作为求解的稀疏先验问題有效地求解不可微的非凸优化模型。

图1(a)是图像数据缺失区域(黑色);

图1(b)是非专利文献1中的算法的修复结果;

图3是对候选图像进荇与目标图像块PT相似的特征图像块选取;

图4是图像修复问题示意图;

图5(a)是不同频带的框架系数示意图;

图5(b)是框架高频系数大小的統计分布图;

图6(a)是样本在仿射包约束条件下的几何意义;

图6(b)是样本在锥包约束条件下的几何意义;

图6(a)是样本在凸包约束条件丅的几何意义;

图7是目标图像块PT与在不同度量下不同结构图像块之间的相似程度示意图

下面结合附图说明及具体实施方式对本技术方案進一步说明。

在基于样本特征修复框架下需要将图像数据划分成很多图像块(Patch),然后对缺失区域逐块进行填补修复图像的结构信息如附圖2所示,对于目标图像块PT需要从已知的图像数据区域中获取与之具有相似结构特征P1P2,构成对目标图像块具有相似特征的样本特征字典

估计图像块之间的相似性,不能简单利用范数度量图像块之间差的大小来决定它们之间的相似度如范数会倾向于选择均匀光滑的图像塊与纹理结构的图像块具有相似性,而且结构相似的图像块其数值也不一定相近。同时图像特征也具有方向性统计直方图并不具备区汾方向性的特点,容易选择出方向性不一致的样本特征样本基特征字典的构造问题需要能够准确度量图像块之间的相似性距离空间,然洏样本特征具有方向性和结构特性需要研究新理论和技术手段或方法解决问题。

对于给定的目标图像块可能并不存在与其完全相同的圖像块特征,需要研究能够完备地或近似逼近表示图像目标信息的相应特征字典构造特征字典涉及特征字典的特征数目,过多的特征数會导致过高的计算复杂度太少的特征数可能又无法表示目标。如附图3所示左半边图表示与图像块PT特征相似特征,右半边图表示从左边圖中有效地选择特征确定特征数目提高算法效率。同时由于只已知目标图像块的部分结构信息,而填补的数据需要从具有同样的统计特性或几何结构信息的特征字典中预测估计得到所以需要考虑将图像的二维几何方向特征信息嵌入到图像特征字典的构造当中。紧框架能够提取图像的局部特征信息需要利用其方向特性嵌入到特征字典的构造中,特别是当观察得到的图像特征样本数据也存在数据缺失时建立基于紧框架特征字典学习问题,解决图像特征具有方向性的特征字典构造问题

图像经过紧框架变换,可以得到不同频带的框架系數相同区域不同频带的框架系数表征不同的图像局部信息特征。在紧框架变换域中大的框架系数表示该区域可能是边缘细节,小的系數可能是平滑区域或噪声局部的框架系数代表某一方向结构特征,度量空间域图像块之间的相似性可以转换到框架域中估计对应位置的框架系数图像细节信息,例如边缘、点、形状轮廓等特征某种程度是某一频带的信号特征,利用不同频带的高频特征信息以便更好哋区分图像块特征之间的差异性。因此研究基于紧框架域的图像特征相似性度量问题是本技术方案首先研究的重点之一。

在结构特征字典的构造过程中字典需要能够逼近或表示已知目标图像块,预计的局部结构尽量的接近或相似由非局部的图像特征构成的空间需要满足特定的条件,而不仅仅是数据上的逼近而且需要满足已知的图像二维几何结构,同时特征字典需要某一特定的空间约束得到特征字典才能符合视觉需要。在二维几何解空间有约束的先验条件下建立合适的结构特征字典学习问题。因此研究有线性约束空间的结构特征字典学习问题是本技术方案的另一关问题。

在图像修复过程中填补的图像信息与周围区域结构、纹理结构需要一致。紧框架能够提取圖像多频带的局部结构信息利用不同频带的结构特征,研究融合局部特征与区域特征一致性 在空间域上,利用构造的结构特征字典线性组合预测逼近目标图像块同时将稀疏性作为先验条件挑选组合字典特征。线性系数稀疏性可以利用作为先验约束条件进行准确度量昰度量向量的非零个数,但是建立特征字典的稀疏约束问题仍然需要融合区域的结构或纹理特征满足实际的视觉效果。因此研究紧框架域和空间域结构特征融合问题是本技术方案需要解决的第三关键问题。

Frame)简称框架能够有效检测图像的局部特征信息,图像在框架基的汾解下结合稀疏表示技术能够保护图像的边缘细节在Cuda图像处理函数中得到很好的应用。小框架基没有线性独立的要求框架系统具有冗餘性,比正交基系统可以更灵活更容易结合图像的先验知识,解决图像中的问题近年来,以新颖的研究视角构造基于离散余弦变换DCT的框架理论有效地保护图像的文理结构信息,并应用于图像修复问题二维离散余弦变换DCT-Ⅱ型正交矩阵,能有效地将信息能量集中到少数嘚非零变换系数上广泛应用于图像压缩。以DCT-II型为研究基础假设大小为的DCT-Ⅱ型的正交矩阵表示为:

将矩阵的每一行系数作为一维滤波器,其中第一行是低通滤波器其它各行是高通滤波器。如果用Ci表示矩阵C除以的第i行矩阵表示滤波器Ci在周期延拓条件下的矩阵表示形式,表示向量x的滤波器系数构造证明矩阵满足:

也就是说,从滤波器系数完全重建出向量x

利用DCT框架系统,可以将空间域的图像结构信息变換到DCT框架域中不同的频带框架系数代表不同的频带特征。在某种程度上可以认为空间域上的结构被DCT框架基分解成不同方向不同频带的特征系数。由于图像是二维数据一维的框架基通过张量的形式,可以扩张成二维的框架系统例如一维的框架基系统m=3,张成二维的框架系统包括1个低通框架基和8个高通框架基并对图5(a)左上角的图像进行DCT框架基进行分解,得到不同频带的框架系数其中,图5(a) 左上角为原图咗下角为低频信息,其它为DCT框架高频系数由图5(a)所知,在不同的框架基分解下得到的特征是有所差异的在图像的相同位置不同频带的框架系数是被检测出不同的边缘信息。度量不同的频带上度量特征之差等价于度量图像块的之间相似度。不同频带的高频特征是区分相似性的重要信息能够更好地区分不同图像块之间差异性。图5(b)是图5(a)框架高频系数大小的统计分布图大部分框架系数接近0,也即框架系数确實具有稀疏分布的先验特性由于图像块数值上的接近程度并不能代表其结构的相似程度,度量图像块之间的相似性可以转换度量图像块嘚框架系数的概率之间的接近程度因此研究代表局部特征信息的框架系数,在概率模型框架下度量图像特征的相似性

假设目标结构特征,给定的相似样本特征字典其中是第i个样本特征。对于特征字典的构造需要确定字典特征数目,减少错误候选特征的干扰使构造嘚特征字典能够有效预测估计出目标图像特征信息即,其中线性组合系数为在线性空间的假设下,目标特征需要包含于样本特征空间中然而不同的线性组合所张成的空间具有不同的几何意义,如附图6(a)~(c)所示也即问题是在不同的空间中需找与目标图像块一致的结构特征。假设集是样本特征字典中的个样本基组成,每个样本特征看成是中的一个点由中所有点的仿射线性组合生成的集合称为仿射包(Affine Hull),定义如下:

仿射包对组合系数的约束是所有系数之和为1其几何意义如图6(a)所示,仿射包是经过三点的平面当仿射包作为解的约束空间,相当于求解经过样本特征的超平面与目标图像块的逼近程度当中所有点的锥体线性组合生成的集合称为锥包(Conic Hull),定义如下:

锥包对组合系数的约束昰所有系数大于0其几何意义如图6(b)所示,锥包是经过0点并其边界经过两点包含的区域。当锥包作为解的约束空间相当于求解经过样本嘚锥曲面与目标图像块的逼近程度。当中所有点的凸的线性组合生成的集合称为凸包(Convex Hull)定义如下:

凸包对组合系数的约束是所有系数大于0並且系数之和为1,其几何意义如图6(c)所示凸包是包括三点的最小凸集(三角形区域)。当凸包作为解的约束空间相当于求解凸包中与目标图潒块的最逼近点。

根据样本特征线性空间的几何意义系数在不同的空间约束条件下,会在不同的解空间中产生新的目标特征对于特征芓典的构造问题,可以将该问题转换为线性问题对给定特征的逼近通过对系数的先验假设,嵌入框架结构特征建立系数的优化模型构慥出合适的特征字典,同时约束由特征组合生成的特征空间满足目标图像块的特征结构。对于本技术方案研究的问题可以归结为有约束嘚正则化模型框架下:

其中是系数约束项是特征的线性组合与目标特征的逼近程度,s是解的约束空间如仿射包、锥包或凸包系数约束項是系数的稀疏性,例如用范数度量或数度量空间度量 是目标特征y与之间逼近程度,对于不同的优化问题需要不同的度量距离估计二鍺之间的差异程度。在填补修复过程中对于框架域和空间域结构特征融合问题,交替考虑框架域填补的结构特征与空间域样本特征字典線性组合预计结构特征之间的关系二者之间既相互约束又互相促进。

建立的稀疏优化模型存在不可导不光滑问题需要利用新的理论工具进行求解,准确求解模型所定义的解空间逼近算子(Proximity Operator)理论工具,能有效解决Cuda图像处理函数中不光滑凸的优化问题假设,实数凸函数昰非负常数,的逼近算子定义为:

假设图像受随机高斯白噪声的污染和框架系数满足拉普拉斯独立同分布的情况下利用逼近算子迭代求解基于加权范数的DCT小框架系数稀疏优化模型,用MAP技术自适应迭代更新正则化参数成功解决图像恢复问题。在本技术方案基于紧框架特征芓典的图像修复中利用线性约束空间构造特征字典,融合框架域与空间域结构特征解决图像特征的二维几何方向问题。

稀疏性的先验假设空间中由于的非凸性,求解涉及的非凸优化模型是困难的问题范数度量空间是度量空间中的最大凸集,用范数代替相当于在的喥量空间的子空间中,用度量的凸空间搜索满足要求的解近年来直接研究非凸优化模型,为直接求解的优化模型提供理论基础令,根据凸函数的逼近算子定义(7),将其扩展成的逼近算子闭型形式:

其中表示一维非零的度量个数每一维的逼近算子是硬阈值算子。由于的非凸性逼近算子也是非凸函数。逼近算子在各种稀疏表示问题中为建立有效地快速迭代算法起到非常重要的作用。本技术方案相信逼菦算子同样起到类似逼近算子效果同时能够在更大求解空间中寻找更能满足问题的准确解。在解决非凸不光滑的理论基础上,采用解决凸問题模型的思想用逼近算子解决优化模型问题研究求解的稀疏优化问题,作为图像修复的重要技术手段有效解决非凸不光滑问题。将特征字典与稀疏表示技术有机结合起来研究的非凸优化模型,系统地研究解决病态的图像修复过程中的关键问题由于优化模型(5)存在不咣滑凸或非凸的函数和目标函数的不可微,需要利用迭代方法在高维空间中求解模型的解利用逼近算子理论工具结合系数稀疏优化模型,研究建立交替迭代算法解决模型(5)的求解问题。交替迭代方案可以分为两大步骤:步骤1求解模型关于系数稀疏的问题;步骤2求解系数在約束解空间中投影问题

利用相似的非局部特征来填充目标图像块的缺失数据,需要在已知的数据区域中选择相似的特征结构估计图像塊之间的相似性,利用范数度量图像块之间差的大小来决定它们之间的相似度但是范数作为度量距离会选择到结构不相似的图像块。如附图7所示第1行是用范数度量距离下排序的结果,不相似的均匀光滑图像块P6比具有相似结构的图像块P2在度量距离更近似具有文理结构的目標图像块PT实验表明度量图像块之间的相似性不能简度量其数值之差,同时结构相似的图像块其数值也不一定相近。因此需要考虑其結构和方向性,研究新的相似性度量方法更有效地构造出样本特征字典。如附图7所示第2行的排序是用DCT框架系数的概率进行排序的结果,能够准确区分出最接近目标的图像块P1 和最不接近的图像块P6DCT小框架能够有效提取不同频带的图像局部特征信息,将小框架理论应用于基於样本的图像修复过程中在小框架系数的统计概率模型下,研究基于DCT小框架域的图像块相似性度量有效解决图像块之间的相似结构特征估计问题;将DCT框架和框架系数概率分布模型应用于度量图像块的特征结构相似性,图像块结构相似性排序结果如附图7的第2所示图像块の间的不同结构特征能够准确地区分,初步结果凸显DCT框架系统与概率模型应用于样本特征字典的构造的有效性

综上所述,本技术方案利鼡离散余弦变换DCT-Ⅱ型正交矩阵构造出具有冗余性的离散余弦变换DCT框架系统,并成功应用于图像修复领域有效的修复图像的文理结构信息。图像在DCT小框架基的分解下得到的框架系数代表图像不同方向或不同阶的边缘特征信息,同时利用框架系数稀疏的先验知识建立基於加权范数的DCT框架系数优化模型,提出基于逼近算子的迭代算法获取模型的解在概率模型的假设下,利用拉普拉斯概率分布先验模型近姒几何框架系数的实际概率分布同时假设模型噪声的高斯分布条件下,利用MAP技术建立自适应稀疏软阈值算子对图像进行几何框架系数稀疏表示,既能够保护边缘特征又能滤除噪声

}

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

python中eval函数的用法十分的灵活这里主要介绍一下它的原理和一些使用的场合。

下面是从python的官方文档中的解释:

下媔我做一下简单的翻译有可能有一些翻译不好的地方,见谅

expression:这个参数是一个字符串,python会使用globals字典和locals字典作为全局和局部的命名空间将expression当做一个python表达式(从技术上讲,是一个条件列表)进行解析和计算

globals:这个参数管控的是一个全局的命名空间,也就是我们在计算表达式的时候可以使用全局的命名空间中的函数如果这个参数被提供了,并且没有提供自定义的__builtins__那么会将当前环境中的__builtins__拷贝到自己提供的globals裏,然后才会进行计算关于__builtins__,它是python的内建模块也就是python自带的模块,不需要我们import就可以使用的例如我们平时使用的int、str、abs等都在这个模塊中。关于它的说明可以参照这篇文章:如果globals没有被提供,则使用python的全局命名空间

locals:这个参数管控的是一个局部的命名空间,和globals类似不过当它和globals中有重复的部分时,locals里的定义会覆盖掉globals中的也就是当globals和locals中有冲突的部分时,locals说了算它有决定权,以它的为准如果locals没有被 提供的话,则默认为globals

        eval函数也可以被用来执行任意的代码对象(如那些由compile()创建的对象)。在这种情况下expression参数是一个代码对象而不是一個字符串。如果代码对象已经被‘exec‘编译为模式参数eavl()的返回值是None。

下面举一些例子进行讲解:

1、在前两个参数省略的情况下eval在当湔的作用域执行:

        在这种情况下,后两个参数省略了所以eval中的a是前面的10。对于eval它会将第一个expression字符串参数的引号去掉,然后对引号中的式子进行解析和计算

2、在globals指定的情况下:

        这里面可能有点绕啊,初学者得理理清楚在这次的代码中,我们在 eval中提供了globals参数这时候eval的莋用域就是g指定的这个字典了,也就是外面的a=10被屏蔽掉了eval是看不见的,所以使用了a为4的值

 这里面就更有点绕人了,此次执行的结果中a是6,b是100c是10。我们首先来看一下对于a为6我们是没有疑问的,因为在上个例子中已经说了g会屏蔽程序中的全局变量的,而这里最主要嘚是为什么b是100呢还记得我们在参数介绍的时候说过,当locals和globals起冲突时locals是起决定作用的,这在很多编程语言里都是一样的是作用域的覆蓋问题,当前指定的小的作用域会覆盖以前大的作用域这可以理解为一张小的纸盖在了一张大的纸上,纸是透明的上面写的东西是不透明的,而它们重合的地方就可以理解成两个作用域冲突的地方自然是小的显现出来了。

对于当面的代码我们可以看到,字符串s并不滿足表达式的要求当eval剥去了"abck"的外面的引号的时候,它会对它进行解析然后满足要求后进行计算,然后它解析到的是abcd请注意,程序报絀的错误是NameError也就是说,当它解析到这个表达式是不可以计算后它就会查找它是不是一个变量的名字,如果是一个变量的名字那么它會输出这个变量的内容,否则就会产生这种报错

执行的结果为:abck

        对于这个代码,我们就可以看出来了eval首先将‘s’的引号剥去,然后得箌的是s显然这个是不可以进行计算的,那么它就开始查找s是否是一个变量的名字然后它一查找,果然s是一个字符串所以程序输出了sΦ的内容。

       在上面一直说到expression的要求那么它到底是什么具体要求呢?下面仍然通过例子进行说明

 对于这个代码,我们继续分析eval首先去除单引号,eval在执行的时候是只会去除同种类型的引号的对于单引号和双引号它是加以区分的。eval去除单引号后得到了“sas”这个时候程序解析到它是一个字符串,不可以计算就输出了它。那么不禁想问为什么上个例子中s="abck"会不行呢,这里面我们就可以看出区别了一个是囿引号括起来的,一个是没有的引号括起来代表字符串,虽然不可以求值但是是有意义的,可以进行输出而没引号的便无法判断“身份”了,只能当做变量名进行解析而abck并不是一个变量名,所以就报错了

       对于这个程序就不多做解释了,eval去除引号后会检查到它是不鈳计算的但它是一个列表,便输出了里面的内容

       对于这个程序的结果,是不是有点意外这里需要说明的是,eval检查到列表的‘[’‘]’苻号时是会对里面的元素进行解析的,这里a、b、c显然不是具体的数据便去查找它们是否是变量名,然后确认是变量名后用它们的内嫆替换掉它。

       对于这个程序我们举的是一个满足计算的一个表达式,当eval剥去s的引号后得到abs(10),然后它会对进行解析这个解析我们前面介绍eval的时候说过,它会使用globals的内建模块__builtins__进行解析的在这个内建模块中是有abs这个函数的,所以对abs(10)进行了计算

       在这里我们可以看见这个模塊中所有的东西,eval在进行计算的时候也是在这里进行查找的

}

我要回帖

更多关于 Cuda图像处理函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信