膨胀运算在数字形态中的作用是把图像周围的背景点合并到物体中。如果两个物体之间距离比较近,那么膨胀运算可能会使这两个物体连接在一起。膨胀对填补图像分割后物体中的空洞很有用。dilation1(Region, StructElement:RegionDilation:Iterations:)功能: 使用用户自定义的结构元素对区域进行膨胀。结果元素是一个区域region,可由这些算子区域产生:gen_circle, gen_rectangle1, gen_rectangle2, gen_ellipse
一个字节表示一个像素是灰度图像,三个字节表示一个像素是RGB图像,一个字节8位位深度为8,三个字节位深度为24位。膨胀、腐蚀、开运算、闭运算针对二值图像(二值图像是指在图像中,灰度等级只有两种,也就是说,图像中的任何像素不是0就是1,再无其他过渡的灰度值),腐蚀是减少像素,膨胀是增加像素。开运算:先腐蚀后膨胀(也减少像素),可以将两个物体分开,可以消除离散点和"毛刺",。闭运算:是先膨胀后腐蚀(增加像素),用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面
基本手法如下:1、采集图像2、预处理3、分割4、识别显示1、采集图像read_image (Image, ‘D:/**‘)get_image_size (Image, Width, Height)dev_open_window(0, 0, Width, Height, ‘black’, WindowHandle)2、预处理decompose3 (Image, Red, Green, Blue)trans_from_rgb (Red, Green, Blue, Hue, Saturation, I
图像处理(image processing)用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。图像处理一般指数字图像处理。数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组,该数组的元素称为像素,其值称为灰度值。图像处理技术一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。Blob分析(Blob Analysis)在计算机视觉中的Blob是指图像中的具有相似颜色、纹理等特征所组成的一块连通区域。Blob分析(Blob Analysis)是对图像中相同像素的
这应该是每次我们打算使用模块化框架来创建新的解决方案或者将已有程序重构时首先面对的一个问题。这里我们不谈详细的需求与功能点的探讨过程,直接拿假设的功能点作为讨论基础。比如我们现在准备实现一个简单的B/S的留言板程序,它需要如下功能1) 留言信息展示2) 增加留言信息3) 管理员登陆4) 管理员回复、删除留言传统的三层架构划分大概是这个样子,一种典型的横向划分。你可以将他们放在一个解决方案里完成并发布现在我们来看看,如何将他们拆分成OSGi.NET所
所谓的多环境支持,官方是这么介绍的 1) 支持控制台应用程序。 2) 支持Windows窗体应用程序。 3) 支持WPF应用程序。 4) 支持Windows服务应用程序。 5) 支持ASP.NET应用程序。 6) 支持Windows Mobile应用程序。 7) 支持UIOSP平台嵌套。 这个理解起来不难,主要是因为OSGi.NET是基于.NET框架且与语言以及类型无关,也就是说.NET能支持什么环境,OSGi.NET也就能支持什么环境,他能适应各种.NET生产和装配环境。
“热插拔和动态支持”应该算是OSGi.NET最有趣,最Cool的一个功能,官方文档是这样介绍的 1) 热插拔:所有的模块都可以被动态的添加和卸载。 2) 生命周期:模块生命周期状态由“已安装、已解析、正在启动、已激活、正在停止、已停止、已卸载”组成,每一个生命周期状态下,模块提供的功能都可能不同。 3) 动态:当模块执行任何生命周期操作时,模块会动态的想外界暴露或者隐藏它提供的功能,比如动态提供服务、扩展或者其它功能。 4) 远程部署:支持模块远程部署,比如远程安装、启动、停止和卸载
通过上面的实例,我们可以具体体会到模块与模块之间的“动态信息注入”方式。这种方式的好处是 1) 首先,被注入方不需要知道将会被谁注入,保证了逻辑的单一性,易于横向扩展 2) 其次,注入的协议的可配置型,基于XML的描述,可实现很方便的修改和维护 3) 结合“接口加实现”的服务模式,可以快速整合各个模块的资源,实现了有效的“服务化” 上面的代码只是实现了注入,也就是当具体业务模块被运行环境加载后的被相应的处理模块识别并解析,但OSGi.NET也同时支持某个业务模块的动态抽离,在这里就是从
目前为止我们已经了解了模块化的隔离策略,面向服务的交互策略,现在就该来看看更高级的模块扩展策略,这里的“可扩展”在官方文档是这么介绍的 1) 扩展点:通过标准XML节点<ExtensionPoint>来定义一个模块向其它模块暴露的扩展点。暴露扩展点的模块会监听并处理其它模块对其的扩展。 2) 扩展:通过标准XML节点<Extension>来定义一个模块对暴露扩展点的模块的扩展。这个XML节点会通过扩展点变更事件传递到暴露扩展点的模块。 3) 动态扩展:模块在启动和
这次我们继续延续“模块化和插件化”那个实例来做展示。 现有的代码,主程序依赖接口和接口实现的Calculator.Demo1程序集,也就说主程序不仅得知道具体的接口定义,还得知道这个接口具体实现的定义。理论上说,这是面向对象,但也是紧耦合。如果你要替换成另外一个接口实现,你就得重新修改、编译、发布主程序。如何避免这种修改呢?可以通过服务总线来重构它、隔离它、松耦合它。 好在OSGi.NET的“服务总线”功能是以服务的形式发布的,有两种注册服务方式 1) 一个是在激活器当中,通过IBun