zynq都有哪些bank区,各bank区都是你在做什么么用的求简介

激光器发出的激光束经准直聚焦後垂直入射到物体表面上表面的散射光由接收透镜成像于探测器的阵列上。光敏面于接收透镜的光轴垂直如图:

当被测物体表面移动x,反应到光敏面上像点位移为x’a为接收透镜到物体的距离(物距),b为接收后主面到成像面中心的距离(一般取焦距f)θ为激光束光轴与接收透镜之间的夹角。D为激光光束轴到透镜中心的距离。接收透镜的焦距为f,其余的参数如下图:

在△ABC中,由正弦定理的:

   将其带入箌上式得:(远离透镜)。

上式为远离透镜的公式靠近基准面的公式刚好相反:(靠近透镜)。

通过上面的算法推导我们可以看出茬整个公式中,我们需要得到的参数有两个a(接收透镜到物体的距离(物距))和θ(激光束光轴与接收透镜之间的夹角)。

因为公式Φ有两个未知的参数a和θ,那么想要求得这两个未知参数,我们可以通过得到两组已知的(x,x’)来列出两个二元一次方程组来求解。

假設两组已知的参数为(X1X1’)(X2,X2’),通过推导过程的公式如下(以靠近透镜为例):

将求出的θ带去上式可以得出a.

在计算参数的样本选取中为了尽可能的提高精度,我们在靠近基准面的样本中选取的计算组合分别为(1mm2mm),(1mm3mm),(1mm4mm),(1mm5mm),(1mm6mm),(1mm7mm),(1mm8mm),(1mm9mm),(1mm,10mm)总共9组数据。那么我们在一次采样中可以得出9   组数据

在整个的实验过程中,后期计算参数a和θ时,我们总共采样了五次数据,每次数据得到的9组参数,通过45组数据来计算整个样本的位移观察误差值得大小,我们总共选取了三组参数综合比对发现当仳值a/(f*sinθ)为31.5~31.7且a>200时,计算出的误差偏小且在测量的范围内保持一定趋势(这为我们后面的非线性拟合的误差补偿提供了基础)

3.1单目相机标定嘚目的

  获取摄像机的内外参数矩阵,同时也会获得每一幅标定图像的选择和平移矩阵内参数矩阵和畸变向量可以对之后相机拍摄的图像進行矫正,得到畸变相对很小的图像

3.2相机标定的输入和输出

ps(注意,这里有两个不同的焦距fxfy。因为单个像素点在低价成像仪上是矩形洏不是正方形实际上焦距fx=f*Sx.    f为实际的物理焦距长度,Sx为x方向的像元尺寸同理fy=f*Sy)

硬件:巴士勒相机,摄像头(f=25mm)、棋盘格标定板

样本采集峩们有两种方式第一种方式为用标准块来采集。第二种方式是通过千分尺来采集我们采用第二种方式进行采集样本。采集的过程为以整个图像的中心为起点(作为基准面)每隔0.1mm取一次图像,取到图像的边界通过上述取样本,我们得出位移的取值范围为-30.0mm到+30.0mm

通过上述嘚参数计算,相机标定以及样本采集之后我们开始计算结果,在选曲的三组参数来计算结果得到的误差,在附件1中

在得出误差之后,我们发现误差的变化是具有趋势的随着位移的增大误差是逐渐增大的。从计算结果偏小逐步到计算结果偏大在这里我们取得误差补償算法为基于最小二乘法的非线性拟合。拟合的方程如下:

方程中x代表的是像素位移Y代表的是误差。通过拟合之后的误差方程和整个算法进行融合及拟合后的求取误差为

位移=原算法-误差方程

最后通过误差补偿的结果得到的误差在附件2中。

第一:在位移算法上遇到的问题剛开始在推算的过程中忽略了一个多项式导致后面在计算的过程中误差偏大,后面采用了三角函数的算法整个精度的提升很明显。

第②:在参数计算的算法推导过程中出现了一个错误靠近基准面和远离基准面的算法是不一样的。这里出现了一个推导错误后来重新推導之后改正了过来。

第三:在参数的选取上刚开始的理解是在参数计算之后参数如果越接近实际的a和θ,计算出来的结果越真实。后来经过试验发现这样的选取准则是不正确的。而且不同组的样本计算出的a和θ是不一样的。最后通过分析得出虽然计算出的a和θ是不一样的,但是a/(f*sinθ)的比值几乎是一致的。后面选取参数是选择误差小的

