导航:首页 > 源码编译 > 用贴标签法写二值目标标记算法

用贴标签法写二值目标标记算法

发布时间:2023-03-23 09:13:36

① 贴片电阻阻值的有哪些标注方法

在电子设备中,贴片电阻主要用于稳定和调节电路中的电流和电压,其次还可作为消耗电能的负载、分流器、分压器、稳压电源中的取样电阻、晶体管电路中的偏执电阻等。它有以下四种限值的标注方法:

用于贴片电阻标注时,还常用背拿兄橘景颜色区别材料,用浅消团色(淡绿色、浅棕色)表示碳膜电阻,红色(或浅兰色)表示金属膜或氧化膜电阻,深绿色表示线绕电阻。

② 人工智能之模式识别|北京理工大学|Mooc|笔记|更新中

识别的基础是认知
认知Cognition:获取某种事物的特征——概念抽象
识别Re-cognition:根据特征决定某个具体的事物是不是某种事物——概念归类
模式:一类事物的共同特征
识别:对事物进行概念归类
模式识别:依据事物的特征进行概念归类

特征
相似性

特征空间
向量空间
集合空间

通过训练(学习)得到分类器模型参数

两种模式:有监督学习和无监督学习——从训练集中学习

对于每一个类别都给定一些样本——形成一个具有类别标签的训练样本集——分类器通过分析每一个样本去寻找属于同一类样本具有哪些共同特征——从训练集中学习到具体分类决策规则——有监督的学习

分类器通过有监督学习模式学习到的每个类别样本的特征就是关于某个类别概念的知识—— 学习过程就是认知过程

样本标签如何得到?——人来给定

有监督学习——从人的经验中学习分类知识——智能水平有上限

给定训练样本集但没有给每一个样本贴上类别标签——属于同一个类别的样本之间的相似程度会大于属于不同类别的样本之间的相似程度——根据相似程度的大小,按照一些规则把相似程度高的一些样本作为同一类——将训练样本集的一些样本划分成不同的类别——再从每一个类别的样本中去寻找共同特征,形成分类决策规则——无监督学习

无监督学习——自主地从数据所代表的自然规律中学习关于类别划分的知识——分类器能达到更高的分类水平——未来模式识别发展的主要方向

属于同一个类别的样本之间的相似程度会大于属于不同类别的样本之间的相似程度——不同类样本之间的相似度越小,分类决策规则的裕量也就越大

这样可以作为评判用于监督学习的带标签训练样本集以及作为无监督学习结果的样本集,它的优劣程度的一个指标,称为“紧致性”准则,即:紧致性好的样本集样本的类内相似度远大于类间相似度。

若要进行定量评判——确定如何度量相似性——可以设置多种指标——如:距离指标(最常用,距离可以定义在任意集合上,只要去计算满足三条标准:1.正定性:距离是个大于等于0的正实数,当且仅当自己和自己计算距离时才为0;2.对称性:样本之间的距离值计算与计算顺序无关;3.传递性:满足三角关系——两个样本之间的距离一定小于等于分别于第三个样本之间的距离之和。||在向量空间中可以定义欧氏距离、曼哈顿距离、切比雪夫距离等|| 非向量空间也可以定义距离,如:两个字符串之间的编辑距离也是一种合法的距离定义)非距离的相似度量标准(如:余弦相似度——使用向量空间中两个向量之间的夹角来表达相似程度:cosθ=x T y/||x||·||y|| ;皮尔逊相关系数Pxy=cov(x,y)/∆x∆y;Jaccard相似系数)

如果我们希望有紧致性好的样本集——那么就希望能有有效的信息能够将不同类的样本很好地区分开——增加特征的种类==增加特征的维度——特征的维度越多,用于识别的信息就越丰富,就有越多的细节信息可以将不同的样本之间的相似度降低,提高样本集的紧致性

不需要无限制地增加,只要不断地增加模式识别问题中地特征维数会产生维数灾难(cruse of dimensionality)——当一个问题描述地维度不断增加时会带来计算量剧增与解法性能下降等严重问题——模式识别中的维数灾难:随着特征维度的增加分类器的性能将在一段快速增加的区域后急速地下降并且最终无法使用

当特征空间以同样密度能够容纳的样本总数呈指数增长时,而如果给定样本集中的样本数量没有同步按照指数规律增加的话,那么问题越往高维度特征空间映射时样本集中的样本就越稀疏,从而使得样本集的紧致性越来越差,因此分类器的性能越来越差。

要解决维数灾难问题或者要同步地大量增加样本集样本的数量,难以实现,或者尽可能减少问题所使用的特征维度。

在降低维度的同时尽可能地提升每一个维度在分类中的效能,从而使模式识别问题在较低的维度下解决。

特征生成+特征降维 重点领域——其结果直接影响分类器性能的好坏

我们期望分类器能够从训练集样本中发现所要分类的各个类别的普遍特点即找到最优的分类器,使分类器在经过训练后不仅能将训练集中的样本正确分类,而且对于不在训练集中的新样本也能够正确地分类

因为有误差所以不能同时满足【正确分类样本集】和【正确分类未知新样本】

采集数据时由于数据采集方法的问题或者存在噪声干扰得到的样本特征会存在误差甚至会出现“异常数据”

如果我们要求分类器必须正确分类则会在分类规则上出现“失真”,从而在面对新的未知样本进行分类时出现错误(使分类器泛化能力降低)====称为分类器训练过程中的“过拟合”

“结构风险最小化准则”

分类决策规则是从自动计算中获取的而不是人工设定的

设计模式识别系统就是设计分类器的模型、所使用的的特征和分类器参数的调整算法

通过采集转换得到计算机能接受和处理的数据

模式采集:传感器、变送器、模数转换

得到的数据:待识别样本的原始信息(包含大量干扰和无用数据)

通过各种滤波降噪措施降低干扰的影响,增强有用的信息,在此基础上生成在分类上具有意义的各种特征

得到的特征:可以仍然用数值来表示,也可以用拓扑关系、逻辑结构等其他形式表示

经过一、二环节获得的模式特征维数都是很大的

主要方法:特征选择和特征提取

特征选择:从已有的特征中选择一些特征,抛弃其他特征

特征提取:是对原始的高维特征进行映射变换,生成一组维数更少的特征

分类器训练是由计算机根据样本的情况自动进行的,分类有监督学习和无监督学习

