摘要:本文是基于C++编写图像处理程序, 完成图像检测系统的设计, 系统功能包括:打开*.bmp文件, 图像的灰度处理、二直化、阈值变换、平滑滤波、边缘检测, 智能识别等。系统开发和程序运行平台为Win7, 采用C++Builder软件。检测系统通过调试运行, 初步实现了设计目标。
关键词:C++; 图像处理; 检测系统; C++Builder;
无论是在机电产品研发中, 还是从事图像检测处理工作, 都需要有良好的图像处理的能力。数字图像处理是运用相关数字技术, 对图像采取特定算法进行处理, 实现预期目标。伴随数字计算机技术的快速发展, 数字图像处理技术已经发展成为一门学科, 具有广泛的应用。借助C++编程, 设计图像检测系统, 实现图像的智能识别判断, 提高图像检测的效率。
1、C++编程简述
1.1、C++语言
C++是兼容了C, 保持了C的优点, 是面向对象的编程设计的语言。在C++的集成环境下, 可以直接调试和运行大多数的C程序代码。这样既继承和开发了当前已在广泛的软件, 又节省了人物力。C++编程突出了各个模块程序的独立性, 增强了程序的可移植性, 优化了程序代码的结构, 强化了程序的扩充性。C++的优点是语句简练, 语法灵活宽松, 方便了用户书写编程。但存在由于编译时采用宽松的语法, 不容易发现许多逻辑上的错误, 加大了用户编程的难度。
1.2、C++集成环境
C++程序和C程序的编译和调试都可以在C++集成环境下进行。一般在C++集成环境下规定:C程序定义为扩展名为c.的源程序;同时, C++程序定义为扩展名为cpp.的源程序。
1.3、C++Builder软件应用
C++Builder软件的优点是菜单简单、功能齐全、效率较高, 融合了C++编程。C++Builder包含Delphi可视化控件, 编译快捷, 兼容了组件技术, 是一种可视化的程序设计工具, 能够忽略没有变化的代码和函数, 快速进行编译、连接。该软件新增加了SOAP/Web Service、Web Snap技术。借助上述技术, 可以在32位系统上编写高效的Windows和Internet应用程序。该软件的开发工具包含可视化的窗口设计端、控件面板、工程项目管理器、调试控制器等, 方便程序员进行创建、设计程序。BCB软件采用多样的输入/输出驱动装置, 可以和很多输入/输出设备, 如PLC、特种模块、输入/输出板卡、特种仪表等, 构成现场使用的系统。借助如支持服务器远距离交互、转换变化数据方法等通信方法, 实现与外设进行数据交互。因此, 在图像处理过程中采用BCB编程是很必要的。
2、图像处理技术
2.1、灰度的处理
工业现场中获取的零件图像大部分是32位真彩色图像, 具有较高的分辨率, 占用很大内存, 信息量大, 不便于快速进行模式识别, 因此, 把现场获取的真彩图像变换成256色.bmp图像, 再变换成8位灰度图像。
2.2、变换阈值
现场获取的零件彩色图像, 变换成灰度图像, 分256个等级。变换阈值就是把灰度图像变换成黑/白两色的二值图像。借助灰度的直方图获取谷底的阈值范围, 并提取阈值。再对灰度图像采取变换阈值, 实现零件图像的二值化。
2.3、均衡灰度
均衡灰度是把灰度图像在每一个级别上均采用同像素进行显示, 来优化图像的对比度, 均匀化灰度的分布。其处理原理是借助压缩初始图像中的像素较少的区域, 延伸像素较多的区域。
2.4、平滑图像
平滑图像是比较实用的处理方式, 实现去除图像的噪声, 主要包含椒盐、随机等类型噪声。平滑图像的空间方法分为线性、非线性和自适应等类型的处理, 频率处理方法是采用低通滤波除噪。
2.5、图像滤波
图像滤波的一种算法是选取包含奇数点的窗口, 把初始化的图像像素与其中心进行整合, 提取特定窗口对应的灰度数值, 并按照升序排列灰度, 选取中间值来替换窗口中心像素点的值。该算法解决了滤波后细节模糊的缺点。
2.6、图像锐化
图像锐化是一种图像强化的方法。在平滑图像后存在图像边界及轮廓模糊的缺点, 因此尽量克服上述问题, 可以采用图像锐化方法, 使图像的边界更加清晰。算法是借助微积分, 可以采用梯度运算, 获取更加清晰的图像轮廓, 不改变图像的原始灰度。
2.7、分割阈值
分割图像的阈值有很多方法, 比如把每一个像素等分到各自区域, 称为区域划分;针对区域的边界, 进行获取识别, 称为边界算法。对图像进行分割阈值提取轮廓的过程是:根据灰度直方图进行确定检测零件图像的阈值, 再对检测图像实现二值化, 进行图像锐化, 采用特定算法获取检测图像的边缘轮廓。
3、图像检测系统的软件界面
3.1、软件的功能面板
基于图像处理技术的零件加工质量检测系统的软件界面如图1所示。登录功能界面, 借助文件菜单中的“打开位图”项目打开在本地电脑上存放的零件原始彩色图像, 可以进行原始图像和图像处理后的效果显示。对零件图像进行灰度处理、图像滤波的功能界面如图2所示, 可以选取不同的滤波方式。对零件图像进行平滑处理, 功能界面如图3所示。图像的二值化、灰度直方图等功能界面, 如图4所示。提取图像边缘轮廓, 其功能界面如图5所示。
图1 登陆界面
图2 灰度处理
图3 图像平滑
图4 (a) 二值化
图4 (b) 直方图
图5 阈值分割
3.2、图像处理实例
本检测系统可以检测直径为6mm的针阀体零件内孔加工质量, 其中抽取了6个需要检测的内孔图像, 如图6所示。上述6个零件图像, 按照一定算法处理后的结果, 如图7所示。
3.3、检测系统运行结果
统计完特征参数后, 再进行图像的分割, 根据特定参数, 判别零件加工质量是否合格, 运行结果如图8所示。
图6 原始图像
图7 处理后图像
图8 运行结果
4、结束语
本检测系统的调试结果表明, 该检测结果稳定、准确, 适用于零件加工质量的现场质检, 同时该检测系统易于操作、效果明显, 实现了基于BCB编程的检测系统开发, 具有广阔的市场前景。
参考文献
[1]欧振国.基于C++Builder环境下电力仓库管理系统的指纹识别与条形码技术[J].农村电气化, 2017 (2) :32~34.
[2]齐林宇, 唐晶, 魏文泽, 等.基于C++Builder的换热器性能试验平台测控软件的开发[J].计算机测量与控制, 2016, 24 (6) :139~142.