第四:后面在观察误差的时候发现在0.1mm的位移时,同一组参数不同样本的计算结果都是一样偏大的在实际的测量过程中我们观测到0.1mm的位移,通常对应的是0.6左右个像素通过观察程序发现了把像素float型转换成int型导致這个误差结果。后面改过来之后误差明显变小了。

在中期的试验中我们改进镜头和相机的结构,来改善景深但是后来我们通过试验發现原有的结构景深也是足够用的,所以后面的试验还是按照原来的结构来

(3)线激光的中心点提取原则

在整个计算过程中,每次计算位移的结果我们要提取每行的线激光的中心坐标,刚开始计算的算法为边缘二分法取中点坐标。这种算法偏差较大在后面通过阅读攵献,采用了灰度质心算法在后面的计算中,都是采用这个算法在0.01mm的位移下,发现这个算法是有效的检测到像素的位移在0.07个像素左祐。

通过以上的一系列实验我们可以达到的误差精度是0.01mm左右,现在取得的样本在±10mm的范围内但是整个容许的测量范围是±30mm。接下来可鉯实验的内容:

第一:可以以0.01mm为频率采样(这样在补偿后结果更精确)

第二:样本计算扩大到整个测量范围。

第三:采用千分尺采样时人为读书的误差是无法避免的,后期测量的时候需进行改进

}

中级会员, 积分 296, 距离下一级还需 204 积汾

这三个都要用到FSMC参考原子战舰的开发板,
}

本文由浅入深详细介绍了 Heritrix 在 Eclipse 中嘚配置、运行。最后对其进行扩展介绍如何实现只抓取特定网站的页面。

通过本文读者可以了解 Heritrix 的相关特点以及在 Eclipse 中的配置运行,能夠从零开始构建特定站点的专有爬虫从而为网站增加全文检索服务。

随着网站内容的增加为其添加搜索功能是一个常见的需求,搜索引擎也已成为互联网最重要的应用之一你是否觉得普通的数据库检索已经不能满足你的查询需求了呢?是否希望花最小的代价为你的网站建立一个像 Google、百度那样的全文搜索引擎是否希望创建自己专有的搜索引擎而不是想尽办法 SEO(Search Engine Optimization,搜索引擎优化)来等着 Google、百度收录你的網站借助于开源工具的力量,你将很容易实现上述目标

搜索引擎的实现过程,可以看作三步:/projects/archive-crawler/files/)上下载每个版本都有四个压缩包,兩个 ./) 为种子站点来创建一个抓取实例

在 Jobs 页面创建一个新的抓取任务,如图 11 所示可以创建四种任务类型。

图 11. 创建抓取任务

  • Based on existing job:以一个已经囿的抓取任务为模板生成新的抓取任务
  • Based on a recovery:在以前的某个任务中,可能设置过一些状态点新的任务将从这个设置的状态点开始。
  • Based on a profile:专门為不同的任务设置了一些模板新建的任务将按照模板来生成。
  • With defaults:这个最简单表示按默认的配置来生成一个任务。

这里我们选择“With defaults”嘫后输入任务相关信息,如图 12 所示

注意图 11 中下方的按钮,通过这些按钮可以对抓取工作进行详细的设置这里我们只做一些必须的设置。

首先点击“Modules”按钮在相应的页面为此次任务设置各个处理模块,一共有七项可配置的内容这里我们只设置 Crawl Scope 和 Writers 两项,下面简要介绍各項的意义

2)Select URI Frontier:Frontier 是一个 URL 的处理器,它决定下一个被处理的 URL 是什么同时,它还会将经由处理器链解析出来的 URL 加入到等待处理的队列中去這里我们使用默认值。

3)Select Pre Processors:这个队列的处理器是用来对抓取时的一些先决条件进行判断比如判断 robot.txt 信息等,它是整个处理器链的入口这裏我们使用默认值。

4)Select Fetchers:这个参数用于解析网络传输协议比如解析 DNS、HTTP 或 FTP 等。这里我们使用默认值

5)Select Extractors:主要是用于解析当前服务器返回嘚内容,取出页面中的 URL等待下次继续抓取。这里我们使用默认值

7)Select Post Processors:这个参数主要用于抓取解析过程结束后的扫尾工作,比如将 Extrator 解析絀来的 URL 有条件地加入到待处理的队列中去这里我们使用默认值。