在分类器训练结束后,对待分类的样本按照已建立起来的分类决策规则进行分类的过程,在待分类的样本在进行分类决策之前,与训练样本一样要完成模式采集、预处理与特征生成、特征降维等环节的处理,还要持续不断地对分类决策的结果进行评估,已改进分类器的性能。

模式识别算法:统计模式识别(主流)、结构模式识别

统计模式识别:将样本转换成多维特征空间中的点,再根据样本的特征取值情况和样本集的特征值分布情况确定分类决策规则。

线性分类器:是最基本的统计分类器,它通过寻找线性分类决策边界来实现特征空间中的类别划分

贝叶斯分类器:它的决策规则是基于不同类样本在特征空间中的概率分布以逆概率推理的贝叶斯公式来得到类别划分的决策结果

最近邻分类器:把学习过程隐藏到了分类决策中,通过寻找训练集中与待分类样本最相似的子集来实现分类决策

神经网络分类器:来源于对生物神经网络系统的模拟,它的本质是高度非线性的统计分类器并且随着计算机技术的发展从浅层网络向深层网络不断演化

统计聚类分析:是无监督学习的典型代表

聚类分析:是无监督学习的典型代表,目前多采用统计学习的方法。

模糊模式识别:不是一独立的方法,而是将模糊数学引入模式识别技术后对现有算法的模糊化改造,它在更精确地描述问题和更有效地得出模式识别结果方面都有许多有价值的思路。

特征降维:也不是独立的模式识别算法,但是是完成模式识别任务的流程中不可缺少的一个步骤,特征降维通过寻找数量更少对分类更有效的特征来提升整个模式识别系统的性能。

结构模式识别:

结构聚类算法:将样本结构上某些特点作为类别和个体的特征通过结构上的相似性来完成分类任务。

句法模式识别:利用了形式语言理论中的语法规则,将样本的结构特征转化为句法类型的判定,从而实现模式识别的功能。

一个典型的基于视觉的模式识别工程问题

多分类问题

模板匹配基本原理:为每一个类别建立一个或多个标准的模板,分类决策时将待识别的样本与每个类别的模板进行比对,根据与模板的匹配程度将样本划分到最相似的类别中。

建立模板时依赖人的经验所以适应性差

“分类决策边界”

判别函数G(x)=0

如果判别函数是线性函数则称为线性判别函数

线性判别函数+对应的分类规则=线性分类器

如果特征空间是一维的,线性分类器的分类决策边界就是一个点

如果特征空间是二维的,线性分类器的分类决策边界是一条直线

如果特征空间是三维的,线性分类器的分类决策边界是一个平面

如果维度很高,从数学上可以得到分类决策边界是一个超平面

是不是任何一个模式识别问题都可以找到线性分类决策边界呢?

给定一个样本集,它是线性可分的吗?

涉及问题:样本集的线性可分性

如果一个样本集,它的各个类别样本的分布区域是相交的,那么肯定是线性不可分的;如果各个类别样本的分布区域是互不相交的,并且都是凸集,那么它一定是线性可分的;如果互不相交但有的是凹集,也不一定是线性可分的,需要找出凹集区域最小的凸集包络线称为凸包,如果凸包都不想交,那么样本集才是可分的,否则不可分。

线性可分性——异或问题

非线性分类问题转化为线性分类问题:

当我们将一个模式识别问题从低维特征空间映射到高维特征空间时,就将一个非线性分类问题转化为一个线性分类问题。======》这种方法被称为“广义线性化”

需要多个线性判别函数——用二分类问题的组合来确定多分类的分类决策规则

根据一定的逻辑关系构成多分类的线性分类器

绝对可分:对于样本集中的每一个类都有一个线性判别函数,可以把属于这一类和不属于这一类的样本分开。——带来的不可识别区域很多,整体分类器的性能不好。

两两可分:判别函数并不是用于判别属于某一个或者不属于某一个类的样本,而是在两个特定的类别中选边站。减少了不可识别区域,提升了线性分类器的性能。

如果有k个分类,两两可分的线性判别一共需要C2k个判别函数,绝对可分的线性判别需要k个判别函数

最大值可分:样本集中每一个类别对应有一个判别函数,而一个样本将被划分到取值最大的那个判别函数所对应的类别中。——不可识别区域消失,判别函数的数量也仅仅与样本集中的类别数量一样。

如何求最大值可分的判别函数?——工作量大

判别函数是样本到决策超平面距离远近的一种度量

样本x到决策边界的距离r正比于判别函数G(x)的值,判别函数的符号代表了距离r的符号,表示该模式位于决策边界的正侧还是负侧

权向量w仅代表决策超平面的法向方向,长度不会影响决策边界在特征空间中的位置,可以取w为1,此时判别函数的值就是样本到决策边界的距离。

线性分类器——由线性判别函数及相应道德分类决策规则构成的

线性判别函数如何得到?——如何设计线性分类器?——训练问题

线性分类器学习/训练的一般思路:

G ij (x)=w T x+w 0

w T 权向量

w 0 偏置量

解区域中寻找最优解

1.设定一个标量的准则函数J(w,w 0 ),使其值能够代表解的优劣程度,准则函数值越小,说明解越符合要求,越好。

