Computer Vision_33_SIFT:An efficient SIFT-based mode-seeking algorithm for sub-pixel registration of remotely sensed images——2015
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面。对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献。有一些刚刚出版的文章,个人非常喜欢,也列出来了。
33. SIFT
关于SIFT,实在不需要介绍太多,一万多次的引用已经说明问题了。SURF和PCA-SIFT也是属于这个系列。后面列出了几篇跟SIFT有关的问题。
[1999 ICCV] Object recognition from local scale-invariant features
[2000 IJCV] Evaluation of Interest Point Detectors
[2006 CVIU] Speeded-Up Robust Features (SURF)
[2004 CVPR] PCA-SIFT A More Distinctive Representation for Local Image Descriptors
[2004 IJCV] Distinctive Image Features from Scale-Invariant Keypoints
[2009 GRSL] Robust scale-invariant feature matching for remote sensing image registration
[2010 IJCV] Improving Bag-of-Features for Large Scale Image Search
[2011 PAMI] SIFTflow Dense Correspondence across Scenes and its Applications
[2014 CVPR] TILDE: A Temporally Invariant Learned DEtector
[2015 GRSL] An efficient SIFT-based mode-seeking algorithm for sub-pixel registration of remotely sensed images
[2015 TGRS] SAR-SIFT: A SIFT-LIKE ALGORITHM FOR SAR IMAGES
[2017 GRSL] Remote Sensing Image Registration With Modified SIFT and Enhanced Feature Matching
[2017 CVPR] GMS :Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence
翻译
一种基于SIFT的高效模式寻找算法,用于遥感图像的亚像素配准
作者:Benny Kupfer, Nathan S. Netanyahu
摘要
-基于缩放不变特征变换(SIFT)技术的几种图像配准方法最近在遥感文献中出现。所有这些方法都试图克服SIFT在多模式遥感影像中遇到的问题,即其特征对应的质量。在这篇论文中介绍的确定性方法利用了以下事实:每个SIFT特征都与尺度,方向和位置相关联以执行模式搜索(在变换空间中)以消除错误的对应关键点(即特征)并改善获得的总体匹配度。我们还针对各种测试案例进行了详尽的实证研究,这表明我们的方法非常准确且相当快速。该算法能够自动检测它是成功还是失败。
索引词-特征对应,图像配准(IR),寻求模式的尺度不变特征变换(SIFT),遥感图像。
Ⅰ 引言
多时相,多光谱和多传感器图像的IMAGE配准(IR)是各种遥感应用(例如变化检测,图像分割和分类,环境监测等)的基本组成部分。尽管多年来已经提出了许多方法对于遥感数据的IR,直到今天,这个问题仍然很棘手,并且它需要进行各种不断的创新,以期获得增强的性能,相对于准确性,运行时间等人在这篇论文中,我们提出了一个有效的IR基于尺度不变特征变换(SIFT)的方法[1]。通过基于图像梯度的描述符捕获的特征不变性使SIFT特征适用于在不同时间,不同光谱带或不同传感器获取的图像对的IR。实验证明了我们方法的这种能力。
该方法通过缩放比例,旋转差以及最终在所有相应SIFT关键点之间的水平和垂直移位的模式搜索,对外围特征对应关系进行可靠的筛选。这是通过使用与每个关键点关联的比例,方向和位置来完成的。我们的确定性模式寻找SIFT(MS-SIFT)算法非常简单,快速,似乎可以实现亚像素精度。
这篇论文的组织方式如下。在第二部分中,我们简要介绍了基于SIFT的相关方法。在第三节中,我们描述了我们的方法,在第四节中,我们介绍了扩展的实证研究的主要结果。第五节分析了失败的配准,第六节提供了可能的补救措施以提高性能。最后,第七节作总结。
Ⅱ 以前的工作
在以前的工作[2],[3]中,我们使用了类似边缘的小波特征,通过在变换空间中进行分层搜索来执行特征匹配。初始边界框用于减少在较高分辨率级别上所需的复杂搜索,并且选择部分Hausdorff距离作为相似性度量。我们的新方法旨在在很大程度上减轻上述搜索过程的需求。其他研究人员也大力借鉴了SIFT用于遥感数据的IR的概念。但是,由于将SIFT应用于多模式遥感影像时通常会导致不准确(如果不是不正确)的匹配,因此主要目的是首先获得一组可靠的相应关键点。
Li等人[4]建议完善SIFT关键点方向,并为每个关键点分配多个方向。他们根据到最近邻的欧几里得距离与第二近邻的欧几里得距离之比来执行离群滤波(如[1]中所建议),然后对所谓的联合距离(JD)进行类似的修剪。在所有方向差异之间进行迭代搜索,以找到最终关键点的最佳匹配(在JD方向上)。Teke等人[5]建议的方向受限的SIFT(OR-SIFT)。具有相反方向的方向合并在一起以补偿梯度方向的反转,并且匹配基于SIFT特征之间的最近邻(NN)距离,如果SIFT关键点的标度距离大于预缩放值,则错误匹配将被排除定义的阈值。Sedaghat等[6]提出了统一鲁棒SIFT(UR-SIFT)算法,其中提取的SIFT关键点在比例尺和图像空间中均匀分布。主曲率低的关键点被拒绝;通过检查参考图像和感测图像之间的全局转换模型中的每个对应关系,可以进一步拒绝。李等人[7]使用极坐标网格中SIFT关键点之间的旋转不变距离执行匹配。匹配通过RANSAC [8]完成,然后进行最终转换计算。 Hasan等人[9]提出了一个两步过程,该过程还根据第一和第二NN之间的距离比拒绝离群值。 RANSAC用于排除剩余的异常值,并根据所谓的主要和次要匹配特征点计算全局变换。最后,Hasan等人[10]提议在SIFT过程中进行大量修改,例如,保留每个SIFT关键点,限制梯度值以减少强边缘的影响,对SIFT描述符使用更大的窗口等。
Ⅲ 建议的方法
即使对于标准图像尺寸,上述方法通常在参考图像和感测图像中都需要数千个SIFT关键点。此外,他们中的一些需要穷举搜索和匹配。配准运行时间很少报告,报告的时间从数十秒到数百秒不等(用于完整配准)。相比之下,我们的方法使用相对较高的阈值来针对每个图像最初仅检测(多达)数百个SIFT关键点。然后根据相应的SIFT描述符的NN匹配参考图像和感应图像的关键点。我们放弃了根据第一个和第二个NN之间的距离比来过滤异常值的传统方法[1]。这样做是因为,尽管此方法消除了许多离群值,但也消除了许多离群值。也没有使用RANSAC。尽管它可以产生更准确的初始转换,但其复杂度要高得多。
相反,本着类似霍夫式投票方案的精神,我们利用每个SIFT关键点的固有信息(即比例,方向和位置)来计算每个匹配项(即对应的关键点)的预期变换。我们假设SIFT特征(即缩放,旋转以及垂直和水平平移)自然暗示了一个相似转换模型;该模型广泛用于遥感数据的红外,因为卫星图像通常是最低点图像,两个轴上的比例相同,并且切变几乎没有意义。原则上,我们在4-D空间中执行模式搜索,这实际上是对四个组件分别进行的。随后对外围通信进行有效修剪,并对转换进行精确计算。
我们首先计算所有SIFT关键点匹配的缩放比例的直方图,然后找到其模式缩放smode。同样,我们为所有匹配计算方向差的直方图,并找到其模式旋转差Δθmode。我们的实验结果表明,对于多种多时相和多光谱图像,直方图模式是独特且明显的(比下一个峰至少高40%)。尽管每个SIFT匹配都有其自身的比例和方向差异,但我们使用从所有功能获得的模式,因为它们更加准确。此外,即使存在大量异常值,也可以估计分布的模式。因此,我们使用缩放比例和旋转差模式来执行水平和垂直平移的模式搜索,如下所示。令(x,y)和(x′,y′)分别表示参考图像中的SIFT关键点的坐标以及感测图像中其对应的关键点的坐标。每对对应的关键点定义以下水平和垂直移动:
现在,我们为所有对应的关键点计算两个附加的Δx和Δy直方图,为此我们分别找到了模式值Δxmode和Δymode。根据以下逻辑滤波器,使用获得的四元组<smode,Δθmode,Δxmode,Δymode>(作为变换近似值)消除外围关键点对:
其中,在(1)和(2)中给出了Δx和Δy,并且Δxthresh,Δythresh分别表示了水平和垂直差的阈值,以对应的直方图单元宽度(以像素为单位)表示。 (3)或(4)成立的所有对应对(x,y)⇔(x',y')将被视为异常值,因此被拒绝。尽管这可以过滤掉初始对应关系的80%-90%(对于我们实验过的数据集),但是对应关系的结果集非常可靠,因此可以在此阶段采用一步的普通最小二乘法。 (OLS)程序。概括地说,这是通过首先计算使(剩余)点集的形心对齐的变换,然后计算使它们的空间方差对齐的比例因子,最后计算使平方距离之和最小的旋转[3]来完成的。
IV 实验结果
我们使用单线程样式在C语言中实现了MS-SIFT程序,并在数十个遥感图像对上对其进行了测试[11]。在每种情况下,均使用RMSE准则通过手动地面真相(GT)评估了性能(以准确性为单位)。从参考图像和感应图像中手动选取N个对应点(xi,y i)⇔(xi',yi'),RMSE根据
其中(〜xi,〜yi)表示(xi',yi')的变换坐标。我们提出以下结果。图1(a)和(b)分别显示了1984年(波段5)和1986年(波段7)拍摄的两个600×600 Landsat图像。潜在的转换显然包括大量的平移以及可忽略的旋转和缩放.SIFT阈值分别为参考和感官二度提供了797和833关键点。图1(c)和(d)分别显示了比例比和旋转差直方图(箱宽为0.075和9°)。这些模式很容易位于smode = 0.975和Δθmode=1.33◦。 (确切的模式位置是通过适当的插值确定的。)图1(e)和(f)显示了水平位移和垂直位移的直方图,这些直方图由(1)和(2)计算,等分宽度为7.5像素。在Δxmode= 124.62和Δymode= 112.78处获得的模态很明显。
图1.(a)-(b)参考和感知的Landsat图像(来源:加利福尼亚大学圣巴巴拉分校图像处理和视觉研究实验室网站)。 (c)–(f)比例比,方向差异以及水平和垂直偏移的直方图。 (g)配准后的叠加图像。
使用异常过滤器(3)和(4),水平和垂直移动阈值的bin大小为82点(在797个对应中),即拒绝率为〜90%。最后,采用单步OLS产生底线变换<s,θ,tx,ty> = <0.99,0.28°,127.8,112.34>。在这种情况下,RMSE为0.75像素(手动选择十对)。图1(g)显示了两个图像的配准输出(在重叠区域中),它们叠加在同一坐标系上。在旧的PC(带有3 GB RAM和Vista OS的Intel Q8200)上,上述配准花费了2.61 s。请注意,在我们所有的实验中,上述直方图bin宽度都是固定的。
图2(a)和(b)分别描绘了Landsat / ETM +和IKONOS在近红外(NIR)波段获得的Konza站点上尺寸为344×336的图像对。 (这里利用小波分解将数据带到相似的空间分辨率,即,将IKONOS图像转换为32 m的空间分辨率,并应用三个分解级别。因此,给定图像的预期缩放比例约为1.07。 )在这种情况下,我们有209个初始SIFT对应关系。图2(c)和(d)分别描述了比例比和旋转差直方图。同样,图2(e)和(f)分别显示了水平和垂直移动的相应直方图。图2(g)示出了配准结果。获得的变换为<s,θ,tx,ty> = <1.061,-0.00◦,13.56,12.29>;这是根据45个Inlier计算的(初始对应数量的21%)。在这种情况下,RMSE为0.84像素,在我们标准PC上的运行时间为0.97 s。
图2.(a)-(b)Konza上的参考图像和感应图像(来源:MODIS验证核心站点)。 (c)–(f)比例比,方向差异以及水平和垂直偏移的直方图。 (g)配准后的叠加图像。
Ⅴ 故障分析
如前所述,我们已经在多种多样的多时间,多光谱和多传感器图像对上测试了我们的算法。我们在94个试验中观察到了76个成功的配准(根据1像素RMSE标准),即成功率超过80%。表一根据每个图像对类别总结了我们的结果(平均RMSE和运行时间仅适用于成功配准)。第2至4行展示了该算法在令人满意的程度上处理多波段和多传感器图像对的能力。
表I MS-SIFT配准性能摘要
如上所述,一旦算法完成运行,就根据GT点的选择来验证所获得转换的正确性。当然,设计一种替代的自动测量方法将很有意义,该方法将指示算法找到合适的转换是成功还是失败。为此,我们以下列方式利用了过滤器中产生的内线数。图3描绘了94个配准试验中每个试验产生的内含子数。注意四个和七个内线之间明显的差距。重要的观察结果是,所有(我们的)配准试验中的少于四个内线导致配准失败,而那些配准者具有六个或更多内线导致配准成功(根据RMSE标准);因此,我们可以利用生成的内部数量来获得所需的成功/失败指示。当然,可能需要对其他数据集进行不同的内部阈值数量的上述阈值调整。它代表了将成功配准分类为失败(较高的阈值),反之亦然(较低的阈值)的权衡。配准失败通常是由于图像之间的基数变化(例如,其中一张图像覆盖了相当大的区域的云)或由不同传感器在不同光谱带拍摄的图像中的反转强度造成的。我们通过手动挑选8–10个GT点对并在每种情况下使用标准OLS程序计算所得的转换,来评估失败的配准试验中SIFT关键点的质量。接下来,我们将此变换应用于感测图像中的每个SIFT关键点,并计算到参考图像中与其对应的NN SIFT关键点的欧几里得距离d。如果d <2像素,则对应声明为true,否则为false。我们观察到,在所有失败中,最多只有四个真实的对应关系(通常没有),而在成功配准中,至少有14个真实的对应关系。从理论上讲,两个真实的对应关系足以计算相似度转换的参数。但是,由于我们的算法本质上是统计性的(即使用量化的直方图),因此,与仅以确定性手动方式才能提取的最小数量的对应关系相比,它需要更大的样本量。
图3.最终的分布。
VI 增强功能
对于由反向强度引起的故障,可以采用各种图像处理增强技术来改善结果。考虑以下在Konza区域获得的数据来说明这一点。图4(a)和(b)分别显示(参考)NIR Landsat / ETM +图像和(感测)IR IKONOS图像。两个图像的尺寸均为344×336。由于光谱带的不同,参考图像中的暗区在感应到的图像中显得很亮,反之亦然(例如,参见“ +”形道路横穿图像和图片的左上角)。这样的强度变化可能使SIFT对应关系不可靠,因为对应关系计算依赖于梯度方向而不是仅梯度幅度。图4(c)-(f)显示了在这种情况下获得的SIFT特性的直方图。与图2的结果相反,这些直方图没有表现出明显的单一模式(比例比例直方图除外)。在这里,我们仅获得一个内部值,这当然导致配准失败。
图4.(a)-(b)Konza上的参考图像和感应图像(来源:MODIS验证核心站点)。 (c)–(f)比例比,方向差异以及水平和垂直偏移的直方图。
为了改善这些结果,我们首先根据操作者对两个图像进行了锐化,即
其中〜f(x,y)= f(x,y)是锐化图像,f(x,y)是输入图像,k∈(0,1],是离散图像拉普拉斯算子。然后我们反转参考图像的强度r(即T(r)= 1-r,假设r∈[0,1])。这两个步骤导致SIFT关键点对应更可靠。锐化在高斯差的检测阶段强制执行更主要的真实特征,并通过简单的变换来克服反向强度的问题,图5(a)和(b)显示了这些增强步骤之后的图像。显然,图像在视觉上更加相似,图5(c)-(f)显示了各种SIFT特征的直方图,与图4的直方图相比,这些直方图的模式是唯一的因此,由于17个真实的对应关系(在154个初始对应关系中),我们获得了成功的配准,RMSE值为0.76像素,图5(g)显示了配准结果。我们将上述增强功能应用于其他三个具有相同图像特征的失败配准(即Landsat NIR与IKONOS IR),并获得了相似的结果。当然,该方法可能不会“按原样”应用,并且可能需要先验知识(例如,有关采集传感器的信息)来调整其参数,但是合理地假设这样的信息应该可用。
图5.(a)–(b)增强后的Konza上的图像。 (c)–(f)其SIFT特征的直方图。 (g)配准结果。
为了进行比较,我们还实现了基于SIFT的RANSAC变体,在我们的数据集上对其进行了测试,并将其性能与我们的方法进行了比较。在测试的94个图像对中,由于RANSAC进行了NN修剪,因此仅成功配准了66对图像(而MS-SIFT则是76个)。在准确性方面,由于RANSAC和MS-SIFT,平均RMSE值分别为0.97和0.69像素。这主要是因为RANSAC不能始终正确地区分离群值和离群值,这会影响转换结果的准确性。最后,由于RANSAC和MS-SIFT,每个图像对的平均运行时间分别为1.44和0.92 s。这是由于RANSAC更加麻烦,并且需要更多的计算,尤其是对于一小部分内线而言。
Ⅶ 结论
我们在这里介绍了一种基于SIFT的简单形式,用于遥感图像的IR。我们的方法在4-D空间中执行模式搜索(假设相似度转换),然后有效修剪外围SIFT关键点对应关系。对多种多样的多时相,多光谱和多传感器图像进行扩展的经验研究表明,该方法具有良好的性能。提出的算法速度快,并且达到了亚像素精度。此外,我们提供了有关所获得配准正确性的自动指示器。最后,我们为处理失败的配准提供了预期的增强。作为未来工作的一部分,探索我们的MS-SIFT方法在更复杂的转换和其他描述符类型(例如SURF,GLOH等)中的适用性将是有趣的。
参考资料
[1] D.Lowe,“Distinctiveimagefeaturesfromscale-invariantkeypoints,” Int. J. Comput. Vis., vol. 60, no. 2, pp. 91–110, Nov. 2004.
[2] N. S. Netanyahu, J. Le Moigne, and J. G. Masek, “Georegistration of Landsat data via robust matching of multiresolution features,” IEEE Trans. Geosci. Remote Sens., vol. 42, no. 7, pp. 1586–1600, Jul. 2004.
[3] D. M. Mount, N. S. Netanyahu, and S. Ratanasanya, “New approaches to robust, point-based image registration,” in Image Registration for Remote Sensing, J. LeMoigne, N. S. Netanyahu, and R. D. Eastman, Eds. Cambridge, U.K.: Cambridge Univ. Press, Mar. 2011.
[4] Q. Li, G. Wang, J. Liu, and S. Chen, “Robust scale-invariant feature matching for remote sensing image registration,” IEEE Geosci. Remote Sens. Lett., vol. 6, no. 2, pp. 287–291, Apr. 2009.
[5] M.Teke,M.F.Vural,A.Temizel,andY.Yardımcı,“High-resolutionmultispectral satellite image matching using scale invariant feature transform and speeded up robust features,” J. Appl. Remote Sens., vol. 5, no. 1, pp. 053553-1–053553-9, Jan. 2011.
[6] A. Sedaghat, M. Mokhtarzade, and H. Ebadi, “Uniform robust scaleinvariant feature matching for optical remote sensing images,” IEEE Trans. Geosci. Remote Sens., vol. 49, no. 11, pp. 4516–4527, Nov. 2011.
[7] Q. Li, H. Zhang, and T. Wang, “Multispectral image matching using rotation-invariant distance,” IEEE Geosci. Remote Sens. Lett., vol. 8, no. 3, pp. 406–410, May 2011.
[8] M. Fischler and R. Bolles, “Random sample consensus: A paradigm for model fitting with applications to image analysis and automated cartography,” Commun. ACM, vol. 24, no. 6, pp. 381–395, Jun. 1981.
[9] M. Hasan, X. Jia, A. Robles-Kelly, J. Zhou, and M. R. Pickering, “Multispectralremotesensingimageregistrationviaspatialrelationshipanalysis on sift keypoints,” in Proc. IEEE Int. Geosci. Remote Sens. Symp., 2010, pp. 1011–1014.
[10] M. Hasan, M. R. Pickering, and X. Jia, “Modified SIFT for multi-modal remote sensing image registration,” in Proc. IEEE Int. Geosci. Remote Sens. Symp., 2012, pp. 2348–2351.
[11] B. Kupfer, “A SIFT-based image registration algorithm for remotely sensed data,” M.Sc. thesis, Bar-Ilan Univ., Ramat-Gan, Israel, 2013. [Online]. Available:www.cs.biu.ac.il/~nathan/registration/kupfer_thesis. pdf
Computer Vision_33_SIFT:An efficient SIFT-based mode-seeking algorithm for sub-pixel registration of remotely sensed images——2015的更多相关文章
- Computer Vision_33_SIFT:ORB_An efficient alternative to SIFT or SURF——2012
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Computer Vision_33_SIFT:An Improved RANSAC based on the Scale Variation Homogeneity——2016
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Computer Vision_33_SIFT:A novel coarse-to-fine scheme for automatic image registration based on SIFT and mutual information——2014
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Computer Vision_33_SIFT: A novel point-matching algorithm based on fast sample consensus for image registration——2015
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Computer Vision_33_SIFT:Fast Adaptive Bilateral Filtering——2018
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Computer Vision_33_SIFT:LIFT: Learned Invariant Feature Transform——2016
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Computer Vision_33_SIFT:Remote Sensing Image Registration With Modified SIFT and Enhanced Feature Matching——2017
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Computer Vision_33_SIFT:SAR-SIFT: A SIFT-LIKE ALGORITHM FOR SAR IMAGES——2015
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Computer Vision_33_SIFT:PCA-SIFT A More Distinctive Representation for Local Image Descriptors——2004
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
随机推荐
- Linux记录-shell自动化批量部署sql脚本并记录日志信息(转载)
#!/bin/bash #script_version=v110 db_host=127.0.0.1 db_port=3306 db_username=db_test_inst db_passwd=` ...
- intellij 插件的使用
目录 intellij 插件的使用 插件的设置 插件推荐 @(目录) intellij 插件的使用 插件的设置 在 IntelliJ IDEA 的安装讲解中我们其实已经知道,IntelliJ IDEA ...
- Python - Django - 在 CBV 中使用装饰器
urls.py: from django.conf.urls import url from app02 import views urlpatterns = [ # app02 url(r'^app ...
- 小程序报错 thirdScriptError
thirdScriptError sdk uncaught third Error Unexpected token export SyntaxError: Unexpected token expo ...
- Python3之内建模块hashlib
摘要算法简介 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串( ...
- Selenium WebDriver原理
WebDriver原理 WebDriver是按照Server-Client的经典设计模式设计的. Server端就是RemoteServer,可以是任意的浏览器,当我们的脚本启动浏览器后,该浏览器就是 ...
- Teaset-React Native UI 组件库
GitHub地址 https://github.com/rilyu/teaset/blob/master/docs/cn/README.md React Native UI 组件库, 超过 20 个纯 ...
- STL源码剖析——iterators与trait编程#1 尝试设计一个迭代器
STL的中心思想在于:将数据容器与算法分开,独立设计,再用一帖粘着剂将它们撮合在一起.而扮演粘着剂这个角色的就是迭代器.容器和算法泛型化,从技术角度来看并不困难,C++的模板类和模板函数可分别达成目标 ...
- Hello World详解
Hello World 题目 [题目描述] 输出“Hello World!”(不输出“”). [输入格式] 啥都没有. [输出格式] Hello World! [数据规模] 输出就行了,管那么多干什么 ...
- 剑指offer54:字符流中第一个不重复的字符
1 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中 ...