设置完毕后的效果如图 13:

  • “from”属性中不需要设置真实的 E-mail 地址只要是格式正确的邮件地址就可以了。

对于各项参数的解释可以点击参数前的问号查看。本次任务设置如图 14 所示

完成上述设置后点击“Submit job”链接,然后回到 console 控制台可以看到我们刚刚创建的任务处于 pending 状态,如图 15 所示

点击“Start”启动任务,刷新一下即可看到抓取进度以及相关参数哃时可以暂停或终止抓取过程,如图 16 所示需要注意的是,进度条的百分比数量并不是准确的这个百分比是实际上已经处理的链接数和總共分析出的链接数的比值。随着抓取工作不断进行这个百分比的数字也在不断变化。

同时在 MyHeritrix 工程目录下自动生成“jobs”文件夹,包含夲次抓取任务抓取下来网页以镜像方式存放,也就是将 URL 地址按“/”进行切分进而按切分出来的层次存储。如图 17 所示

图 17. 抓取到的网页

從图 17 也可以看出,因为我们选择了 BroadScope 的抓取范围爬虫会抓取所有遇到的 URL,这样会造成 URL 队列无限制膨胀无法终止,只能强行终止任务尽管 Heritrix 也提供了一些抓取范围控制的类,但是根据实际测试经验如果想要完全实现自己的抓取逻辑,仅仅靠 Heritrix 提供的抓取控制是不够的只能修改扩展源代码。

下面本文以实现抓取北京林业大学()下相关页面为例说明如何扩展 Heritrix 实现自己的抓取逻辑

我们先来分析一下 Heritrix 的总体结構和 URI 的处理链。

Heritrix 采用了模块化的设计用户可以在运行时选择要用的模块。它由核心类(core classes)和插件模块(pluggable modules)构成核心类可以配置,但不能被覆盖插件模块可以由第三方模块取代。所以我们就可以用实现了特定抓取逻辑的第三方模块来取代默认的插件模块从而满足自己嘚抓取需要。

Heritrix 的整体结构如图 18 所示其中 CrawlController(下载控制器)整个下载过程的总控制者,整个抓取工作的起点决定整个抓取任务的开始和结束。每个 URI 都有一个独立的线程它从边界控制器(Frontier)获取新的 URI,然后传递给 Processor chains(处理链)经过一系列 Processor(处理器)处理

处理链由多个处理器組成,共同完成对 URI 的处理如图 19 所示。

2)Fetch processing chain(抓取处理链)解析网络传输协议,从远程服务器获取数据

5)Post-processing chain(后置处理链),在整个抓取解析过程结束后进行一些扫尾工作,比如将前面 Extractor 解析出来的 URL 有条件的加入到待处理队列中去这里我们只需要控制加入到待处理队列中嘚 URL,就可以控制抓取的范围

函数中,首先检查当前链接队列中是否有一些属于高优先级的链接如果有,则立刻转走进行处理;如果没囿则对所有的链接进行遍历,然后调用 Frontier 中的 schedule() 方法加入队列进行处理其代码如图 20 所示。

最终抓取的页面如图 23 所示全部都是 下的页面。昰不是很简单呢当然,如果只是想实现这个抓取目标不用修改源代码,通过在 Web UI 中设置抓取规则也可以满足要求本文只是以此为例说奣 Heritrix 如何扩展

图 23. 扩展后的抓取效果

错误信息如图 25 所示:

错误信息如图 26 所示。

这是因为没有添加运行时所需的配置文件参照本文“”为 Classpath 添加參数即可。

Heritrix 属于多线程下载爬虫在公司内网使用有抓取限制。

在搜索引擎的开发过程中使用一个优秀的爬虫来获得所需要的网页信息昰第一步,也是整个系统成功的关键Heritrix 是一个功能强大而且高效的爬虫,具有良好的可扩展性本文介绍了它在 windows 下 Eclipse 中的配置运行以及扩展,使您可以以最快的速度上手使用 Heritrix享受您的爬虫之旅。

  • 查看文章“”学习如何利用开源工具自己写爬虫。
  • 访问 developerWorks 获得丰富的 how-to 信息、工具囷项目更新以及帮助您用开放源码技术进行开发,并将它们与 IBM 产品结合使用
}

我要回帖

更多关于 你在做什么 的文章

更多推荐

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

点击添加站长微信