2.通过寻找准则函数J(w,w 0 )的极小值,就能找到最优的一个解,是准则函数取得极小值的增广权向量w,这就是最优解。 (w,w 0 *

训练集数据的规范化

1.了解感知器模型

感知器(perception)模型是一种神经元模型

多路输入+单路输出

将所有输入信号加权求和后于一个阈值相比较,如果大于阈值,则神经元输出为1;小于等于阈值,则神经元输出为0

没有反馈与内部状态

只能依靠输入信号是否超过阈值来决定是否激活神经元的输出

如果把感知器的输入信号看作是一个待识别样本的特征向量,感知器的数学模型就构成了一个典型的线性分类器,可以做出非常明确的二分类决策

通过样本集使感知器能够学习到输入权重值和输出的阈值

感知器是一个通过输入加权和与阈值的比较来决定是否激活输出的神经元模型,这是一个线性分类器,输入的权构成了线性分类决策边界的权向量,激活输出的阈值 heta就是分类决策边界的偏置量w 0

求解目标:对所有样本,都有w T x > 0

感知器算法设定准则函数的依据:最终分类器要能正确分类所有的样本

所以J设定为所有错分样本的判别函数值之和

X 0 是所有错分样本的集合

只要存在错分样本,准则函数一定大于0,只有当所有样本正确分类了,准则函数值才能取得极小值0

梯度下降法

w(k+1)=w(k)-p(k+1)∆J(w(k))

对于线性可分的两类问题其分类决策边界为一n维特征空间中的超平面H

一般情况下会有无穷多个解,当我们确定一个解所对应的权向量w,超平面的斜率和朝向就是确定的了,可以在一定范围内平移超平面H,只要不达到或者越过两类中距离H最近的样本,分类决策边界都可以正确地实现线性分类,所以任何一个求解得到的权向量w都会带来一系列平行的分类决策边界,其可平移的范围具有一定的宽度,称为分类间隔(Marigin of Classification)。

当我们改变w,使分类决策边界的斜率和朝向随之变化时,我们得到的分类间隔是不同的。

分类间隔越大,两类样本做决策时的裕量也就越大

找到可以使分类间隔最大的最优权向量 w*——支持向量机的出发点

分类间隔是由距离分类决策边界最近的少量样本决定的,这些样本被称为“支持向量 support vector”_支撑起了线性分类器在最大分类间隔意义下的最优解

支持向量机的优化求解目标是求取能带来最大分类间隔的权向量w

分类间隔是支持向量到分类决策边界的2倍

Max d = max 2|G ij (x)|/||w|| 支持向量机采用令|G ij (x)|=1 =>min ||w|| 将求取最大的d的问题转化为求取权向量的长度最短的问题——为了方便进行二次优化——=>min 1/2 ||w|| 2

求取优化目标要求两类中的所有样本到分类决策边界的距离都应该比支持向量更大,其他样本的判别函数绝对值都需要大于1,即不等式约束条件为:图

支持向量机采用拉格朗日乘子法将其转化为无约束优化问题来求解,即通过将所有约束条件与拉格朗日乘子相乘后添加到优化目标中,在求取拉格朗日乘子最大值的条件下,求取最短的权向量w——凸规划问题——存在唯一解——其充要条件可以通过拉格朗日函数分别对权向量w和偏置值w0求偏导来得到,即满足这样的条件——得到权向量的表达公式

KKT条件

经验风险:训练之后的分类器的错误分类样本比例

经验风险最小化 R_emp==o

只有当训练集的样本数趋近于无穷,训练集中样本的分布趋近于样本的真实分布时,经验风险才会趋近于真实样本分类的风险

为了从根本上解决“过拟合”问题——提出“结构风险最小化SRM”min(R(w))

结构风险:在一个训练好的分类器面对未知样本时分类错误的概率

泛化误差界:R(w)<=Remp(w)+φ(h/l) 置信风险 l是训练集中的样本数,h为分类器形式的vc维,而φ置信风险的具体计算公式:图

如果分类器函数形式已经确定,则样本数越大,置信风险也就越小;如果训练集中的样本数量不够多,那么结构风险的大小就受置信风险大小的很大影响,而此时置信风险的大小取决于分类器函数形式本身具有的VC维,函数的VC维h越大,则置信风险也就越大,则相应的结构风险也就越大,分类器的泛化能力越差。

什么是VC维?一类函数所具有的分类能力

它的值是一类函数能打散两类样本集中最大样本数量

分类器函数形式的阶次越低,其VC维也就越小,在样本集数量有限的情况下,训练后的分类器结构风险就越小,泛化能力越强。

(支持向量机是阶次最低的线性函数)——是支持向量机在不需要大量训练样本的情况下也能取得泛化能力特别强的分类器训练结果的主要原因

所以支持向量机是应用结构风险最小化准则的一个结果

线性不可分问题:1.异常点干扰 2.非线性分类

线性支持向量机是把具有最大分类间隔的最优线性判别函数的求解转化为求解最短权向量的二次规划问题

异常点的判别函数值距离一定小于1

可以在约束条件中减去一项正数kesei,使判别函数的绝对值允许小于1,kesei就称为松弛变量

把kesei也作为优化目标,希望kesei越少越好,越小越好。

最理想的情况:绝大多数支持向量外侧的样本包括支持向量对应的松弛变量都该为0.只有少数支持向量内侧才有一个尽可能小的松弛变量。

因此,可以把所有松弛变量的和值也作为优化目标的一个分项,即在原来的最短权向量的二次优化目标基础上再加上一项C乘以所有松弛变量的和。C为惩罚因子,表示对分类器中存在异常点的容忍程度。C越小,松弛变量的存在对整体优化过程的影响越小,对异常点的容忍度越高。如果C取0,约束条件被破坏。

软间隔的支持向量机:使用松弛变量和惩罚因子的支持向量机

采用——广义线性化(把低维空间中的非线性问题往高维映射,从而转化为一个线性分类问题)

③ 0×02441a77指令引用的0×02441a77内存。该内存不能written

最近挺多网友出现这样的问题,建议了解一下是如何产生内存不能读,以后碰到类似的才不会困惑。一般如果是玩游戏出现有可能该游戏软件冲突,建议卸载重新安装。
如果你是打开IE出现的有可能是ie应用程序访问内存出错或者某些文件丢失造成的
1 、右击桌面上“我的电脑”→属性→高级→错误报告→错误汇报→勾选“禁用错误汇报”→“但在发生严重错误时通知我”复选框→确定。这样处理对于一些小错误,Windows XP就不会弹出错误提示了。
2、如果不行彻底关闭错误报告服务。开始→运行中输入→services.msc→打开“服务”窗口→找到“Error Reporting Service”→打开“Error Reporting Service的属性”对话框→将“启动类型”改为“已禁用”→确定后重新启动系统。(此项目关闭的注册表方式:开始→运行→输入regedit→确定→找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]中的Auto=0改成Auto=1)
、重要提示:不要只看这个错误提示的指令代码,而是要看:出这个提示框的上面蓝色条状部分提示的是XXX.EXE那个位置是什么程序,就大体定位引起出错或者冲突的主要原因了,对症下药就能解决。斗握简单有效的处理方法是看错误提示,哪一个软件引起的冲突就卸载那个软件,重新启动机器以后首先关闭杀毒软件,重此纤新运行安装。

