方法。
②图像复原。
在景物成像过程中,由于成像设备与物体的相对运动、介质散射、系统畸变如成像系统的变焦、成像器材的固有缺陷、噪声干扰等因素会造成图像质量降低,称之为“退化”,典型现象是图像模糊。
使退化的图像恢复本来面目,真实反映原景物图像的处理,称为图像复原。
该部分主要研究各种校正模型和处理方法。
图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。
如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;强化低频分量,可减少图像中噪声影响。
图像复原要求对图像降质的原因有一定的了解,一般而言,应根据降质过程建立“降质模型”再采用某种滤波方法,恢复或重建原来的图像。
3图像压缩编码 把数字化的图像数据按一定规则进行排列或运算的过程称为图像编码。
内于图像的数据量很大,存储要占很大的空间,传输也要花费不少时间,为此利用图像本身的内在特性如像素灰度值之间的相关性,按某种特殊方式编码,以压缩总的信息量,称之为图像压缩编码。
该部分主要研究各种高效压缩编码方法。
压缩可以在不失真的前提下获得,也可以在允许的失真条件进行。
编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。
4图像分割 图像分割是数字图像处理中的关键技术之—。
图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。
虽然目前已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。
因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热点之一。
5图像描述 图像描述是图像识别和理解的必要前提。
作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。
对于特殊的纹理图像可采用二维纹理特征描述。
随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积描述、表面描述、广义圆柱体描述等方法。
2.2 数字图像处理的应用领域 图像信息是人类主要的信息来源之一,图像处理的应用领域也涉及到人们工作生活中的方方面面。
主要应用可归纳为以下几个方面: 1医用图像处理。
医学上不论是基础研究还是临床应用,都是图像处理种类极多的领域。
例如生物医学的显微图像的处理分析,如红白细胞和细菌,染色体分析;临床诊断中 X 光图像的鉴别、超声波图像B 超的分析、眼底照片的分析等都是医疗辅助诊断的重要手段,尤其是计算机层析成像技术CT,可以获得人体剖面图,使肌体病变特别是肿瘤的诊断起到了革命性的变化,近年来出现的核磁共振 CT,使人体免受各种硬射线的伤害,而且图像更为清晰。
2遥感图像的处理。
飞机或人造卫星传送来的遥感图像,由于各种原因图像质量不是很好,必须在成像、存储、传输、判读过程中进行各种数字处理与分析如辐射校正、几何畸变校正、多光谱统计信息分类等,并将其变为可视的资源信息或气象信息,如大气预报中的卫星云图。
目前遥感技术已在资源调查、灾害监测、农业规划、城市规划、环境保护等方面得到了广泛的应用。
3文字的识别与图纸的判读。
文字与图纸是科技信息的主要传输手段。
文字与图纸在图像处理中都是以最简单的二值图像形式出现的。
文字识别的应用包括手写体文字的识 5别、图文混合中文字的识别等,如邮政编码的自动识别,计算机光笔输入,经扫描仪扫描的文字材料是以图像文件的形式保存,如何将其转变成文本文件等等。
目前此类应用技术已比较成熟,如 OCR 软件等。
图纸的判读则涉及到各种逻辑图和机械设计图的自动读取问题,其中也包括图纸上的文字识别问题即图文混合下的文字识别。
4工业领域的应用。
产品外观检测与筛选,表面缺陷的自动检测,组装与流水线上的自动化,工业材料的质量检验。
5农业上的应用。
包括农产品色度的检测如鉴别水果成熟度,农牧产品,作物的表血形状和特征参数的测定。
6其他。
指纹识别、影视中的特效等。
2.3 数字图像系统简介 数字图像处理系统是一款简单而又实用的灰度级图像处理软件,是基于 Windows 平台的应用程序,利用 Visual C6.0 的编译环境提高了系统的开发速度,实现数字图像的查看与编辑操作。
主要内容有: 图像文件的打开和保存,实现了对灰度级图像的操作。
图像的几何变换,实现对图像文件的旋转、缩放、以及镜像处理。
图像增强和复原,实现对降质的图像进行改善处理和提高图像质量的逼真度。
图像的边缘检测和分割,产生更适合人观察和识别的图像。
图像编码,对图像采用不同的表达方法以减小表示图像所需的数据量。
3 数字图像处理系统开发技术基础3.1 C语言优点 C++语言是一个面向对象的语言,使用 C++编写的代码更加简捷、高效,更具可维护性和可重用性。
C语言的优点主要有以下几点: 1、使用 new 和 delete 进行动态内存分配和释放 运算符 new 和 delete 是 C++新增的运算符,提供了存储的动态分配和释放功能。
它的作用相当于 C 语言的函数 malloc()和 free() ,但是性能更为优越。
使用 new 比使用malloc()有以下的几个优点: (1)、new 自动计算要分配类型的大小,不使用 sizeof 运算符,比较省事,可以避免错误。
(2)、它自动地返回正确的指针类型,不用进行强制指针类型转换。
(3)、可以用 new 对分配的对象进行初始化。
2、使用 inline 内连函数替代宏调用 对于频繁使用的函数,C 语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。
但是宏调用有许多的弊端,可能引起不期望的副作用。
例如宏:#define abs(a) ( : ) (a)<0?(-a)(a), 当使用 abs(I++)时,这个宏就会出错。
所以在 C++中应该使用 inline 内连函数替代宏调用,这样即可达到宏调用的功能,又避免了宏调用的弊端。
使用内连函数只需把 inline 关键字放在函数返回类型的前面。
例如: inline int Add(int a,int b) ;//声明 Add()为内连函数 这样编译器在遇到 Add()函数时,不再进行函数调用,而是直接嵌入函数代码以加快程序的执行。
3、使用函数重载 在 C 语言中,两个函数的名称不能相同,否则会导致编译错误。
而在 C++中,函数名相同而参数不同的两个函数被解释为重载。
例如: 6 void PutHzchar str //在当前位置输出汉字 void PutHzint xint ychar str //在 x,y 处输出汉字 使用函数重载可以帮助程序员应付更多的复杂;同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。
4、使用引用(reference)代替指针进行参数传递 在 C 语言中,如果一个函数需要修改用作参数的变量值的时候 ,参数应该声明为指针类型。
例如: void Addint a a 但是对于复杂的程序,使用指针容易出错,程序也难以读懂。
在 C++中,对于上述情况 可以使用引用来代替指针,使程序更加清晰易懂。
引用就是对变量取的一个别名,对引用进行操作,就相当于对原有变量进行操作。
例如使用引用的函数定义为:voidAddint ampa a //a 为一个整数的引用 5、使用“类”对数据进行封装 C 语言是模块化的程序语言,通过函数的使用和文件的单独编译实现了一定的数据封装功能。
但 C++通过使用“类”的强大功能,在数据封装、继承等很多的方面比 C 做得更好。
通过使用“类”把数据和对数据的所有操作集合封装在一起,建立了一个定义良好的接口,使程序员在使用一个类的时候可以只关
上一篇:
基于目标跟踪的全方位视觉自引导车动态定位技术
下一篇:
浅谈信息管理与信息系统专业实践教学改革