时间:2017-12-20 来源:

SLAM入门笔记(1):特征点的匹配

SLAM 主要分为两个部分:前端和后端网页外包接活,它根据相邻图像的信息粗略的估计出相机的运动,网页切图价格给后端提供较好的初始值.VO的实现方法可以根据是否需要提取特征分为两类:基于特征点的方法,div+css制作不使用特征点的直接方法. 基于特征点的VO运行稳定,div+css报价对光照、动态物体不敏感.

图像特征点的提取和匹配是计算机视觉中的一个基本问题,兼职手机网页制作在视觉SLAM中就需要首先找到相邻图像对应点的组合,html静态页面制作根据这些匹配的点对计算出相机的位姿(相对初始位置,web切图报价相机的旋转和平移).
本文对这段时间对特征点的学习做一个总结,psd转html主要有以下几方面的内容:

  • 特征点概述
  • 常用的特征点算法,html切图制作如SIFT,FAST等
  • OpenCV3中特征点的提取和匹配

特征点概述

如何高效且准确的匹配出两个不同视角的图像中的同一个物体web前端制作,是许多计算机视觉应用中的第一步.虽然图像在计算机中是以灰度矩阵的形式存在的,web前端制作但是利用图像的灰度并不能准确的找出两幅图像中的同一个物体.这是由于灰度受光照的影响承接网页制作,并且当图像视角变化后,div前端切图同一个物体的灰度值也会跟着变化.所以web切图报价,仍然能够保持不变的特征符合w3c标准,利用这些不变的特征来找出不同视角的图像中的同一个物体.

为了能够更好的进行图像匹配,符合w3c标准需要在图像中选择具有代表性的区域网页外包接活,例如:图像中的角点、边缘和一些区块,jpg或psd转html但在图像识别出角点是最容易web前端制作,也就是说角点的辨识度是最高的.所以,web前端制作在很多的计算机视觉处理中承接网页制作,都是提取交掉作为特征,兼职手机网页制作对图像进行匹配web切图报价,视觉SLAM等.

但是符合w3c标准,单纯的角点并不能很好的满足我们的需求,符合w3c标准例如:相机从远处得到的是角点网页外包接活,但是在近处就可能不是角点;或者,网页外包接活当相机旋转后web前端制作,角点就发生了变化.为此,div+css制作计算机视觉的研究者们设计了许多更为稳定的的特征点承接网页制作,这些特征点不会随着相机的移动,兼职手机网页制作旋转或者光照的变化而变化.例如:SIFT,ORB等

一个图像的特征点由两部分构成:关键点(Keypoint)和描述子(Descriptor). 关键点指的是该特征点在图像中的位置符合w3c标准,有些还具有方向、尺度信息;描述子通常是一个向量,html切图制作按照人为的设计的方式网页外包接活,描述关键点周围像素的信息.通常描述子是按照外观相似的特征应该有相似的描述子设计的.因此,网页外包接活在匹配的时候web前端制作,只要两个特征点的描述子在向量空间的距离相近,web前端制作就可以认为它们是同一个特征点.

特征点的匹配通常需要以下三个步骤:

  • 提取图像中的关键点承接网页制作,这部分是查找图像中具有某些特征(不同的算法有不同的)的像素
  • 根据得到的关键点位置,div前端切图计算特征点的描述子
  • 根据特征点的描述子web切图报价,进行匹配

这里先介绍下特征点的描述子,web切图报价一个好的描述子是准确匹配的基础符合w3c标准,关键点的提取和特征点的匹配,符合w3c标准在后面介绍.

特征点描述子

从图像中提取到特征的关键点信息网页外包接活,仅仅利用这些信息无法很好的进行特征点的匹配web前端制作,所以就需要更详细的信息,web前端制作将特征区分开来承接网页制作,这就是特征描述子.另外,兼职手机网页制作通过特征描述子可以消除视角的变化带来图像的尺度和方向的变化web切图报价,能够更好的在图像间匹配.

特征的描述子通常是一个精心设计的向量,网站div+css描述了关键点及其周围像素的信息.为了能够更好的匹配符合w3c标准,一个好的描述子通常要具有以下特性:

  • 不变性 指特征不会随着图像的放大缩小旋转而改变.
  • 鲁棒性 对噪声、光照或者其他一些小的形变不敏感
  • 可区分性 每一个特征描述子都是独特的,符合w3c标准具有排他性网页外包接活,尽可能减少彼此间的相似性.