如果不能解决最好是卸载重新更新ie浏览器, 平时注意定期清理系统垃圾,ie缓存。

关于内存不能READ的解决方案

运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。
“0x????????”指令引用的“0x????????”内存。该内存不能为“read”。
“0x????????”指令引用的“0x????????”内存,该内存不能为“written”。
一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。

故障分析

硬件方面:
一般来说,内存出现问题的可能性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个不同牌子不同容量的内存混插,也比较容易出现不兼容的情况,同时还要注意散热问题,特别是超频后。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。
假如是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,就要检查是不是内存出问题了或者和其它硬件不兼容。

软件方面:
先简单说说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在其一位置时,因为没有足够空间,就会发生溢出现象。举个例子:一个桶子只能将一斤的水,当放入两斤的水进入时,就会溢出来。而系统则是在屏幕上表现出来。这个问题,经常出现在windows2000和XP系统上,Windows 2000/XP对硬件的要求是很苛刻的,一旦遇到资源死锁、溢出或者类似Windows 98里的非法操作,系统为保持稳定,就会出现上述情况。另外也可能是硬件设备之间的兼容性不好造成的。

几个例子

例一:打开IE浏览器或者没过几分钟就会出现"0x70dcf39f"指令引用的"0x00000000"内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。
解决方法:修复或升级IE浏览器,同时打上补丁。看过其中一个修复方法是,Win2000自升级,也就是Win2000升级到Win2000,其实这种方法也就是把系统还原到系统初始的状态下。比如你的IE升级到了6.0,自升级后,会被IE5.0代替/运用腾讯浏览器/

例二:在windows xp下双击光盘里面的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存森销仿不能为“written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。
解决方法:这可能是系统的兼容性问题,winXP的系统,右键“AutoRun.exe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:\winnt\apppatch\slayerui.dll。右键,属性,也会出现兼容性的选项。

例三:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。
解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。

例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“Ox060692f6”(每次变化)指令引用的“Oxff000011”内存不能为“read”,终止程序请按确定。
解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。

例五:双击一个游戏的快捷方式,“Ox77f5cdO”指令引用“Oxffffffff”内存,该内存不能为“read” ,并且提示Client.dat程序错误。
解决方法:重装显卡的最新驱动程序,然后下载并且安装DirectX9.0。

例六:一个朋友发信息过来,我的电脑便出现了错误信息:“0*772b548f”指令引用的“0*00303033”内存,该内存不能为“written”,然后QQ自动下线,而再打开QQ,发现了他发过来的十几条的信息。
解决方法:这是对方利用QQ的BUG,发送特殊的代码,做QQ出错,只要打上补丁或升级到最新版本,就没事了。

例七:我的笔记本电脑用的XP系统,有时关闭网页时会弹出tbrowser.exe遇到问题需要关闭,然后有弹出0x03e7c738指令引用的0x03e7c738内存,该内存不能为read,请问是怎么回事?
解决方法:先查杀一下病毒,另外如果你安装了浏览增强之类的软件,请卸掉。

例八:从桌面或开始菜单中打开任何一个程序, 出现错误提示:"0x........"指令引用的"0x00000000"内存,该内存不能为"read"。省略号代表可变值。而从运行中打开程序没问题。
解决方法:运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks下,应该只有一个正常的键值"{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除(默认键值当然不要删除)。

例九:我三个月前配了台机子。系统比较不稳定,三个月内已经重装过多次系统,四五天前刚装过系统,可是经常随机地出现Explorer-应用程序错误,“0x4a01259d“指令引用的“0x00000000"内存。该内存不能为“read"。要终止程序,请单击“确定“。要调试程序,请单击“取消”。如果点确定,windows桌面就不见了。这种问题在之前的系统也出现过,不知道是不是硬件的问题?
解决方法:内存的兼容性问题!遇到这类问题,用户可以自行打开机器把内存的位置调动一下,看问题是否可以解决,如果问题依旧,可与你的朋友调换内存使用。

通过上面的几个例子,可以看到,出现故障的原因有好多种,下面列出已经提到和有可能发生的原因,方便查阅。

问题产生原因原因--解决方法

内存条坏了--更换内存条

双内存不兼容--使用同品牌的内存或只用一条内存

内存质量问题--更换内存条

散热问题--加强机箱内部的散热

内存和主板没插好或和其它硬件不兼容等--重插内存或换个插糟

硬盘有问题--更换硬盘

驱动问题--重装驱动。如果是新系统,要先安装主板驱动

软件损坏--重装软件

软件有BUG--打补丁或用最新的版本。

软件和系统不兼容--给软件打上补丁或者试试系统的兼容模式

软件和软件之间有冲突--如果最近安装了什么新软件,卸载了试试

软件要使用到其它相关的软件有问题--重装相关软件。比如播放某一格式的文件时出错,可能是这个文件的解码器有问题

病毒问题--杀毒

杀毒软件与系统或软件冲突--由于杀毒软件是进入底层监控系统的,可能与一些软件冲突,卸载了试试

系统本身有问题--有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序,像SP的补丁,最好要打上。如果还不行重装系统或更换其它版本的系统了。

===============================================
Windows系统出现内存错误

使用Windows操作系统的人有时会遇到这样的错误信息:“0X????????指令引用的0x00000000内存,该内存不能written”,然后应用程序被关闭。如果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的常见原因。

一、应用程序没有检查内存分配失败

程序需要一块内存用以保存数据时,就需要调用操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“指针”。

内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指针,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。

若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指针,继续在之后的运行中使用这块内存。真正的0地址内存区保存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即死机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的“写内存”错误,并指出被引用的内存地址为“0x00000000”。

内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统文件之后。

④ 中考速查标签怎么贴

用目录法或标签法。
1、目录法:先确定知识点,乱早灶再查目录,后确定页数。2、标签法:用便利贴逐章标记知识点,沿速查三边有序地贴在相应页码上,以便快速查到。
速查标签是将相关联的事件睁晌,用相同的颜色的自由贴标注哗扮,贴在书的门楣处。充分利用颜色的变化来分类标注,易于寻找。

⑤ 几种经典的二值化方法及其vb.net实现

图像二值化的目的是最大限度的将图象中感兴趣的部分保留下来,在很多情况下,也是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。这个看似简单的陪燃迅问题,在过去的四十年里受到国内外学者的广泛关注,产生了数以百计的阈值选取方法,但如同其他图像分割算法一样,没有一个现有方法对各种各样的图像都能得到令人满意的结果。
本文针对几种经典而常用的二值发放进行了简单的讨论并给出了其vb.net 实现。

