数据库编程与图像处理(精选七篇)
数据库编程与图像处理 篇1
在数据库编程中,往往需要将相片等图像信息与文字信息同步显示,以便查阅,如图1所示。针对这一需求,采用Java作为编程语言,结合My SQL数据库编程实例,重点讨论如何实现图像信息与文字信息的同步显示。
2直接读取磁盘文件
2.1数据库设计
在My SQL中新建一数据库dbstdinfo,然后在数据库中新建一表stdinfo,结构如图2所示。
2.2图像显示方法
在stdinfo表中设计一字段:photoid,在其中填入相片编号,将相片的文件名更改为相片编号,这样,通过photoid字段,就可以建立stdinfo表中的记录与相片的一一对应关系了,如图3所示。
2.3核心代码
首先将面板设置为卡片布局:
将按钮添加至面板后,给按钮添加事件监听代码,实现相片与文字信息的同步查询:
2.4技术分析
本实例通过直接读取磁盘上的JPG文件,实现图像与文字信息的同步显示。这种设计的优点是占用数据库资源较少,缺点是图像文件容易被查看、删除或修改,图像文件不宜过多,否则容易造成混乱。
3利用Blob字段存取图像
3.1数据库设计
在dbstdinfo数据库中新建一表:phototable,结构如图4所示:
3.2图像信息的储存
My SQL中的Blob字段(binary large object)是用来存储二进制大对象的字段类型。Blob往往是一个大文件,典型的Blob是一张图片、一个声音或一个视频文件。Blob共包括4种Blob类型:Tiny Blob、Blob、Medium Blob、Long Blob,这几个类型之间的唯一区别是存储文件的最大尺寸不同。
本实例首先将图像文件的文件名更改为学生的身份证号,然后存入phototable表中,如图5所示,其中,studentid字段储存了文件名(不含文件扩展名),photo字段储存了对应的图像信息。本实例单独设计了如图6所示的界面来管理phototable表。
3.3核心代码
3.3.1图像信息的储存
3.3.2图像信息的显示
3.4技术分析
本实例通过My SQL中的Blob字段存取图像信息,可预先将图像信息存入Blob字段,需要时从该字段中读出。图像信息与文字信息的同步采用了跨表查询技术。利用Blob字段存取图像的优点是图像内容不易被查看、删除或修改,保密性强,缺点是占用数据库资源相对较多。
4结语
图像信息的存储可以以单个文件的形式存储到磁盘上面,也可以存入数据库的Blob字段中。文中的两个实例分别呈现了显示图像的两种方法:(1)直接读取磁盘文件,通过数据库中的字段信息实现图像文件与记录信息的一一对应,从而实现数据库记录与图像信息的同步显示;(2)利用My SQL数据库中的Blob字段存取图像,同步显示的图像信息直接从Blob字段中读出。
摘要:在数据库编程中,经常需要图像与文字信息的同步显示。讨论了从磁盘文件中读取图像信息,以及将图像信息存入MySQL数据库的Blob段中,然后从中读取。同时,编写了一个应用程序,实现图像与文字信息的同步显示,该程序使用Java作为编程语言。
关键词:MySQL数据库,Blob字段
参考文献
[1]张振坤,李钟尉,陈丹丹.视频学Java.北京:人民邮电出版社,2010.
[2]eric_gcm.Java Mysql存取Blob数据.网址:http://eric-gcm.iteye.com/blog/937860,2011-03-02.
数据库编程与图像处理 篇2
山区道路建设中常见的高填方路基, 在行车动荷载的冲击力、大量土石方静荷载的垂直压力、堤体含水量反复发生变化及不可能尽善尽美的施工质量等因素持续、同时、再三作用下, 易产生过大的工后沉降或不均匀沉降, 引起路面出现破损甚至破坏, 导致道路安全系数减小、通行能力降低和使用寿命缩短。因此, 《公路路基设计规范》、《公路路基施工技术规范》、《公路工程质量检验评定标准》都明确规定, 无论是施工期间还是运营阶段, 都必须开展路基沉降监测, 以控制沉降程度与变化趋向, 采取有效措施, 确保路基始终处于稳定的良性的状态, 支持道路整体, 最大限度地发挥其经济效益和社会效益。由于路基沉降具有随时间发生、发育、发展之显著特征, 监测需定期、反复进行, 并且每一次完整的监测都不单单是外业测量, 还包括沉降分析、评价和变化趋势预测预报等项, 其数据处理工作势必繁复、大量, 此时, 若采用计算机编程方法完成上述任务, 一则能够极大减轻计算量度;二则能够让处理程序程式化, 从而严谨化;三则能够实现数据分析图像化, 检评结论可视化;四则能够让数学功底稍差、计算机知识略逊的人员正常实施作业。
既然路基沉降是随时间变化的, 所以沉降变形分析须考虑两个因素:时间和沉降量。又由于“一门科学只有成功运用了数学, 才算达到了真正完善的地步。” (马克思语) 沉降分析理论依据数理统计方法。为构筑以时间为自变量、沉降量为函数的沉降变化数模, 首先绘制沉降数据曲线图 (沉降监测值为纵标、时间为横标) , 阅图判断模型, 以模型的可能类型为蓝本进行方程拟合 (若是线性模型, 求出回归系数a、b嵌入模型蓝本;若是非线性模型, 先将其线性化, 再求回归系数a、b, 然后嵌入模型蓝本) , 得到初步模型, 然后通过统计检验证明模型正确性 (数模显著性检验方法有很多, 但相关性检验因其计算简便、结论可信, 成为最常用的检验方式, 本文亦用此检验法) , 检验若证实模型成立, 说明所拟方程就是沉降实况的正确表达式。运用回归方程, 代入时间变量, 可求出沉降回归分析 (函数) 值, 从而从理论上掌握沉降变化。将同一时间的沉降监测值与回归分析值比较, 其差值 (残差) 愈小, 说明实际沉降愈趋于稳定;若其差较大, 表明沉降正在加深, 须加密监测并查证原因, 采取恰当补救措施控制局面;若差值突然大增, 并伴监测值互差变化较大, 表明路基异常, 是发生大沉陷的先兆, 须及时抢救消除事故隐患。
须要说明的两个问题是, 编程所依据的数学原理公式, 请参见参考文献[1], 为精炼篇幅, 本文未一一列出。若仅拟合形成一个初步模型, 只须验证其具有足够的回归精度即可;如试拟合形成的不止一个初步模型, 则在满足回归精度的模型中, 择回归精度最高者保留之。
一、源数据
我国南方某高速公路试验路段, 土方填高28m, 从路基填筑完工开始, 选择K 27+700断面上的一点, 进行了历时13个多月的沉降监测, 数据见表1 (如果以每天为时间单位的话, 横坐标太长, 为了绘图的方便, 以60天为时间单位, 即0.45 60天=27天的时候进行了第一次测量, 13个多月共监测14次) 。
单位:60天, m m
二、运行及程序代码
1.运行
进入数据处理界面→点击“导入数据”, 选择K 27+700断面右沉降数据的txt文件, 输入监测数据→点击“绘制折线图”得沉降数据的折线图→点击“查看图形”得五种模型的曲线→选择指数模型点击“建立模型”, 得拟合模型→点击“模型检验”, 得相关系数、自由度→点击“保存结果”, 输出回归分析值、残差等 (分别见图1、图2) 。
2. 代码
三、说明与结论
1. 经验证明, 路基沉降变化模型, 指数与对数形式最多, 由于篇幅限制, 本文仅列出了程序的核心部分之一;指数模型回归及其检验程序代码, 与对数模型代码的编写思路基本相似。
2. 图2显示, 所建模型相关系数r=-0.975, 以14-2=12为引数、α=0.01为保证率, 查相关系数表, 得相关系数临界值r临=0.661, 显然|r|≥|r临|, 证实本例整体回归精度满足要求, 所拟沉降模型有效且显著, 回归分析值均可靠;回归拟合度分析算得拟合中误差σ=5.9m m, 小于容许误差 (2倍观测误差) 10 m m, 再一次确认了上述结论的正确性;残差取值范围[-9.9, 7.7], 未超本例路基设计书规定的20 m m容许范围。
3. 通过讨论, 可有把握地断定, 路基K 27+700断面的沉降整体无异常, 而且随时间的推移, 前后监测值互差愈来愈小, 说明路基日趋稳定, 表明路基施工质量情况良好。
4. 笔者之所以使用V B语言编程, 除了它直观易学、功能强大、开发空间广阔外, 还因为该语言是我国计算机等级考试的专门语言, 在等级考试的有力推动下, V B成为我国使用普及率最高的语言之一;应用本程序开展路基沉降质量检评, 操作人员毋须具备完备的数理统计理论知识, 毋须具备计算机程序编写能力, 只须简单的输入和运行点击即可。
摘要:填方路基的不均匀沉降或过大的工后沉降, 都会引起路面出现破损甚至破坏, 致使公路的安全系数减小、通行能力降低和使用寿命缩短, 因此, 相关规范作出了必须进行路基沉降监测的规定, 以保障道路始终处于稳定的良性的状态, 最大限度地发挥效益。路基沉降, 是运行车辆的动荷载、道路本身的静荷载与含水等因素持续、同时、再三作用的结果, 随时间发生、发育、发展之特征是明显的, 因此, 监测须定期、反复进行, 并且每一次完整的监测都不单单是外业测量, 还包括沉降分析、评价和变化趋势预测预报等项, 其数据处理工作势必繁复、大量。若采用计算机编程方法完成上述任务, 一则能够极大减轻计算量度;二则能够让处理程序程式化, 从而严谨化;三则能够实现数据分析图像化、检评结论可视化;四则能够让数学功底稍差、计算机知识略逊的人员正常实施作业。
关键词:路基,沉降,VB语言,点击,界面
参考文献
[1]徐兮.最小二乘原理在隧道施工安全质量预测预报中的应用[J].数学的实践与认识, 2008, (6) :113-118.
[2]白凤山, 么焕民, 李春玲, 沈继红.数学建模[M].哈尔滨:哈尔滨工业大学出版社, 2002.
[3]陈谦应, 蒋树屏, 柴贺军, 杨建国.山区公路路基稳定理论与实践[M].北京:人民交通出版社, 2005.
[4]何国斌.VisualBasic程序设计教程[M].重庆:重庆大学出版社, 2006.
数据库编程与图像处理 篇3
关键词:图书馆,问卷调查,SAS软件
引言
每个学校图书馆都学会通过调查来了解图书馆文献资源建设的质量与水平,改善和促进图书馆服务工作,来更好地满足读者对各类文献需求。了解读者、了解服务、了解资源建设的重要一点是要学会调查,"没有调查就没有发言权",学会了调查研究,掌握了第一手数据信息,获得了科学的指导,这对于图书馆的工作将具有十分重要的意义。学会调查研究是图书馆必不可少的工作,那么调查完后该用什么的工具来分析数据也是值得我们大家探讨的。
在图书馆调查当中问卷调查方法是广泛被使用的,此方法是可以对数据信息进行定量统计分析。问卷调查法以抽样调查法被采用的尤为突出。它是"随机"抽取一部份进行调查研究,这就是通常所说的"以点带面"。它所获得的信息具有代表性和可靠性,而且时间短、费用少,因而也广泛应用于图书馆的抽样调查。在图书馆当中一般以他填类型的问卷为主,工作人员只要把问卷发到读者手中,由读者填好工作人员回收整理数据[4]。
下面是某高校一份图书馆读者问卷调查表(只做部份,做个例子来讲解问卷调查在SAS软件中应用)
2、运用SAS技术在图书馆读者问卷调查分析实现
根据上面一份图书馆问卷调查,现用SAS软件来实现。SAS全称:Statistics Analysis System,用于决策支持的大型集成信息系统。在数据处理和统计分析领域,利用sas系统可以很快地处理数据分析中的各种实际问题。广泛应用于医学、社会学、市场学、经济学和自然科学等的信息处理、定量研究和科研分析中[1]。在国外发达国家中,统计计算和数据分析都已经实现了在计算机上完成。
具体步骤如下:
步骤1:数据编码(把调查反馈回来的问卷编码成计算机统计软件所能识别的数码)[2]
(1) 观察值:在高校情况调查中,把一所高校同一批问卷中的一个观察值(OBS)
(2) 变量名:这份问卷有13个问答,每一问题则是一个变量,加上问卷调查编号,一共有14个变量。
(3) 变量值的栏目位置:计算机在读取变量值时,总是按照人为指定的"栏位"一一对应地读取数据。所以,数据输入的次序,必须与所定义的变量名的先后次序及指定的"栏位"一一对应,不能错位。
(4) 一个数据编码方案
在编码表中,第1栏"变量"是问卷中的变量。第2栏"变量名"是计算机可识别的标准名称。第3栏是"栏位"(数据占据的栏目位置)。第4栏"编码"是每个变量的变量值。
步骤2:根据编码表采用程序来简单的表示变量名、变量值及栏位的对应关系。
采用记事本的编程法,图书馆读者问卷调查SAS程序
最后存盘并返回到SAS系统[3]。
3. 实验小结:
(1) 用SAS软件来分析读者问卷调查与手工方法统计要省掉了好多时间,不需要重复的统计。
(2) 利用SAS软件来分析问卷调查的某个数据只要在程序中加入相应的代码就可以实现。
(3) 利用SAS软件来分析问卷调查的比手工统计来得要精确。
(4) 利用SAS软件来分析问卷调查比手工统计方法有着更加美观的图形界面、报表等。
(5) SAS系统以用户编程为主的使用方式也限制了其广泛应用。
4. 结束语
本文利用计算机统计软件SAS来分析数据实现了"多快好省",使得调查的内容可以很复杂,样本的规模可以大一些,一般一次可调查几千份问卷。若采用手工统计,数据统计将会显得"少慢差费",因此,调查的变量数目和调查的份数都会受到极大的制约。所以在信息时代我们在图书馆工作岗位的人员也应该要积极利用现代的计算机软件来实现自己手上的工作,使得工作高效且更精确。
参考文献
[1].高惠璇, SAS系统SAS/STAT软件使用手册[M].北京:中国统计出版社.1997.2-700.
[2].胡良平, 现代统计学与SAS应用[M].北京:军事医学科学出版社, 1996.229.
[3].贺佳, 陆健主编.医学统计学中的SAS统计分析.第1版.上海:第二军医大学出版社, 2002, 141.
数据库编程与存储技术研究 篇4
随着人们步入信息化时代的步伐加快, 计算机已经渗透进人们生活中的方方面面, 并且在生活中起到非常重要的作用。 计算机的发展离不开存储技术, 大大小小的计算机中中的数据处理都要依靠存储技术, 存储技术是计算机中必备的基础功能, 也算是核心功能之一, 所以现如今的计算机的发展离不开数据存储, 数据存储的发展更离不开计算机的依托, 所以对于数据存储的态度一定要给予摆正, 促进数据存储的发展, 从而推动计算机的发展。 虽然我国近几年的科学技术发展速度加快, 对于计算机的发展进程也逐渐地加快, 但是由于我国国情决定着我国的计算机的发展过程中还存在着许多问题, 数据存储技术也并不是太完善, 这些不完善因素严重影响我国的科学技术的进步, 所以解决数据存储技术中的不足是当前计算机发展的亟待解决的问题。
1 数据库存储技术
1.1 技术概述
数据库技术是信息科学技术的重要组成, 是计算机处理数据和管理信息的核心部分。 数据库技术有效地解决了数据的繁多无序性为使用者带来的不便, 快速的检索、 数据的共享、以及数据安全等等都可有效地实现, 减少了数据的冗杂性。
对数据库存储技术的改进, 一直是计算机性能的提高为载体的, 一直到近几年才对数据存储技术开始重视, 技术得到了飞速的发展。 在计算机发展初期, 对于数据库的定义几乎为零, 那时的计算机也只能进行一些简单的操作, 其性能非常低。 当集成电路与晶体管用于计算机之后, 计算机的性能得到了很大改善, 进入到了各个应用领域。 伴随计算机应用的普及, 传统存储方式已不能满足信息技术的发展, 计算机的存储容量已经发展为从以 “KB” 为单位到以 “TB” 为单位的级别。 当计算机开始运用与数据管理之后, 尤其是对一些复杂的数据的管理, 过去的简单的存储方式已经不能满足人类发展的需要, 所以就开始产生了DSMS, DSMS的产生是计算机数据库管理系统的一次产业革命, 随着计算机性能的不断提高, SQL和Oracle也相继出现。 计算机存储空间的不断扩大也就意味着必须对当前的数据储存的方式再次地进行改革, 优化当前的数据存数技术, 以满足当前的数据存储的需要。 届时各种计算机语言的发展解决了这一问题, 编程语言的发展为数据库的发展带来了新的生机与动力, 使得数据编程与数据库存储技术都有很大的发展空间。 传统的数据编程因为其编写的时间不同所以造成编程之间不尽相同。 目前来说常用的软件主要有VB, Java, VC, C++等, 因为每个编程软件本身具有一定的特点, 所以不同领域的数据编程, 使用的编程软件也有一定的差异。
1.2 进展历程
数据库这个词最早出现在20 世纪50 年代, 但那时的数据库还处于人工管理的方式, 也没有形成以软件管理的形式, 所以当时的数据库与现在的数据库还是有很大区别的, 但那时的数据库为现在数据库存储技术的发展奠定了坚实的基础。到了20 世纪60 年代中期, 计算机存储设备的出现, 带动了计算机存储技术的发展, 数据管理软件也应运而生, 但受技术条件的限制, 当时的数据存储容量仍然相当有限。 数据库技术是20 世纪60 年代末和70 年代初产生的, 它的主要目标是存储和管理数据资源。 数据库技术最主要的是对数据的存储、 管理和使用进行研究。 多年来, 计算机网络的发展和数据库技术的相互促进, 相互渗透, 已成为计算机领域迅速发展、 广泛应用的两大主要领域。 数据库技术不但用于信息储存, 还应用于事务处理、 信息检索、 人工智能、 计算机辅助设计、 专家系统等领域。
进入21 世纪, 随着计算机的普及, 需要存储的数据也越来越多, 计算机在企业中的应用发挥了日益重要的作用, 人们对数据库存储的共享能力提出了更高的要求, 在这一时期数据库存储技术得到了快速的发展。 随着数据库编程水平的提高与数据库存储技术的发展, 出现了一些新的数据库存储技术, 如数据流、 Web数据管理、 分散式数据库等。 通过这些软件, 可以制作一个完整状态的数据库。 每种类型的相应软件都有其自身的特点, 对应着特定的编程区域, 筛选出的独特的软件也有不同之处。
计算机的固有特性正在逐渐扩大。 它可以保存的数据也在不断地增加。 随着业务的发展, 企业客户的数量不断增加。人们希望建立可以保存更多的数据的数据库。 在这一时期, 数据存储技术得到了迅速的发展。 依据现有的指标, 数据流和更高级别的Web管理技术, 同样被归类为这项技术。 对大型软件来说, 数据的存储功能被设置为软件架构的重点性能。在数据编程的过程中, 受存储性能的影响, 计算机表现的存储容量的特性, 与数据处理的水平密切相关。
1.3 数据存储的价值
数据库中涉及到的存储技术改变了过去传统的纸质存储的方式, 传统的纸质存储的方式在一定程度上存在着诸多不足之处, 传统纸质存储受其存储方式限制非常容易丢失数据, 数据也不容易长期保持, 由于其存储的数量有限, 所以最开始存储的数据通常都会被自动损毁, 导致信息的丢失, 给用户带来很大的损失。 而数据存储就可以很好地解决这一问题, 强大的数据库拥有着非常大的存储空间, 无论存储什么样的信息都会被转化成具有先进特性的电子形式然后存储在事先设定好的硬盘中, 这种借助硬盘的依托来保存数据的方式对比起传统的纸质存储的方式, 更加凸显出其便利、 敏捷、 安全、 实用等方面的优势。
现如今在数据库中存储的数据都有可复制的功能, 这些存留的数据被企业复制多个进行保存, 大大地提升了数据存储的安全性。 企业可以很据不同的时段、 不同特性的数据进行分类保存和备份, 如果正常工作下的数据库发生了意外的故障, 导致数据丢失, 就可以通过这些备份来实现数据的还原。
2 数据库编程与数据库存储技术的关系
2.1 数据库存储的不同类型
数据库的种类繁多, 并且不同领域所用的数据库是不同的, 每个领域根据其领域的特点运用不一样的数据库, 比如在电力以及交通运输等领域需要对数据的实时掌控, 所以就运用的是实时数据库, 而对于一些网络上的视频网站以及社交网站与企业的管理系统通常对人际关系之间的连接有着很重要的要求, 所以这类领域就采用的是关系数据库, 另外还有一些其他不广泛使用的数据库有微型数据库、 商业数据库以及自由数据库等, 这些数据库都是为了满足不同的领域的需求而存在的。 而这些数据库之间的不同主要是由数据库编程决定的, 事实上这些数据库的工作原理大致都是一样的, 只不过设计及人员在设计的过程中为了使他满足现实生活中的不同的需求而在其某些结构或者环节中做了一些调整。 所以虽然这些数据库看起来存在着一定的差异, 但其原理都是一样, 只是在形式上有所区别罢了。 所以在数据库的开发过程中要针对不同的需要去改变一些结构, 以满足不同工作的需求。 但是在程序实际编写的过程中, 往往由于设计考虑不周而存在一些问题, 编写者在实际编写中, 如果发现数据库类型不是最好的, 就会修改程序的设计, 优化数据库的程序。
2.2 数据库编程的核心
对数据库来说, 其最核心的功能是存储数据。 伴随数据库技术的不断完善, 现在的数据库结构变得更加复杂, 其功能也变得更加多样化。 在数据库中会分为几个模块, 分别执行数据的录入、 调用、 修改等功能, 虽然这些功能是必不可少的, 但作为数据库应用程序的核心, 数据库存储技术更应受到编写者的重视, 在编写其他模块的时候, 以存储功能为中心。 比如如果可以提高数据的存储效率, 可以修改其他模块, 但如果不以数据的存储功能为中心进行数据库编程, 则有可能为了数据调用的方便, 修改数据库存储类型, 虽然数据调用方便了, 但是数据存储的安全性降低了, 得不偿失。 在大型数据库编写过程中, 数据存储的管理和效率十分重要, 数据修改、 调用、 录入都不是数据库的核心, 所以, 深刻牢记数据存储技术是数据库编程的核心, 才能得到数据库最佳的效果。
3 重视存储方式
数据库比较经常使用的程序中, 都把在这个体系架构之中的数据存储设定为中心, 一般情况下一个完整的数据库, 都会分很多层的模块, 而在这些模块共同组成的整体之中的一个中心的模块之中整合了平常所有的调用步骤, 比如: 数值的录入、 数值的整改等等。 这种数据库中独一无二的流程的核心, 也就是存储技术, 一直占有一个非常重要的位置。
在真正的编写的时候, 运用存储技术独有的侧重点, 还要注意开始的时候的录入的步骤、 修改还有调用等, 如果想要提升原来的存储成效就可以变换模块以内的其他的模块, 但是如果没有考量好核心范畴中的数据的存储, 即便是改变了模块内的模块, 也很难维持数据的安全性。 所以在大规模的独有的数据库中一定要把存储步骤中凸显的效率问题当做侧重点, 只有在这种状态下才可以提升整体的运作的实效性, 形成最佳的框架。 这种数据存储依托着数据库的存储形式很好地弥补了纸质存储中的缺陷, 但是在使用数据库存储的过程中要慎重的保存数据, 防止数据的泄露。
4 结语
数据库编程与图像处理 篇5
图像处理技术在社会个科学领域都发挥着重要的作用, 并且计算机图像处理以及编程技术也得到前所未有的发展, 实现了技术的相互融合。此次侧重点主要是这项技术在工业检验当中的具体应用, 在阐述计算机图像处理技术以及编程技术的基础之上, 分析具体应用实效。下面开展相关研究。
1 计算机图像处理与编程技术概述
1.1 图像处理技术
图像处理技术的发展起始于20 世纪60 年代, 与航天技术相伴而生。在人类最开始对图像处理技术的应用中, 是通过识别将检测到的图像转变为数字图像, 继而实现系统优化, 便于对图像的深刻理解。在当时的数据图像主要是通过三原色的灰度值表示。截止到目前为止, 计算机图像处理技术已经发展为三个不同的层级, 分别为高、中、低三个阶段。实践表明, 应用较为广泛的则为低层次的处理系统。通常低层次的处理系统构成相对简单, 主要包括摄像头、图像采集卡以及计算机三个部分构成, 具备操作快捷、图像效果清晰的特点。凭借相应特点, 在当前多领域检验中应用较为广泛。站在狭义的层面分析可以发现, 图像处理技术主要是将识别模糊的图像转换为清晰图像, 是一种“图像”到“图像”的转化过程。
1.2 编程技术
编程技术, 实质上是一种借助计算机达成某一目标或者解决问题的技术手段。使用某种程序设计语言编写程序代码, 最终得出结果的过程。编程技术在工业检验方面的应用范畴也主要集中在编程手段以及编程特征的运用方面。
2 计算机图像处理与编程技术在工业检验中的具体应用
(1) 图像处理技术应用。图像处理技术不仅仅能够对于原材料的信息以及编程形态等信息进行掌握, 还能够依据原材料的相关信息获得颜色特征, 将三原色信号转变为数字信号。当然, 图像技术在早年的研究中, 被分为不同的等级, 依据图像处理颜色的不同等级进而判定原程序的优劣状态。通过这种方式, 将原图像进行具体处理, 提取其中的颜色特征状态, 对其进行记录得出冠层特征、图像处理之间的差异性进行阐述。对工业原材料进行检验, 能够提升检验成功率。关于图像的具体颜色提取如图1 所示。
对于工业材料进行检验, 图像处理技术的应用不单单局限在颜色提取方面, 同样能够进行纹理图像的提取。计算机运用图像处理技术, 将需要检验的工业原材料的纹理能够清晰的呈现, 表现出原材料自身具备的问题特征及要求指标。当然, 图像基础在原材料纹理方面的探索已经得到改善, 准确率高达80% 以上。在完成纹理的提取与对比分析之后, 将原材料当中缺少的纹理部分进行补充, 进而发挥出图像处理的优势。
(2) 编程技术应用。编程技术在工业检验中的应用, 效用显著。近年来, 国家发起振兴东北老工业基地, 大力发展工业。进而在工业产业快速发展的基础之上, 推动国民经济的快速发展。经科研人员表明, 计算机图像处理技术与编程技术的有效融合, 能够对工业检验形成良好的推动力。并且这种技术手段, 对原料破损程度以及原料损坏部位具有一定的分辨效应。图像处理技术将所获得数据信息转变为数字信号与编程, 通过计算机的操作下, 能够较为准确的分析工业原材料的运行状态, 避免了传统检验方式的繁琐性以及复杂性, 效率性以及精准度明显提升。计算机的出现, 为各个领域的发展提供了基础保障。图像处理基础主要功能是将图像转变为数字技术, 将工业原料的图像转变为显示器的充分配比, 进而能够最大限度上的提升的图像显示的精准度。确定原料的形态、特征、颜色以及纹理之后, 充分衡量原材检验的技术状态, 将涉及到的特征充分体现。与最开始图像处理技术相比较而言, 现代的技术手段以及基础形态已经得到明显改变。
(3) 编程图像分辨。编程图像的分辨, 通常包括两种方法, 即函数图像法以及类似图像法两种。函数图像法则通常属于一种模糊的形态, 在检验的过程中, 通过数据流线的方式将图像的内容进行具体表现。通过这种方式对工业图像进行处理, 使其能够更加清晰。由于图像处理属于一种分层处理的形态, 如果其中涉及到的因素较多, 内容过于繁琐, 也将造成分层画面过于混乱。类似图像法, 顾名思义则是将两个相近的编程图像进行有效融合, 在考虑原材料的体态以及性状基础之上, 探索内在的分类标准要求。完成类似图像法的处理之后, 通过函数图像统计的方式, 减少计算过程以及计算方式的繁琐程度。近年来, 工业环境逐渐发生改变, 并且设备、技术等因素的不断更新, 使得传统的原料经受前所未有的考验。大气环境、内部结构影响着原材料的信息编程。图像处理技术的应用, 已经成为大势所趋, 能够深入探索原料的形态及内在本质要求, 经过颜色、纹理等多手段的提取, 为检验效果提供基础保障。
3 结论
综上所述, 计算机图像处理与编程技术的有效融合, 能够为工业检验提供良好的发展环境。显然, 这种技术手段以及操作方法凭借自身快捷、便捷以及清晰的性能, 使得工业检验更加趋向于准确性, 避免了处理数据的繁琐程度。研究结果表明, 计算机图像处理与编程技术在检验中的应用, 效果良好。
参考文献
[1]甘雨.基于图像处理的计算机编程技术在检验中的应用[J].通讯世界, 2015, 10 (08) :225-227.
[2]李卓, 李益民.Matlab与VC++混合编程技术在图像处理中的应用研究[J].电脑知识与技术, 2011, 10 (22) :540-542.
编程实践中内存泄漏的检测与处理 篇6
关键词:动态内存分配,内存泄漏,编程实践
C++的强大功能之一就是可以进行动态内存分配, 即允许在程序运行的过程中灵活分配所需的内存, 然而, 有效地管理这些内存同样也是非常重要的。当以前分配的一片内存不再需要使用或无法访问时, 但是却并没有释放它, 那么对于该进程来说, 会因此导致总可用内存的减少, 这时就出现了内存泄漏。
1 内存泄露的定义
一般我们常说的内存泄露指的是堆内存的泄露。应用程序一般以malloc, new, relloc, 等从内存中分配的内存空间, 使用完成后程序必须负责free或者delete掉这部分内存空间, 否则这块内存就不能被再次使用就是我们通常说的内存泄露。此外, 内存泄露还包括系统资源的泄露。比如HANDLE, GDI Object, Socket, interface等, 有些对象消耗的是核心态的内存, 因此, 从某种角度上说, 系统资源的泄露比堆内存泄露更加恐怖, 可能导致操作系统的不稳定。GDI object泄露是一种常见的资源泄露。
2 内存泄露的分类
以发生的方式来说, 内存泄露大致分为以下几种: (1) 常发性内存泄露, 发生内存泄露的代码会被经常执行到, 每次执行都会导致内存泄露。 (2) 偶发性内存泄露, 发生内存泄露的代码只有在特定的环境下才会被执行到, 因此, 在特定的环境下偶发内存泄露可能会变成常发性内存泄露, 检测内存泄露变得至关重要。 (3) 一次性内存泄露, 发生内存泄露的代码只会被执行一次。 (4) 隐式内存泄露。程序在运行过程中不停的分配内存, 但是直到结束后才释放内存, 从严格的角度来说这里并没有内存泄露, 因为程序最终释放了所有的申请资源, 但是不及时的释放内存也有可能造成内存泄露。
3 内存泄露的检测
3.1 截获内存分配释放函数
每当分配一块内存, 就把它的指针加入一个全局的list中, 每当释放一块内存就把它的指针从全局list中取出, 最后等到进程关闭的时候, list中剩余的指针就是那些没有释放的内存。
如果要检测内存泄露, 那么只要截取住malloc/relloc/free和new/delete即可, 其实 (new/delete) 也是malloc free所以只要截获前一组即可, 对于其他的内存泄露采用类似的方法, 截获住相应的分配和释放函数。比如检测BSTR的泄露, 就需要截获Sysalloc String/Sysfree String, 要检测HMENU的泄露, 就需要截获Create MenuDestory Menu (有的资源分配函数由多个但是释放函数只有一个, 此时需要截获所有的分配函数) 。
3.2 借助DEBUGER和CRT堆除错函数
要使除错函数生效, 必须要在程序中包含以下几个语句:
并且这些#include语句必须按上边给出的顺序使用。如果你改变了顺序, 可能导致使用的函数工作不正常。包含crtdbg.h的作用是用malloc和free函数的debug版本 (_malloc_dbg和_free_dbg) 来替换他们, 他们能跟踪内存分配和回收。这个替换仅仅是在debug状态下生效, Relese版本中还是使用普通的malloc和free函数。上面的#define语句使用crt堆函数相应的debug版本来替换正常的堆函数。这个语句不是必需的, 但是没有他, 你可能会失去一些有用的内存泄漏信息。
一旦在程序中增加了以上的语句, 就可以通过在程序中增加_Crt Dump Memory Leaks () ;函数来输出内存泄漏信息。当你在debuger下运行你的程序时, _Crt Dump Memory Leaks显示内存泄漏信息在Out Put窗口的Debug标签项里。
3.3 利用Windows平台下的内存检测工具
一般有三种: (1) MS C-Runtime libray内建的检测功能; (2) 外挂是检测工具, 诸如purify, boundschecker等; (3) 利用windows NT自带的performance Monitor。
4 内存泄露的处理
4.1 使用工具软件BoundsChecker
BoundsChecker是一个运行时错误检测工具, 它主要定位程序运行时期发生的各种错误。它通过驻留在集成开发环境内部的自动处理调试程序来加速应用程序的开发, 缩短产品发布时间。BoundsChecker对于编程中的错误提供了清晰的详细的分析。它能够检测和诊断出, 在静态堆栈内存中的错误以及内存和资源泄漏问题。在集成开发环境下, 调试运行DEBUG版程序, BoundsChecker在运行时检测内存泄漏, 并在可能出现内存泄漏的代码处中断程序运行, 开发人员可根据调用现场状态, 排除内存泄漏。
4.2 运用CRT (C run-time libraries) 技术
调试运行DEBUG版程序, 运用以下技术:CRT (C run-time libraries) 、运行时函数调用堆栈、内存泄漏时提示的内存分配序号 (集成开发环境OUTPUT窗口) , 综合分析内存泄漏的原因, 排除内存泄漏。
首先, 需要在程序中包含必要的语句, 用来启用调试堆函数。其次, 设置内存泄漏检测报告。在程序结束后, 自动调用_CrtDumpMemoryLeaks方法, 在OUTPUT窗口中报告内存泄漏的相关信息。最后, 根据OUTPUT窗口中提示的内存泄漏相关信息, 排除泄漏。分两种情况:一种情况是程序退出时, 在OUTPUT窗口中, 直接报告出现内存泄漏的源代码文件名及具体代码行数。只需要分析此处代码, 根据上、下文修改, 一般就可以正确释放内存了;另外一种情况是使用_CrtSetBreakAlloc方法来检查定位内存泄漏位置。
4.3 多线程环境下, 也可以使用_CrtSetBreakAlloc方法来定位内存泄漏
具体操作步骤如下: (1) 先在调试状态下运行几次程序, 观察内存分配顺序号是哪几个值。 (2) 用出现次数最多的那个顺序号来设断点。即:在代码中添加如下调用:_CrtSetBreakAlloc (20) ; (假设:OUTPUT窗口中, 报告{20}最多。即:第20次内存分配出现泄漏的情况较常发生) (3) 在调试状态下运行程序, 在断点停下时, 打开"调用堆栈"窗口, 找到对应发生内存泄漏的源代码。 (4) 退出程序, 观察OUTPUT窗口的内存泄漏报告, 看本次内存分配的顺序号是不是和预设值 (_CrtSetBreakAlloc中设置的值) 相同, 如果相同, 就找到了;如果不同, 就重复步骤 (3) , 直到相同。 (5) 最后根据分析结果, 在适当的位置释放分配的内存。
由于自己在教学实践及编程经验上还有很多不足, 上文中的错误及不足之处希望大家多多批评、指正。
参考文献
[1][C++2010]ISO/IEC14882.Programming Languages-C++, 1st Edition.International Standardization Organization, International Electrotechnical Commission, American National Standards Institute, and Information Technology Industry Council, 2010.
数据库编程与图像处理 篇7
1 研发方法
PCI接口控制器的设计相对来说比较复杂。目前比较常用的方案有两种:第一种是用可编程逻辑器件设计实现,目前,部分厂家能够提供这类专用芯片,如AMCC公司开发的主/从控制芯片S5900-33,PLX公司开发的PLX9080和PLX9054,还有PCI接口专用芯片PCI9080等。其中PCI9054具有较强的性能。
第二种方案是采用专用接口芯片。FPGA内部具有丰富的触发器和I/O引脚。FPGA是ASIC电路设计周期最短、开发费用最低、风险最小的器件之一。从这个角度出发,应用可编程逻辑器件FPGA来实现也是一个较好的选择。
总的来说,它们各有特点,前者方案需要投入大量的人力、物力进行逻辑验证和时序分析工作;而后者需要购买价格不菲的专用芯片。但是对PCI的接口设计以及可编程逻辑器件有着良好的开发经历来说,不妨采用第一种方案。FPGA起源于美国兀llnx公司的创造,该公司于1985年发明了世界上第一个FPGA器件。直到今天,FPGA已经经历了二十几年的发展历史。在这二十几年的发展过程中,以FPGA为代表的可编程逻辑器件技术取得了飞速的发展,从最初可以在一块芯片上集成1200个可用门,发展到90年代25万个可以门,到本世纪初,国际上现场可编程逻辑器件著名厂商Altera公司、Xihnx公司陆续推出数百万门至上千万门的单片FPGA,将现场可编程逻辑门阵列芯片的发展提高到一个新的水平。
2 PCI总线
2.1 特点
PCI局部总线是当今PC领域主流的局部总线标准,由于其独立于CPU的架构,而与CPU的时钟无关,因此用户可以将一些高速外设如网络适配卡、图形卡、硬盘控制器等从ISA总线上卸下,而通过PCI局部总线直接挂接在CPU上,使之与高速的CPU总线相匹配,从而打破了数据FO的瓶颈,使高性能的CPU得以发挥。
2.2 组成
PCI总线的中断共享由硬件与软件两部分组成。硬件上,采用电平触发的办法:中断信号在系统一侧用电阻接高,而要产生中断的板卡上利用三极管的集电极将信号拉低。而只有当所有板卡的中断都得到处理后,中断信号才会回复高电平。软件上,采用中断链的方法:假设系统启动时,发现板卡A用了中断7,就会将中断7对应的内存区指向A卡对应的中断服务程序入口ISR_A;然后系统发现板卡B也用中断7,这时就会将中断7对应的内存区指向ISR_B,同时将ISR_B的结束指向ISR_A。以此类推,就会形成一个中断链。而当有中断发生时,系统跳转到中断7对应的内存,也就是ISR_B。ISR_B就要检查是不是B卡的中断,如果是,要处理,并将板卡上的拉低电路放开;如果不是,则呼叫ISR_A。这样就完成了中断的共享。
3 基于FPGA的数据传输接口
与PCI总线目标设备控制器接口的应用设备在PCI总线传输中处于被动的地位,它不会申请对总线的使用权,只是在地址命中的情况下响应由总线主设备提出的总线操作。PCI总线目标设备控制器要生成PCI总线传输中目标设备应产生的总线信号,根据这一原则,将PCI总线目标控制器从功能上划分为7个模块,如图1所示。其中配置模块、基地址译码模块、奇偶校验模块、锁存模块、重试计数模块、有限状态机这6个模块负责实现配置空间读写、地址空间译码、奇偶校验位生成、地址期信号锁存、与目标设备重试连接、目标设备状态转移和接口信号控制等功能,而后端设备模块是为测试PCI总线目标设备控制器的功能而设计的。
3.1 地址数据的控制
由于PCI总线是地址数据复用总线,所以地址数据控制模块是用来对地址数据传输的控制,即按照PCI协议,满足一定的逻辑关系情况下总线上传输的是数据,满足另外的逻辑关系总线上传输的是地址。通过读取地址译码,地址译码产生的信号可实现对各寄存器(源地址、目的地址、计数器寄存器)的寻址,指示对应寄存器完成读写操作。当PCI处理数据时,地址译码单元先获得源地址和目的地址,进而进行数据相应的数据传输操作。
3.2 地址锁存及数据分离
当PCI总线处于空闲状态时,若PCI从设备的FRAME#信号被拉低,这时在CLK的上升沿分别采样地址/数据线、命令/字节使能线上的内容,得到的即为地址和总线命令(即在PCI总线地址期锁存)。这一过程就是地址和命令的锁存,因为PCI总线上地址、数据复用AD信号线,命令、字节使能复用C/BE#信号线,所以在总线地址期应锁存地址和命令。在锁存地址和命令的同时,该电路模块还要锁存初始化设备选择信号IDSEL。
当PCI从设备的FRAME#信号被拉低表示一个总线周期的开始,第一个时钟是地址周期,为了便于后面电路的处理必须将地址AD信号和命令C/BE#信号进行锁存。此锁存电路要把在上述时序中采集的数据传输到地址命令译码器,由译码器检查此次总线访问的对象是否是本设备。
3.3 开发
状态机(FSM)是设计PCI接口逻辑的核心与主干,时序状态机接收来自总线主设备和从设备的控制信号,加以分析处理,无论是否是对本设备的访问,都要引导其作出正确的时序响应,以保证总线交易的正确完成。根据数据传输的要求需要设定六个状态,即空闲状态(IDLE1)、设备选中状态1(DEV_ST1)、配置读状态1(CFG_RD_ST1)、配置读状态2(CFG_RD_ST2)、停止状态(STOP_ST1)、配置读状态3(CFG_RD_ST3),当状态机处于空闲状态时,在cfg_rd_sel或io_rd_sel或mem_rd_sel被选通时,控制器通过译码判断本目标设备是否被选中,若是选中,则转入DEV_ST1,同时如irdy主设备准备好了,则进入配置读状态1,当配置读传输进行了一个数据期后,如若irdy还处于有效状态,则进入CFG_RD_ST2,继续进行传输,否则在配置读状态2停留不动,接下来,如果frame在此时突然拉低,则预示着主设备要求停止当前的数据传输或则数据快传输完毕,进入停止状态STOP_ST1,然后完成最后一次的数据传输,进入配置读状态3(CFG_RD_ST3),当完成最后一次的数据传输后则回到了空闲状态。状态机中空闲状态转到这六个状态根据PCI总线的使用情况而进行转换,从而完成数据的传输。
4 结语
在PCI总线接口的设计中,PCI总线接口的性能将会影响整个系统性能,采用FPGA做为硬件载体,VHDL语言进行功能描述。采用FPGA实现PCI总线接口不但升级简单、容易,而且提高了系统集成度。
摘要:设计了PCI总线的可编程逻辑器件传输接口,接口芯片没采用通常固有芯片而采用FPGA,给出了主要的开发设计。该系统可以很好地应用于PCI的数据采集与测试环境。
关键词:FPGA,PCI,数据传输,接口
参考文献
[1]William Stallings著,张昆藏,等译.计算机组织与体系结构性能设计.第6版[M],北京:清华大学出版社,2000.
[2]王雪梅,施洪昌.基于PCI总线的数据采集卡的设计[J].微计算机信息(测控自动化),2005,(4).
相关文章:
利用VB编程实现弦的振动实验的数据处理01-23
唐朝的离婚协议书01-23
嵌入工作过程01-23
嵌入策略01-23
链接与嵌入01-23
不同煤种01-23
数控车床编程加工工艺的处理01-23
基于可编程逻辑器件的图像处理方案设计01-23
编程型游戏——一类特殊的教育游戏01-23
3D游戏编程01-23