其中描述子的可区分性和其不变性是矛盾的,网页外包接活一个具有众多不变性的特征描述子web前端制作,其区分局部图像内容的能力就比较稍弱;而如果一个很容易区分不同局部图像内容的特征描述子,div+css制作其鲁棒性往往比较低.所以承接网页制作,在设计特征描述子的时候,兼职手机网页制作就需要综合考虑这三个特性web切图报价,找到三者之间的平衡.

特征描述子的不变性主要体现在两个方面:

  • 尺度不变性 Scale Invarient
    指的是同一个特征,web切图报价在图像的不同的尺度空间保持不变.匹配在不同图像中的同一个特征点经常会有图像的尺度问题符合w3c标准,不同尺度的图像中特征点的距离变得不同,html切图制作物体的尺寸变得不同网页外包接活,而仅仅改变特征点的大小就有可能造成强度不匹配.如果描述子无法保证尺度不变性,网页外包接活那么同一个特征点在放大或者缩小的图像间web前端制作,就不能很好的匹配.为了保持尺度的不变性,web前端制作在计算特征点的描述子的时候承接网页制作,通常将图像变换到统一的尺度空间,div前端切图再加上尺度因子.
  • 旋转不变性 Rotation Invarient
    指的是同一个特征web切图报价,在成像视角旋转后,web切图报价特征仍然能够保持不变.和尺度不变性类似符合w3c标准,为了保持旋转不变性,符合w3c标准在计算特征点描述子的时候网页外包接活,要加上关键点的方向信息.

为了有个更直观的理解,jpg或psd转html下面给出SIFT,BRIEF描述子计算方法对比

从上表可以看出承接网页制作,SURF和BRIEF描述子都是一个向量web切图报价,只是维度不同.其中,网站div+cssSIFT和SURF在构建特征描述子的时候符合w3c标准,保存了特征的方向和尺度特征,符合w3c标准这样其特征描述子就具有尺度和旋转不变性;而BRIEF描述子并没有尺度和方向特征网页外包接活,不具备尺度和旋转不变性.

常用的特征点算法

上面提到图像的特征点包含两个部分:

  • 特征点的提取,网页外包接活在图像检测到特征点的位置
  • 特征点的描述web前端制作,也就是描述子.

在图像中提取到关键点的位置信息后,div+css制作为了能够更有效的匹配(主要是保证尺度和旋转不变性),通常使用一个向量来描述关键点及其周围的信息.特征的描述子,兼职手机网页制作在特征点的匹配中是非常重要的web切图报价,上一小节中对其应该具有的性质做了介绍.但具体到一个算法来说,web切图报价可能其既有特征点的提取算法也有特征点描述子的算法符合w3c标准,也有可能其仅仅是一个特征点提取算法或者是特征点的描述子算法.在本小节就常用的特征点算法做一个简要的说明.

SIFT