1、P-Tile法

Doyle于1962年提出的P-Tile (即P分位数法)可以说是最古老的一种阈值选取方法。该方法根据先验概率来设定阈值,使得二值化后的目标或背景像素比例等于先验概率,该方法简单高效,但是对于先验概率难于估计的图像却无能为力。

2、OTSU 算法(大津法)

OSTU算法可以说是自适应计算单阈值(用来转换灰度图像为二值图像)的简单高效方法。1978 OTSU年提出的最大类间方差段瞎法以其计算简单、稳定有效,一直广为使用。


3、迭代法(最佳阀值法)

(1). 求出图象的最大灰度值和最小灰度值,分别记为Zl和Zk,令初始阈值为:

(2). 根据阈值TK将图象分割为前景和背景,分别求出两者的平均灰度值Z0和ZB:式中,Z(i,j)是图像上(i,j)点的象素值,N(i,j)是(i,j)点的权值,一般取1。


(3). 若TK=TK+1,则所得即为阈值,否则转2,迭代计算。

4、一维最大熵阈值法
它的思想是统计图像中每一个灰度级出现的概率 ,计算该灰度级的熵 ,假设以灰度级T分割图像,图像中低于芦此T灰度级的像素点构成目标物体(O),高于灰度级T的像素点构成背景(B),那么各个灰度级在本区的分布概率为:

O区: i=1,2……,t

B区: i=t+1,t+2……L-1

上式中的 ,这样对于数字图像中的目标和背景区域的熵分别为:

对图像中的每一个灰度级分别求取W=H0 +HB,选取使W最大的灰度级作为分割图像的阈值,这就是一维最大熵阈值图像分割法。

⑥ 我在做基于二值化理论的医学图像处理,请问图像二值化的理论和方法有哪些图像二值化的算法有哪些

二值化简介
方法:
1、全局二值化
2、局部自适应二值化

应用
一幅图像包括目标物体、背景还有噪声,要想从多值 二值化的数字图像中直接提取出目标物体,最常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群。这是研究灰度变换的最特殊的方法,称为图像的二值化(BINARIZATION)。 图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。

1、局二值化
一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直世晌接提取出目标物体,最常用的方法就是设定一个全局的阈值T,用T将图像的数据分顷返物成两部分:大于T的像素群和小于T的像素群。将大于T的像素群的像素值设定为白色(或者黑色),小于T的像素群的像素值设定为黑色(或者白色)。 全局二值化,在表现图像细节方面存在很大缺陷。为了弥补这个缺陷,出现了局部二值化方法。 局部二值化的方法就是按照一定的规则将整幅图像划分为N个窗口,对这N个窗口中的每一个窗口再按照一个统一的阈值T将该窗口内的像素划分为两部分,进行二值化处理。

2、部自适应二值化
局部二值化也有一个缺陷。这个缺陷存在于那个统一阈值的选定。这个阈值是没有经过合理的运算得来,一般是取该窗口的平局值。这就导致在每一个窗口内仍然出现的是全局二值化的缺陷。为了解决这个问题,就出现了局部自适应二值化方法。 局部自适应二值化,该方法就是在局部二值化的基础之上,将阈值的雀液设定更加合理化。该方法的阈值是通过对该窗口像素的平均值E,像素之间的差平方P,像素之间的均方根值Q等各种局部特征,设定一个参数方程进行阈值的计算,例如:T=a*E+b*P+c*Q,其中a,b,c是自由参数。这样得出来的二值化图像就更能表现出二值化图像中的细节。
编辑本段应用
二值化是图像处理的基本操作,任何图像处理基本离不开二值化的操作。其应用非常广泛。

(转载自网络--》二值化)

⑦ (急)高积分有关core 2 o E6300问题,回答后加上极限积分奖励以表感谢!

两个1.8的核心构成双核 但它是与PD不同的是 CPU内核不同 运算效率也不同
不能简单的靠主频来评论一个CPU的运算速度

虽然主频只有1。8实际CPU的乱兄效果要比以前的CPU要高出很多很多的

以下是网上搜集的资料

Core微架构的产品,频率最低从1.76GHz起跳,最高的X6800至尊版也只是2.93GHz,与上代Prescott核心的Pentium处理器相比已经大为下降。Core 2处理器中分成两种核心,其中低端的E6300和E6400基于Allendale核心,另外三个型号即E6600、E6700和X6800则基于Conroe核心,前者具有2MB二级缓存,而后者则具有4MB二级缓存,其他参数则是相同的。这次我们测试的是基于Allendale核心的E6300,具有2MB L2。

Core微架构的设计主要有以下改进的特点:

14级的指令执行流水线:

以往NetBurst架构的P4处理器为追求高频率而采用了更深的指令执行流水线设计,Williamette和NorthWood等拥有20级、Prescott核心则更达到31级,而AMD K8架构等拥有17级。更长的流水线会让频率得到更高的提升,但负面影响是一旦产生分支预测失败或缓冲区为命中的时间后将会浪费更多的时钟周期,虽然频率提升可以弥补这方面的缺陷,但是以现在所能达到的频率显然是不足以弥补这种性能损失。因此Core微架构设计了14级的指令执行流水线,更短的流水线也会让指令的处理速度更快,目前看来这是一种兼顾了效能和速度的解决方法。

宽区动态执行:

4组指令编码器和3个算术逻辑单元:Core微架构的设计为加强指令的处理能力,改进了编码器和算术逻辑单哗漏袭元。而在这当中也加入了一整套的创新功能。如宽动态执行(Wide Dynamic Execution)、宏融合(Macro Fusion)、微操作融合(Micro-op Fusion)等等。宽动态执行和微操作融合都是从前代架构继承过来然后加以改进优化的技术,至于宏融合是最新加入的,通过合并普通指令的方式减少指令的执行时间。以上3项技术都是Core微架构优化指令执行效率的设计精髓。

共享的智能缓存:

