为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

用VB编写图像处理程序算法的实现

2011-03-01 3页 pdf 173KB 72阅读

用户头像

is_882469

暂无简介

举报
用VB编写图像处理程序算法的实现 第24卷第9期 2007年9月 计算机应用与软件 Computer Applications and Software V01.24 No.9 Sep.2007 用 VB编写图像处理程序算法的实现 李俊荣 一,l一 (沧州职业技术学院 王振明 河北 沧州 061001) 摘 要 随着计算机和多媒体技术的发展,图像处理算法在编程 中的地位显得越来越重要,本文主要讨论 了利用 VB提供的取色 和画点两个关键方法,实现图像处理的几类常见方法。 关键字 VB 图像处理 三元色 THE I...
用VB编写图像处理程序算法的实现
第24卷第9期 2007年9月 计算机应用与软件 Computer Applications and Software V01.24 No.9 Sep.2007 用 VB编写图像处理程序算法的实现 李俊荣 一,l一 (沧州职业技术学院 王振明 河北 沧州 061001) 摘 要 随着计算机和多媒体技术的发展,图像处理算法在编程 中的地位显得越来越重要,本文主要讨论 了利用 VB提供的取色 和画点两个关键,实现图像处理的几类常见方法。 关键字 VB 图像处理 三元色 THE IMPLEM ENTATIoN oF THE ALGoRITHM oF IMAGE PROCESSING BASED ON VB Li Junrong Wang Zhenming (Cangzhou Vocational TechnologyInstitute,Cangzhou 061001,Hebei,China) Abstract Along with the technical development of the calculator and the multimedia,the picture processing calculate way is weaving the position in the distance to seem to be more and more important,this text mainly discussed to make use of VB to provide of take color and painting to order two key functions,carry out a few familiar methods of picture processing. Keywords VB Picture processing Tricolor 0 引 言 目前图像处理方面的软件很多,但有时候在编程时需要 把图像处理的功能嵌入到程序 中,这就需要 编程人员 自己编 写相关代码。在 VB的教学过程 中,也经常有学生 问到“怎样 把图像转换为灰度图像”,“怎样改变图像的透明度”等问题。 多数情况下是因为学生在报刊上看到有关的文章中介绍到实 现以上功能的方法 ,文章中介绍的方法一般是通过调用 AP1函 数或 VB外部控件来实现的,而这些 API函数或外部控件在我 们使用的VB6.0版本中一般都找不到,不能按文章中介绍的方 法实现类似功能。实际上使用 VB的基本绘图方法(主要是 Point 取色方法和Pset画点方法),再结合恰当的算法即可实现这些功 能,甚至编写出类似 PHOTOSHOP图像处理软件也是完全可以做 到的。下面就把几类常见的处理图像方法介绍如下,以起到抛砖 引玉的作用,有兴趣的读者可以和本文作者共同探讨。 1 创建程序界面并设置相关属性 在窗体上放置两个图片框,给图片框 1设置 Picture属性, 该图片即为要处理的图片,为了得到好的操作效果 ,本程序把处 理后的目标图片写(绘制)到 Picture2上 ,放置 9个命令按钮。 设置窗体和命令按钮的Caption属性,操作界面如图1,所有对 象的其它属性一律为缺省值。 图1 操作界面 2 算法原理和实现方法 为了获得较快的运行速度,在窗体装载时把窗体、Picturel 和Picture2的坐标度量单位改为实际像素(绘图模式 ScaleMode 属性值设置为3)。 Private Sub Form — Load() ScaleMode=3 Picture1.ScaleMode=3 Picture2.ScaleMode=3 End SUb 单击图片框2清除上次写上的 Private Sub Picture2 一 Click() Picture2.Cls End Sub 对图像处理的方法虽然很多,常见的可以分为下面几类 (1)图像的反转和90度倍数的旋转 包括水平反转、垂直反转、顺时针旋转 90度 、逆时针旋转 90度和旋转 180度的处理。 算法原理是按行和列依次读取原图像各点的颜色,变换位 置后用原色写回~IJ,W应的位置。 ① 单击按钮1时实现图像左旋90度代码如下: Private Sub Commandl — Click() 单击按钮 1时完成本操作 For i=0 To Picture1.SealeWidth For J=O To Pieture1.ScaleHeight 从左到右、从上到下依次读取原图像各点的颜色变换位置后 写 回到 Picture2 收稿H~:2006—04~11。李俊荣,讲师,主要从事计算机教学与软 件开发。 维普资讯 http://www.cqvip.com 2l6 计算机应用与软件 2007车 Picture2.PSet(j,Picture1.ScaleWidth—i),Picture1.Point(i,j) Nextj Next i End Sub ② 单击按钮2时实现图像右旋90度,用下面代码替代① 中的循环体部分即可。 Picture2.PSet(Picture1.ScaleHeight—j,i),Picture1.Point(i,j) ③ 单击按钮 3时实现图像旋转 180度 ,用下面代码替代① 中的循环体部分即可。 Picture2.PSet(Picture1.ScaleWidth—i,Picture1.ScaleHeight-j),Picture1. Point(i,j) ④单击按钮l时实现将图像水平反转代码如下: Private Sub Command6一Click() For i:0 To Picture1.ScaleWidth For j=0 To Picture1.ScaleHeight Picture2.PSet(Picture1.ScaleWidth—i,j),Picture1.Point(i,j) Nextj Nexti End Sub ⑤ 单击按钮5时垂直反转图像,用下面代码替代④中的循 环体部分即可 Picture2.PSet(i,Picture1.ScaleHeight—J),Picture1.Point(i,j) (2)图像的去色处理(将彩色图像转换为灰度图像) 依次读取图像上各点的颜色,把每点的颜色值分解为三元 色后,求其平均值,再以平均值分别作为红、绿蓝三元色的值写 回去。 原代码如下: Private Sub Command6 一 Click() For i=0 To Pieture1.ScaleWidtll For j=0 To Picture1.ScaleHeight col=Picture1.Point(i,j) 获得某点的颜色值 r=col Mod 256 提取红色值赋给变量 r g=co1\256 Mod 256 提取绿色值赋给变量 g b=co1\256\256 提取蓝色值赋给变量 b pj=(r+g+b)/3 求出红、绿、蓝三元色的平均值 Picture2.PSet(i,j),RGB(pj,pJ,pJ) 用平均值做为三元色写回位置 Nextj Nexti End Sub (3)图像的胶片效果处理(即反色处理,得到和原图像 的 胶卷相同的效果) 依次求出各点的三元色值后,分别用它们的最大值 255减 去原值,然后作为三元色写回去。 原代码如下: Private Sub Command7 一 Click() For i=0 To Picture1.ScaleWidth For._0 To Picture1.ScaleHeight col=Picture1.Point(i,j) r=col Mod 256 g=co1\256 Mod 256 b=co1\256\256 分别用三元的最大值 255减去三元色的原值写回 Picture2.PSet(i,j),RGB(255一r,255一g,255一b) Nextj Next i End Sub (4)图像的半透明处理 分别读取图像各点的颜色,和与其对应的放置图像的背景 的颜色,各自分解为三元色,让图像的颜色乘以不透明度,放置 图像的颜色乘以透明度(1.不透明度),然后将它们的值相加后 写回去即可,下面例子为对图像进行半透明处理的原代码。 原代码如上: Private Sub Command8 一 Click() For i=0 To Picture1.ScaleWidth For j=O To Picture1.ScaleHeight 获取原图像某点的颜色 coll:Picture1.Point(i,j) rl=coll Mod 256 gl:coll\256 Mod 256 bl=coll\256\256 获取绘制图像处的底色 col2:Picture2.Point(i,j) r2:col2 Mod 256 g2;col2\256 Mod 256 b2=col2\256\256 取其平均值写回 r:f r1+rE)/2 g=(gl+g2)/2 b=fb1+b2)/2 Picture2.PSet(i,j),RGB(r,g,b) Next J Nexti End Sub (5)马赛克效果的实现 将图像加工成马赛克效果是一种较常见的图像处理技术, 要将一幅图像加工成马赛克效果需要依次读取图像上各点 ,及 其该点周围的颜色(范围大小以马赛克大小而定,本文以边长 为5个点的小方块为例),将每点的色分解为三元色后求其平 均值,然后把该色写回到这一小正方形区域即可。 原代码如下: Private Sub Command9 一 Click() For i=2 To Picture1.ScaleWidth-2 Step 5 For j=2 To Picture1.ScaleHeight-2 Step 5 rl=0:gl=0:bl=0 For k=i一2 Toi+2 For1=j一2 Toj+2 col=Pieture1.Point(k,1) rl=rl+col Mod 256 gl=gl+col\256 Mod 256 b1=b1+col\256\256 Next1 Next k r=rl/25 g=gl/25 b=bl/25 For k=i一2 T0i+2 For1=j一2 Toj+2 Picture2.PSet(k,1),RGB(r,g,b) Next 1 Next k Nextj 维普资讯 http://www.cqvip.com 第9期 李俊荣等:用VB编写图像处理程序算法的实现 217 Nexti End Sub 3 结束语 本文介绍了用 VB实现图像处理的几类常见方法,由于篇 幅限制有些图像处理没有介绍到,如:模糊 、锐化、增减对 比度、 变亮、变暗、增减饮和度等,要实现对图像的这些处理,只要明白 这些概念的含义,用类似前面介绍的“取色 一写点”的方法是完 全可以实现的。只是处理速度明显的要比现有的图像处理软件 要慢。 参 考 文 献 [1]刘焕军,王耀南.用混合编程开发图像处理系统.电脑开发与应用, 2003,16(12):17. [2]孙其民,吴恩华.全局光照环境中的逆 向绘制.软件学报 ,14 (10):1796. (上接第82页) ⑨ User:代表应用程序的用户。通过它与门户网站的授 权/认证系统交互。 3.1.2 视 图 Flex能够为 Struts应用程序提供丰富的、可扩展的用户界 面。Flex采用 RemoteObject实现 Flex页面与 Java对象之间的 通信。在本文框架 中它反映为 Facade模式的应用,即 FlexFa- cade对象。 3.1.3 控 制器 将系统划分为若干个子系统有利于降低系统的复杂性。其 目标是使子系统间的通信和相互依赖关系达到最小。实现 途径之一是引入 Facade对象,为子系统中较一般的设施提供单 一 而简单的界面。报表发布框架在 Flex和 Java部分之间引入 了Facade设计模式,设计了 FlexFacade对象。FlexFacade对象 在报表发布框架中扮演了前端的 Flex用户界面和后端的 Java 程序,包括对表现层的适配器等Java对象和业务逻辑层本身的 EJB方法调用,以及它们之间通信的中间站。 尽管系统中所有从 Flex页面发出的 Java方法调用都会经 过 FlexFacade,但对于 EJB调用来说,由于 EJB和 Flex的开发是 同步进行的,所以如果直接调用 EJB方法,在框架开发初期是 无法进行调试的。为了进一步分离两个层次的开发,报表发布 框架中使用了proxy。每个 EJB都有一个对应的proxy类,用于 同表现层交互的接 口,在 proxy类 中包含 了与 EJB相同的方法 (命名和类型)。在框架开发初期 ,proxy中的方法调用将 会直接返回一些硬编码数据给 Flex页面以帮助用户界面的开 发能够顺利进行 ,同时也不影响后台 EJB的开发;当 EJB开发 结束,框架开发工作进入到集成阶段的时候,proxy中的方法调 用将会指向后台 EJB中对应的方法。 3.2 业务逻辑层 本 框架 实现 了 AppServiceEJB,ReportSe~iceEJB和 Tem- plateServiceEJB,分别负责处理框架中应用程序业务逻辑,报表 生成业务逻辑和动态报表模板业务逻辑。下面具体介绍: ① AppServiceEJB:负责框架对应用程序级别的操作。它提 供了接口得到框架内集成的应用程序信息;负责获取某个应用 程序所包含的ROX,并提供了接口与企业门户网站的授权和认 证模块交互,来实现应用程序在框架内部的安全保障。 ② ReportServiceEJB:负责框架向报表服务器作最终参数提 交,生成报表 的操作。它 只包含一个具体方法 generateReport (),将用户基于某个 ROX定义的参数以特定形式提交到报表 服务器并取得 ROI信息。 ③ TemplateServiceEJB:负责对 Template相关对象的操作, 如各种参数的集合。提供了保存 、装载、删除等对动态报表模板 的操作,将用户 自定义的参数信息以集合的形式保存到数据 库中。 Report Center在报表发布框架下的业务逻辑层部分主要包 括框架的 EJB部分,以及处在表现层与业务逻辑层之间的 Flex- Facade和直接调用 EJB的各种 proxy对象。 3.3 数据逻辑层 报表发布框架中数据库主要保存了用户自定义的动态报表 模板以及相关参数的信息。所有应用的数据都可以在数据库中 共存而不需要另外创建新的数据库实例。Report Center的动态 报表模板信息会直接保存到为报表发布框架创建的数据库表 中,不需要多余的配置信息。 4 结 论 框架规定了应用的体系结构,阐明了整个设计、协作构件之 间的依赖关系、责任分配和控制流程 ,表现为一组抽象类以及其 实例之间协作的方法,它为构件复用提供 了上下文关系。报表 发布框架采用了基于 MVC模式的 Flex/Struts集成和 EJB实现 J2EE的三层架构体系,运用了Facade设计模式。Report Center 是实际项 目案例 ,它验证了本文报表发布框架的可行性和优点。 例如,系统性能得到很大改善,某些典型的测试用例的响应时间 从 120秒降低为 20秒。据统计,通过应用本框架 ,我们项 目组 开发的报表发布平台整体效率提升20%,开发效率提升40%。 表 1就复用种类(是否允许修改可复用构件)、复用层和软件开 发效率等方面对应用报表发布框架的系统前后进行比较。 表 1 采用报表发布框架前后比较表 复用种类 复用层 软件开发效率 传统开 直接复用/ 非正式的代码复用 减少开发时 间带 发模式 修改复用 成品复用 来的效益一般 采用报 黑盒式代码复用 加速投产时间 表发布 直接复用/ 设计复用 降低成本 修改复用 交互操作性高复用 框架 提高软件质量 领域分析复用 鉴于以上分析比较,我们认为本文提出的金融系统的报表 发布框架可使软件结构清晰,缩短软件开发周期,提高软件的可 维护性和复用率。 参 考 文 献 [1]Components,Frameworks,Patterns,Johnson R E.ACM SIGSOFF Soft— ware Engineering Notes,1997,22(3). [2]Expe~one—on—one J2EE Design and Development Rod Johnson 2003. 『3]http://www.markme.com/cc/archives/004521.efm A closer look at 山e F1ex Program ming model 2004.3. [4]Flex应用程序性能:改善客户端应用程序和服务器性能的技巧与 技术 Maeromedia,Inc.2004,5. 维普资讯 http://www.cqvip.com
/
本文档为【用VB编写图像处理程序算法的实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索