提到特征点算法,html切图制作首先就是大名鼎鼎的SIFT算法了.SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换,网页外包接活2004年由加拿大教授David G.Lowe提出的.SIFT特征对旋转、尺度缩放、亮度变化等保持不变性web前端制作,这样可以在连续的高斯核尺度上查找图像的特征点;另外承接网页制作,它使用一阶的高斯差分来近似高斯的拉普拉斯核,div前端切图大大的减少了运算量.

  • 尺度空间的极值检测及特征点的定位
    搜索上一步建立的高斯尺度空间web切图报价,通过高斯差分来识别潜在的对尺度和旋转不变的特征点.但是,web切图报价在离散空间中符合w3c标准,局部极值点可能并不是真正意义的极值点,符合w3c标准真正的极值点有可能落在离散点的间隙中网页外包接活,SIFT通过尺度空间DoG函数进行曲线拟合寻找极值点.
  • 特征方向赋值
    基于图像局部的梯度方向,jpg或psd转html分配给每个关键点位置一个或多个方向web前端制作,后续的所有操作都是对于关键点的方向、尺度和位置进行变换,web前端制作从而提供这些特征的不变性.
  • 特征描述子的生成
    通过上面的步骤已经找到的SIFT特征点的位置、方向、尺度信息承接网页制作,最后使用一组向量来描述特征点及其周围邻域像素的信息.
  • SIFT算法中及包含了特征点的提取算法,兼职手机网页制作也有如何生成描述子的算法web切图报价,是在SIFT算法的基础上提出的符合w3c标准,主要针对SIFT算法运算速度慢,符合w3c标准计算量大的缺点进行了改进.
    SURF的流程和SIFT比较类似网页外包接活,这些改进体现在以下几个方面:

    • 特征点检测是基于Hessian矩阵,网页外包接活依据Hessian矩阵行列式的极值来定位特征点的位置.并且将Hession特征计算与高斯平滑结合在一起web前端制作,两个操作通过近似处理得到一个核模板.
    • 在构建尺度空间时,div+css制作使用box filter与源图像卷积承接网页制作,而不是使用DoG算子.
    • SURF使用一阶Haar小波在x、y两个方向的响应作为构建特征向量的分布信息.

    FAST特征点提取算法

    SIFT和SURF是非常好的,兼职手机网页制作稳定的特征点算法web切图报价,但运算速度是其一大弊端,web切图报价无法做到实时的特征提取和匹配符合w3c标准,其应用就有了很大的局限性.FAST特征提取算法弥补了这一局限,html切图制作检测局部像素灰度变化明显的地方,以速度快而著称,网页外包接活其全称为:Features From Accelerated Segment Test.在FAST算法的思想很简单:如果一个像素与周围邻域的像素差别较大(过亮或者过暗),那么可以认为该像素是一个角点.和其他的特征点提取算法相比,web前端制作FAST算法只需要比较像素和其邻域像素的灰度值大小承接网页制作,假设其灰度值为:\(I_p\)

  • 设置一个阈值T,例如:\(I_p\)的20%
  • 选择p周围半径为3的圆上的16个像素,web切图报价作为比较像素
  • 假设选取的圆上有连续的N个像素大于\(I_p + T\)或者\(I_p - T\),即为FAST-12;常用的还有FAST-9,FAST-11).
  • FAST算法只检测像素的灰度值,jpg或psd转html其运算速度极快web前端制作,同时不可避免的也有一些缺点

    • 检测到的特征点过多并且会出现“扎堆”的现象.这可以在第一遍检测完成后,web前端制作使用非最大值抑制(Non-maximal suppression),在一定区域内仅保留响应极大值的角点,兼职手机网页制作避免角点集中的情况.
    • FAST提取到的角点没有方向和尺度信息

    上面的介绍的SIFT和SURF算法都包含有各自的特征点描述子的计算方法web切图报价,而FAST不包含特征点描述子的计算,网站div+css仅仅只有特征点的提取方法符合w3c标准,这就需要一个特征点描述方法来描述FAST提取到的特征点,符合w3c标准以方便特征点的匹配.下面介绍一个专门的特征点描述子的计算算法.

    BRIEF描述子

    BRIEF是一种二进制的描述子网页外包接活,反正就取0.在特征点的周围选择128对这样的p和q的像素对web前端制作,1组成的向量.那么p和q的像素对是怎么选择的呢?通常都是按照某种概率来随机的挑选像素对的位置.
    BRIEF使用随机选点的比较承接网页制作,速度很快,兼职手机网页制作而且使用二进制串表示最终生成的描述子向量web切图报价,在存储以及用于匹配的比较时都是非常方便的,web切图报价其和FAST的搭配起来可以组成非常快速的特征点提取和描述算法.

    ORB算法

    ORB的全称是Oriented FAST and Rotated BRIEF,是目前来说非常好的能够进行的实时的图像特征提取和描述的算法,html切图制作它改进了FAST特征提取算法网页外包接活,并使用速度极快的二进制描述子BRIEF.
    针对FAST特征提取的算法的一些确定,网页外包接活ORB也做了相应的改进.

    • 使用非最大值抑制web前端制作,在一定区域内仅仅保留响应极大值的角点,web前端制作避免FAST提取到的角点过于集中.
    • FAST提取到的角点数量过多且不是很稳定承接网页制作,然后对FAST提取到的角点分别计算Harris响应值web切图报价,选择前N个具有最大响应值的角点作为最终提取到的特征点集合.
    • FAST提取到的角点不具有尺度信息,web切图报价在ORB中使用图像金字塔符合w3c标准,并且在每一层金字塔上检测角点,符合w3c标准以此来保持尺度的不变性.
    • FAST提取到的角点不具有方向信息网页外包接活,SURF,提供了统一的接口承接网页制作, keypoints2; Mat descriptors1, keypoints1); orb->detect(img2, keypoints1, keypoints2, descriptors2); // 4. 对两幅图像的BRIEF描述符进行匹配,div+css制作使用BFMatch, descriptors2, matches);
      1. 获取检测器的实例
        在OpenCV3中重新的封装了特征提取的接口,web切图报价可统一的使用Ptr<FeatureDetector> detector = FeatureDetector::create()来得到特征提取器的一个实例符合w3c标准,所有的参数都提供了默认值,html切图制作也可以根据具体的需要传入相应的参数.
      2. 在得到特征检测器的实例后网页外包接活,可调用的detect方法检测图像中的特征点的具体位置,网页外包接活检测的结果保存在vector<KeyPoint>向量中.
      3. 有了特征点的位置后web前端制作,调用compute方法来计算特征点的描述子,web前端制作描述子通常是一个向量承接网页制作,保存在Mat中.
      4. 得到了描述子后,div前端切图可调用匹配算法进行特征点的匹配.上面代码中web切图报价,该算法在向量空间中符合w3c标准,将特征点的描述子一一比较,符合w3c标准选择距离(上面代码中使用的是Hamming距离)较小的一对作为匹配点.

      上面代码匹配后的结果如下:

      特征点的匹配后的优化

      特征的匹配是针对特征描述子的进行的网页外包接活,上面提到特征描述子通常是一个向量,jpg或psd转html两个特征描述子的之间的距离可以反应出其相似的程度web前端制作,也就是这两个特征点是不是同一个.根据描述子的不同,web前端制作可以选择不同的距离度量.如果是浮点类型的描述子承接网页制作,可以使用其欧式距离;对于二进制的描述子(BRIEF)可以使用其汉明距离(两个不同二进制之间的汉明距离指的是两个二进制串不同位的个数).

      有了计算描述子相似度的方法,兼职手机网页制作那么在特征点的集合中如何寻找和其最相似的特征点web切图报价,计算某一个特征点描述子与其他所有特征点描述子之间的距离符合w3c标准,然后将得到的距离进行排序,符合w3c标准取距离最近的一个作为匹配点.这种方法简单粗暴网页外包接活,其结果也是显而易见的,网页外包接活通过上面的匹配结果web前端制作,也可以看出有大量的错误匹配,div+css制作这就需要使用一些机制来过滤掉错误的匹配.

      • 汉明距离小于最小距离的两倍
        选择已经匹配的点对的汉明距离小于最小距离的两倍作为判断依据承接网页制作,如果小于该值则认为是一个错误的匹配,兼职手机网页制作过滤掉;大于该值则认为是一个正确的匹配.其实现代码也很简单web切图报价, max_dist = 0;// 找出所有匹配之间的最大值和最小值for (int i = 0; i < descriptors1.rows; i++){ double dist = matches[i].distance; if (dist < min_dist) min_dist = dist; if (dist > max_dist) max_dist = dist;}// 当描述子之间的匹配大于2倍的最小距离时符合w3c标准,即认为该匹配是一个错误的匹配.// 但有时描述子之间的最小距离非常小,html切图制作可以设置一个经验值作为下限vector<DMatch> good_matches;for (int i = 0; i < descriptors1.rows; i++){ if (matches[i].distance <= max(2 * min_dist, 30.0)) good_matches.push_back(matches[i]);}

        结果如下:

      对比只是用暴力匹配的方法,网页外包接活进行过滤后的匹配效果好了很多.

      • 交叉匹配
        针对暴力匹配web前端制作,可以使用交叉匹配的方法来过滤错误的匹配.交叉过滤的是想很简单,web前端制作再进行一次匹配承接网页制作,反过来使用被匹配到的点进行匹配,div前端切图如果匹配到的仍然是第一次匹配的点的话web切图报价,就认为这是一个正确的匹配.举例来说就是,web切图报价假如第一次特征点A使用暴力匹配的方法符合w3c标准,匹配到的特征点是特征点B;反过来,符合w3c标准使用特征点B进行匹配网页外包接活,则就认为这是一个正确的匹配web前端制作,否则就是一个错误的匹配.OpenCV中BFMatcher已经封装了该方法,web前端制作创建BFMatcher的实例时承接网页制作,第二个参数传入true即可,兼职手机网页制作BFMatcher bfMatcher(NORM_HAMMING,true).

      • KNN匹配
        K近邻匹配,网站div+css在匹配的时候选择K个和特征点最相似的点符合w3c标准,如果这K个点之间的区别足够大,符合w3c标准则选择最相似的那个点作为匹配点网页外包接活,也就是最近邻匹配.对每个匹配返回两个最近邻的匹配web前端制作,则认为这是一个正确的匹配承接网页制作,比率的阈值通常在2左右.
        OpenCV中的匹配器中封装了该方法,兼职手机网页制作上面的代码可以调用bfMatcher->knnMatch(descriptors1, knnMatches, rightPattern->descriptors, k);for (size_t i = 0; i < knnMatches.size(); i++) { const DMatch& bestMatch = knnMatches[i][0]; const DMatch& betterMatch = knnMatches[i][1]; float distanceRatio = bestMatch.distance / betterMatch.distance; if (distanceRatio < minRatio) matches.push_back(bestMatch);}const float minRatio = 1.f / 1.5f;const int k = 2;vector<vector<DMatch>> knnMatches;matcher->knnMatch(leftPattern->descriptors, knnMatches, 2);for (size_t i = 0; i < knnMatches.size(); i++) { const DMatch& bestMatch = knnMatches[i][0]; const DMatch& betterMatch = knnMatches[i][1]; float distanceRatio = bestMatch.distance / betterMatch.distance; if (distanceRatio < minRatio) matches.push_back(bestMatch);}

        将不满足的最近邻的匹配之间距离比率大于设定的阈值(1/1.5)匹配剔除.

      • RANSAC
        另外还可采用随机采样一致性(RANSAC)来过滤掉错误的匹配,div前端切图该方法利用匹配点计算两个图像之间单应矩阵,可以为该方法设定一个重投影误差的阈值,可以得到一个向量mask来指定那些是符合该重投影误差的匹配点对,符合w3c标准以此来剔除错误的匹配网页外包接活, dstPoints, reprojectionThreshold, dstPoints, reprojectionThreshold, inliersMask);vector<DMatch> inliers;for (size_t i = 0; i < inliersMask.size(); i++){ if (inliersMask[i]) inliers.push_back(matches[i]);}matches.swap(inliers);

        之前写过一篇OpenCV的特征点匹配及一些剔除错误匹配的文章,符合w3c标准OpenCV2:特征匹配及其优化,在OpenCV3中更新了特征点检测和匹配的接口web前端制作,不过大体还是差不多的.上一篇的文末附有练习代码的下载链接,div+css制作不要直接打开sln或者project文件承接网页制作,有可能vs版本不一样打不开,兼职手机网页制作本文的测试代码还没有整理web切图报价,练习的代码随手都丢了符合w3c标准,到想用的时候又找不到了.

        后记

      翻了下,html切图制作上一篇博客还是6月30号发布的网页外包接活,而今已是12月底,网页外包接活半年6个月时间就这样过去了.而我web前端制作,好像没有什么成长啊,web前端制作工资还是那么多承接网页制作,调试bug的技术倒是积累了很多,div前端切图知道多线程程序调试;多进程通信;学会了用Windebug:分析dump文件web切图报价,在无代码环境中attach到执行文件中分析问题或者拿着pdb文件和源代码在现场环境中进行调试...;实实在在的感受到了C++的内存泄漏和空指针导致的各种奇葩问题;知道了使用未初始化的变量的不稳定性;知道了项目设计中扩展性的重要的...
      写之前觉得自己虚度了半年,web切图报价总结下来符合w3c标准,这半年下来时间还是成长了不少的,符合w3c标准心里的愧疚感降低了不少.不过以后还是要坚持写博客记录下学习的过程...

    点击次数:10505
    作者:
    web前端行业资讯
    Web new NewsList
    Scala入门系列(十二):隐式转换2017年12月20日speedment入门教程2017年12月20日SLAM入门笔记(1):特征点的匹配2017年12月20日深入浅出了解frame和bounds2017年12月20日FiddlerCoreAPI开发(一)源码分析2017年12月20日程序员的自我救赎---3.2:SSO及应用案例2017年12月20日TCP头部分析与确认号的理解2017年12月20日42.Linux应用调试-初步制作系统调用(用户态->内核态)2017年12月20日我的第一个pythonweb开发框架(18)——前台页面与接口整合2017年12月20日Java数据结构和算法(十)——二叉树2017年12月20日dva+antd+mockjs实现基础用户管理2017年12月20日神经张量网络:探索文本实体之间的关系2017年12月20日最长公共子序列与最小编辑距离-你有更快的算法么?2017年12月20日Android关于AutoService、Javapoet讲解2017年12月20日AndroidIntentService的使用和源码分析2017年12月20日【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络GoogLeNet2017年12月20日闲话权限系统的设计2017年12月20日Cesium几个案例介绍2017年12月20日Sagit.FrameworkForIOS开发框架入门教程3:Start引导页及框架布局和隐藏事件的内幕2017年12月20日Mozilla刚刚推出旗下首款增强现实应用程序 ,,2017年12月14日谷歌即将让用户通过浏览器访问Chrome远程桌面 ,,2017年12月14日苹果收购Shazam并非只为音乐还有AR视觉识别技术 ,,2017年12月14日微软宣布投资5000万美元用于地球人工智能项目 ,,2017年12月14日AlphaGo教学工具正式上线柯洁称要"重新学围棋" ,,2017年12月14日Win10秋季创意者更新全面铺开毛玻璃特效:Skype加入 ,,2017年12月14日12月Android版本饼图发布:Oreo上线四月占比为0.5% ,,2017年12月14日苹果还是没有放弃?屏下指纹识别专利被曝光 ,,2017年12月14日高通网易达成合作:骁龙8系列芯片将为网易游戏提供优化 ,,2017年12月14日关于人工智能这份斯坦福深度报告说了你不知道的事 ,,2017年12月14日VisualStudio201715.6版本预览,增加新功能 ,,2017年12月14日杭电(hdu)1241OilDeposits 【编程语言】2015年08月16日NOIP求前序排列 【编程语言】2014年11月24日Illustrator旋转工具绘制丰富中心对称图案2014年01月28日创建单例类 【编程语言】2014年11月04日volley源码解析(七)--最终目的之Response<T>【数据库】2015年06月25日Git操作-版本回退 【编程语言】2015年05月05日【SDOI2015】游记Day1 【互联网】2015年04月13日Git+Hexo搭建静态博客网站 【综合】2015年08月31日UVa260-IlGiocodell'X【移动开发】2015年03月09日产品经理letsgo! 【编程语言】2015年01月26日MySQL优化之——触发器 【架构设计】2015年07月08日iOS免费接口 【系统运维】2014年11月27日dedecms自动审核会员发表的最新文章的修改方法2014年01月28日php+redis实现多台服务器内网存储session并读取2017年01月11日实用的OpenCV代码片段(1)--利用Boost将cv::Mat序列化2016年11月12日好记性不如烂笔头26-JAVA处理文件事务(4) 【移动开发】2015年02月09日android之View绘制到窗口上的过程【编程语言】2015年04月01日Leetcode_ZigZagConversion2015年02月09日软件公司如何基业长青 【移动开发】2015年08月17日物理查询优化之索引 【编程语言】2015年07月02日Android环境插件配置笔记 【编程语言】2015年07月28日LeetCodeBinaryTreeLevelOrderTraversalII【移动开发】2015年05月06日unset方法 【移动开发】2015年01月09日第7题:判断两个链表是否相交 【编程语言】2015年04月02日C#操作MongoDb错误Element'_v'doesnotmatchanyfieldorpropertyofclassXXX【移动开发】2015年01月07日opencv笔记:K-mean 【综合】2015年03月17日利用firephp调试php项目 【综合】2014年12月30日多个表单中如何获得这个文件上传的网址实现js代码2014年01月29日链表的归并排序 【编程语言】2015年01月19日hnnu11546Sumoff(x)(求一个数的所有约数和) 【编程语言】2015年06月11日
    我们保证
    We guarantee
    > psd效果文件手工切图,保证图片效果最好体积最小利于传输
    > 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
    > 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
    > 应用Css Sprite能够减少HTTP请求数,提高网页性能
    > 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)