以往双核的无论是PD系列还是PXE都是独立的二级缓存,核心之间数据只能通过系统总线来交换,这无疑占用了总线带宽和带来延迟,不利于核心之间的密切合作。Conroe拥有和Yonah一样的共享二级缓存,通过内部的Shared Bus Router共用L2 Cache脱离了对系统总线的依赖。共享智能缓存的设计也使得功耗和性能之间达到很好的平衡。在不同强度的运算强度下,Core微架构可以关闭其中一个核心而另外一个核心全数使用4MB的二级缓存。而当不需要时也能够关闭部分的缓存单元以节约能源。

智能内存访问:

智能内存访问(Smart Memory Access)包括内存消歧(Memory Disambiguation)和增强的预取器(Advanced Prefetchers),内存消歧能使核心智能地预先判断内存中将要用到的数据从而缩短等待时间提高效率。经过内存消歧后,分别设置在L1 Cache和L2 Cache的预取器就会先将需要的数据载入到缓存中,这两个技术配合能够最大化的使用总线带宽,减少突发性的数据交换造成堵塞。

AMD K8架构加入了内存控制器,使得K8处理器的内存性能更强。Intel方面虽然有能力在核心加入内存控制器,但对于市场占有率巨大的集成主板和笔记本市场来说,把内存控制器集成到北桥芯片会更好发挥集成显卡等设备的性能,对将来内存升级也能更快跟进,而加入了智能内存访问技术后于集成内存控制器相比的性能差距也会大幅减少。

高级数字媒体增强:

高级数字媒体增强(Advanced Digital Media Boost)功能是Intel Core微架构里对SSE指令集的改进,使得Core微架构能处理128bit指令。相对传统只能处理64bit指令的处理器,Core微架构在处理128bit指令时只需单个的时钟周期,因此处理128bit指令时性能得到成倍提升。在处理SSE指令集的数据或是多媒体操作时,高级数字媒体增强技术将会更明显的提高效率搜唯。

⑧ Faster R-CNN:使用RPN实时目标检测

论文: Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

目标检测网络大多依靠 区域生成 (region proposal)算法来假设目标的位置。 R-CNN 是采用 Selective Search 算法来提取(propose)可能的 RoIs(regions of interest) 区域,然后对每个提取区域采用标准 CNN 进行分类。选择性搜索(Selective Search )方法就是在目标对象周围设定2000个形状大小位置不一的候选区域,目标物体在候选区域的可能性还是比较大的。然后对这些区域卷积,找到目标物体,虽然大多数区域都是无用的。与寻找几乎个区域比起来,这种方法要高效的多。

Fast R-CNN ,不在原始图像生成备选区域,而是先整张图片通过卷积网络得到特征图,然后在特征图上使用备选区域算法得到感兴趣的区域在特征图的映射,之后使用 Rol Pool将所有区域变成同样尺寸,大大减少了这些目标检测网络的运行时间,但是区域生成的计算成为整个检测网络的瓶颈。

Faster R-CNN 引入了一个 区域生成网络(Region Proposal Network,RPN) ,该网络与检测网络共享输入图像的卷积特征,从而使接近零时间成本的区域生成成为可能。 RPN是一个全卷积网络,可以同时在每个位置预测目标边界和目标分数。RPN经过端到端的训练,可以生成高质量的区域候选框,然后提供给Fast R-CNN用于检测。

Faster R-CNN 由两个模块组成:第一个模块是区域生成的深度全卷积网络,第二个模块是使用备选区域的Fast R-CNN检测器。整个系统是一个单个的,统一的目标检测网络。使用最近流行的“注意力”机制的神经网络术语,RPN模块告诉Fast R-CNN模块在哪里寻找目标。

针对一张图片,需要获得的输出有:

Faster R-CNN 第一步是采用基于分类任务(如ImageNet)的 CNN 模型作为特征提取器。输入图片表示为 H × W × D 的形式,经过预训练 CNN 模型的处理,得到卷积特征图(conv feature map)。

Faster R-CNN 最早是采用在 ImageNet 训练的 ZF 和 VGG ,其后出现了很多其它权重不同的网络.。如 MobileNet 是一种小型效率高的网络结构,仅有 3.3M 参数;而ResNet-152 的参数量达到了 60M;新网络结构,如 DenseNet 在提高了结果的同时,降低了参数数量。

以 VGG16 为例:

VGG16 图片分类时,输入为 224×224×3 的张量(即,一张 224×224 像素的 RGB 图片)。网络结构最后采用 FC 层(而不是 Conv 层)得到固定长度的向量,以进行图片分类.。对最后一个卷积层的输出拉伸为1维的向量,然后送入 FC 层。官方实现中是采用的卷积层 conv5/conv5_1 的输出。

在深度上,卷积特征图对图片的所有信息进行了编码,同时保持相对于原始图片所编码 “things” 的位置。例如,如果在图片的左上角存在一个红色正方形,而且卷积层有激活响应,那么该红色正方形的信息被卷积层编码后,仍在卷积特征图的左上角。因此利用特征图检测目标所在的位置是可行的。

ResNet 结构逐渐取代 VGG 作为基础网络,用于提取特征。ResNet 相对于 VGG 的明显优势是,网络更大,因此具有更强的学习能力.。这对于分类任务是重要的,在目标检测中也应该如此。另外,ResNet 采用残差连接(resial connection) 和 BN (batch normalization) 使得深度模型的训练比较容易。

然后,RPN(Region Propose Network) 对提取的卷积特征图进行处理,寻找可能包含 目标的 预定义数量的区域(regions,边界框) 。为了生成候选区域,在最后的共享卷积层输出的卷积特征图上做 3x3 卷积,卷积核共有512个(VGG),后面是ReLU,这样每个 3x3 区域会得到一个512维的特征向量。然后这个特征向量被输入到两个全连接层——一个边界框回归层(reg)和一个边界框分类层(cls)。

下面解释 k, 2k, 4k 的含义。

基于深度学习的目标检测中,可能最难的问题就是生成长度不定(variable-length)的边界框列表(bounding-boxes),边界框是具有不同尺寸(sizes)和长宽比(aspect ratios )的矩形。在构建深度神经网络时,最后的网络输出一般是固定尺寸的张量输出(采用RNN的除外)。例如,在图片分类中,网络输出是 (C, ) 的张量,C是类别标签数,张量的每个位置的标量值表示图片是类别的概率值。

在 RPN 中,通过采用 anchors(锚) 来解决边界框列表长度不定的问题,即在原始图像中统一放置固定大小的参考边界框。上面说到RPN对特征图做3x3的卷积,假设每一次卷积需要预测 k 个候选区域,因此,reg层具有 4k 个输出,编码 k 个边界框的坐标,cls层输出 2k 个分数,估计每个区域是目标或是背景的概率。这 k 个区域就是 被 k 个参考边界框初始化, k 个参考框就是 k 个锚点,作为第一次预测目标位置的参考 boxes。锚点的中心位于卷积核滑动窗口的中心。默认情况下每个滑动位置使用3个不同尺度(128 2 , 256 2 , 512 2 )3个不同长宽比(1:2, 1:1, 2:1)的锚点,k=9。对于大小为W×H(通常约为2400)的卷积特征图,总共有 W×H×k 个锚点。对于RPN的最后两个全连接层,参数的个数为 512×(4+2)×k.

不同于直接检测目标的位置,这里将问题转化为两部分。对每一个 anchor 而言:

有一种简单的方法来预测目标的边界框,即学习相对于参考边界框的偏移量。假设参考 box:( ),待预测量:( ),一般都是很小的值,以调整参考 box 更好的拟合所需要的。

虽然 anchors 是基于卷积特征图定义的,但最终的 anchos 是相对于原始图片的.

由于只有卷积层和 pooling 层,特征图的维度是与原始图片的尺寸成比例关系的. 即,数学地表述,如果图片尺寸 w×h,特征图的尺寸则是w/r×h/r. 其中,r 是下采样率(subsampling ratio). 如果在卷积特征图空间位置定义 anchor,则最终的图片会是由 r 像素划分的 anchors 集。在 VGG 中, r=16。

RPN 利用所有的参考边界框(anchors),输出一系列目标的良好的 proposals。针对每个 anchor,都有两个不同的输出:

RPN是全卷积网络。

对于分类层,每个 anchor 输出两个预测值:anchor 是背景(background,非object)的 score 和 anchor 是前景(foreground,object) 的 score.

对于回归层,也可以叫边界框调整层,每个 anchor 输出 4 个预测值:
(Δxcenter,Δycenter,Δwidth,Δheight),用于 anchors 来得到最终的 proposals。根据最终的 proposal 坐标和其对应的 objectness score,即可得到良好的 objects proposals.

RPN 有两种类型的预测值输出:二值分类和边界框回归调整。

为了训练RPN,我们为每个锚点分配一个二值类别标签(是目标或不是目标)。我们给两种锚点分配一个正标签:(i)具有与实际边界框的重叠最高交并比(IoU)的锚点,或者(ii)具有与实际边界框的重叠超过0.7 IoU的锚点。注意,单个真实边界框可以为多个锚点分配正标签。通常第二个条件足以确定正样本;但我们仍然采用第一个条件,因为在一些极少数情况下,第二个条件可能找不到正样本。对于所有的真实边界框,如果一个锚点的IoU比率低于0.3,我们给非正面的锚点分配一个负标签。既不正面也不负面的锚点不会有助于训练目标函数。

然后,随机采样 anchors 来生成batchsize=256 的 mini-batch,尽可能的保持 foreground 和 background anchors 的比例平衡。

RPN 对 mini-batch 内的所有 anchors 采用二分类交叉熵来计算分类 loss。然后,只对 mini-batch 内标记为 foreground 的 anchros 计算回归 loss。为了计算回归的目标targets,根据 foreground anchor 和其最接近的 groundtruth object,计算将 anchor 变换到 object groundtruth 的偏移值 Δ。

Faster R-CNN没有采用简单的 L1 或 L2 loss 用于回归误差,而是采用 Smooth L1 loss. Smooth L1 和 L1 基本相同,但是,当 L1 误差值非常小时,表示为一个确定值即认为是接近正确的,loss 就会以更快的速度消失.

由于 Anchors 一般是有重叠,因此,相同目标的候选区域也存在重叠。

为了解决重叠 proposals 问题,采用 NMS 算法处理,丢弃与一个 score 更高的 proposal 间 IoU 大于预设阈值的 proposals.

虽然 NMS 看起来比较简单,但 IoU 阈值的预设需要谨慎处理. 如果 IoU 值太小,可能丢失 objetcs 的一些 proposals;如果 IoU 值过大,可能会导致 objects 出现很多 proposals。IoU 典型值为 0.7。

NMS 处理后,根据 sore 对topN 个 proposals 排序. 在 Faster R-CNN 论文中 N=2000,其值也可以小一点,如 50,仍然能的高好的结果.

当获得了可能的相关目标和其在原始图像中的对应位置之后,问题就更加直接了,采用 CNN 提取的特征和包含相关目标的边界框,采用 RoI Pooling 处理,并提取相关目标的特征,得到一个新的向量。

RPN 处理后,可以得到一堆没有分类得分的目标 proposals。待处理问题为,如何利用这些边界框并分类。

一种最简单的方法是,对每个 porposal,裁剪,并送入pre-trained base 网络,提取特征;然后,将提取特征来训练分类器. 但这就需要对所有的 2000 个 proposals 进行计算,效率低,速度慢。Faster R-CNN通过重用卷积特征图来加快计算效率,即采用 RoI(region of interest) Pooling 对每个 proposal 提取固定尺寸的特征图。然后 R-CNN 对固定尺寸的特征图分类。

目标检测中,包括 Faster R-CNN,常用一种更简单的方法,即:采用每个 proposal 来对卷积特征图裁剪crop,然后利用插值算法(一般为双线性插值 bilinear)将每个 crop resize 到固定尺寸14×14×ConvDepth. 裁剪后,利用 2×2 kernel 的 Max Pooling 得到每个 proposal 的最终7×7×ConvDepth 特征图.

之所以选择该精确形状,与其在下面的模块(R-CNN)中的应用有关。

R-CNN利用RoI Pooling提取的特征进行分类,采用全连接层来输出每个可能的 目标类别的分类得分,是Faster R-CNN框架中的最后一个步骤。

R-CNN 有两个不同的输出:

R-CNN 对每个 proposal 的特征图,拉平后采用 ReLU 和两个大小为 4096 维的全连接层进行处理。然后,对每个不同目标采用两个不同的全连接层处理:一个全连接层有 N+1 个神经单元,其中 N 是类别 class 的总数,包括 background class;一个全连接层有 4N 个神经单元,是回归预测输出,得到 N 个可能的类别分别预测 Δcenterx,Δcentery,Δwidth,Δheight。

R-CNN 的目标基本上是与 RPN 目标的计算是一致的,但需要考虑不同的可能的 object 类别 classes.

根据 proposals 和 ground-truth boxes,计算其 IoU。与任何一个 ground-truth box 的 IoU 大于 0.5 的 proposals 被设为正确的 boxes。IoU 在 0.1 到 0.5 之间时设为 background。这里忽略没有任何交叉的 proposals。这是因为,在此阶段,假设已经获得良好的 proposals。当然,所有的这些超参数都是可以用于调整以更好的拟合 objects。

边界框回归的目标计算的是 proposal 与其对应的 ground-truth间的偏移量,只对基于 IoU 阈值设定类别后的 proposals 进行计算。随机采用一个平衡化的 mini-batch=64,其中,25% 的 foreground proposals(具有类别class) 和 75% 的background proposals.

类似于 RPNs 的 losses,对于选定的 proposals,分类 loss 采用 multiclass entropy loss;对于 25% 的 foreground proposals 采用 SmoothL1 loss 计算其与 groundtruth box 的匹配。

由于 R-CNN全连接网络对每个类别仅输出一个预测值,当计算边框回归loss 时需谨慎,只需考虑正确的类别。

类似于 RPN,R-CNN 最终输出一堆带有类别分类的objects,在返回结果前,再进一步进行处理。

为了调整边界框,需要考虑概率最大的类别的 proposals. 忽略概率最大值为 background class 的proposals.

当得到最终的 objects 时,并忽略被预测为 background 的结果,采用 class-based NMS. 主要是通过对 objects 根据类别class 分组,然后根据概率排序,并对每个独立的分组采用 NMS 处理,最后再放在一起.

最终得到的 objects 列表,仍可继续通过设定概率阈值的方式,来限制每个类的 objects 数量.

Faster R-CNN在论文中是采用分步方法,对每个模块分别训练再合并训练的权重. 自此,End-to-end 的联合训练被发现能够得到更好的结果.

当将完整的模型合并后,得到 4 个不同的 losses,2 个用于 RPN,2 个用于 R-CNN。4 种不同的 losses 以加权和的形式组织. 可以根据需要对分类 loss 和回归 loss 设置权重,或者对 R-CNN 和 RPNs 设置不同权重.

采用 SGD 训练,momentum=0.9. 学习率初始值为 0.001,50K 次迭代后衰减为 0.0001. 这是一组常用参数设置。

⑨ NI Vision:二值图像连通域标记算法

前面说到,要使用Labwindows + NI Vision(IMAQ Vision)这套商用开发框架来做数图课设。很明显,这套虚拟仪器开发平台由NI Instrument(美国国家仪器公司)开发的。大名鼎鼎的Labview软件就是这个公司开发的。相比较而言,Labwindows使用ANSI C开发,但应用场景是差不多的。

在做课程作业的时候,遇到了一个很有趣的应用。输入是米粒,比背景灰度要低,目的是输出米粒的颗数、面积、周长和孔数,这是工业上的一个很常见的应用。具体处理过程是二值化后使用低通滤波,并计算各种性质。

界面设计如下,可以看到米粒的详细情况。

让我感兴趣的,是通过怎样的算法能够得到米粒的数量?之前曾经用过OpenCV中找最大外界矩形这个函数,但没有具体了解算法实现。直觉告诉我原理应该是相似的。

可以看到,每一个米粒之间都是不连通的。这里就就提出了一个概念。 连通区域(Connected Component) 是指图像中相邻并有相同像素值的图像区域。 连通区域分析(Connected Component Analysis,Connected Component Labeling) 是指将图像中的各个连通区域找出并标记。

二值图像分析最重要的方法就是连通区域标记,它是所有二值图像分析的基础,它通过对二值图像中白色像素(目标)的标记,让每个单独的连通区域形成一个被标识的块,进一步的我们就可以获取这些块的轮廓、外接矩形、质心、不变矩等几何参数。如果要得到米粒的数量,那么通过连通区域分析(这里是二值图像的连通区域分析),就可以得到标记的数量,从而得到米粒的数量。

下面这幅图中,如果考虑4邻接,则有3个连通区域,8邻接则是2个。

从连通区域的定义可以知道,一个连通区域是由具有相同像素值的相邻像素组成像素集合,因此,我们就可以通过这两个条件在图像中寻找连通区域,对于找到的每个连通区域,我们赋予其一个唯一的 标识(Label) ,以区别其他连通区域。

连通区域分析的基本算法有两种:1)Two-Pass两便扫描法 2)Seed-Filling种子填充法 。

两遍扫描法(Two-Pass),正如其名,指的就是通过扫描两遍图像,就可以将图像中存在的所有连通区域找出并标记。

说了一堆数学语言,其实用图很好理解

种子填充方法来源于计算机图形学,常用于对某个图形进行填充。它基于区域生长算法。至于区域生长算法是什么,可以参照我的这篇 文章 。

同样的,上动图

NI Vision 中的算子定义如下

OpenCV中也有相应的算子

这里参照其他博客实现一下Two-Pass算法,Seed-Filling算法就偷懒不搞了。

Reference:
OpenCV实现图像连通组件标记与分析
OpenCV-二值图像连通域分析
数字图像处理技术 ——邓继忠(我的任课老师)

阅读全文

与用贴标签法写二值目标标记算法相关的资料

热点内容
机器软件用什么编程 浏览:841
java虚拟机指令 浏览:655
shell编程入门书籍 浏览:941
大连桶装水溯源码售价 浏览:302
php怎么跳转到电脑 浏览:414
如何在电脑上创建新网络连接服务器 浏览:61
c语言编译之后如何运行 浏览:568
mfc多线程编程视频 浏览:411
c编译的中文怎么写 浏览:91
单片机连接蜂鸣器电路 浏览:845
程序员买房前后对比照 浏览:988
cmdjava中文乱码 浏览:948
窗口app哪个好 浏览:732
xzforandroid 浏览:577
程序员那么可爱歌曲完整版 浏览:906
为什么购买pdf 浏览:45
操作系统代码编译 浏览:483
程序员东北大学 浏览:427
编译忽略空字符 浏览:119
多店铺阿里云服务器教程 浏览:379