您的当前位置:首页正文

基于图像处理和Matlab混合编程的自动聚焦技术及应用

2020-11-04 来源:好走旅游网


基于图像处理和Matlab混合编程的自动聚焦技术

及应用

摘 要: 自动聚焦技术是提高压痕直径测量系统测量精度、智能化和自动化的重要手段。本文介绍了采用图像处理法实现压痕直径测量系统的自动聚焦技术,其核心就是选择一个合适的图像清晰度评价函数。在研究了众多图像清晰度评价函数的基础上,提出了基于向量模型和改进DCT变换的图像清晰度评价函数,实验表明,本文提出的算法具有良好的单峰性、准确性、稳定性、可靠性和快速性。最后通过基于COM组件技术的Matlab与VB混合编程来保证算法实现和软件设计。

关键词: 自动聚焦;压痕直径测量;清晰度评价函数;混合编程

Auto-focus Technology and Application Based on Image processing and Mixed

Programming of Matlab

YANG Tao1) ZUO Yong2)

1)

(Unit 63898 of PLA, Jiyuan, 454650) 2) (Changcheng Institute of Metrology & Measurement, Beijing, 100095)

Abstract: Auto-focusing technique is an important method to improve the precision, intelligentization, automatization for the indentation diameter measurement. The paper introduces the auto-focus method of indentation diameter measurement based on image processing. Hard core of the Auto-focusing technique is the evaluation function's selection. Based on the auto-focusing algorithms investigation, image sharpness evaluation functions are built based on vector model and DCT. Using experiments, it is found out that the algorithms which are put forward in this paper have evident improvements in unimodality, accuracy, stability, reliability and rapidity. And software design based on the mixed programming between VB and MATLAB which basing on the COM technology is introduced in detail.

Keywords: auto-focus; indentation diameter measurement; evaluation functions; mixed programming

1 引言

在布氏硬度压痕直径测量系统中,聚焦的好坏直接影响测量结果。本文以国防军工计量十一五基础科研项目“硬度压痕直径测量”为应用背景,研究基于图像处理的自动聚焦技术以提高系统测量的准确性、智能化和自动化。基于图像处理的图像清晰度评价函数是自动聚焦技术的关键,目前大多数算法是基于时域的灰度熵法和灰度方差法构造的,但其聚焦结果并不十分稳定且运算速度慢。基于以上问题,本文提出了基于向量模型和改进的DCT变换的两种自动聚焦算法。

2 向量模型算法

图像相邻区域的灰度值变化越明显,图像越清

晰。边缘是图像上灰度值变化最为激烈的地方,因此可以采用梯度算子对图像进行计算,用邻域像素之间的灰度值差来表征图像梯度,在数学模型中即为微分算子。最简单的微分算子是Roberts算子,如图1所示,其表达式为式(1)。

F(i,j)F(i,j+1)F(i+1,j)F(i+1,j+1)

图1 Roberts算子示意图 Fig.1 Sketch map of Roberts operator

_________________________

第一作者简介: 杨涛(1981-),男(汉族),工程师,主要从事图像处理、图像分析与识别、图像测量等方面的研究。

G(i,j)|F(i,j)F(i,j1)||F(i,j)F(i1,j)|(1)

它从水平和竖直方向上来体现图像的梯度。但这样的算法并不十分稳定,特别是对于本文所涉及的离焦和聚焦图像差异较大的硬度压痕图像,如图2和图3所示。

图 2 离焦图像 Fig.2 Out-of-focus image

图 3 聚焦图像 Fig.3 Focusing image

由于系统的聚焦图像灰度级分布较离焦图像更为集中,有可能出现聚焦图像边缘梯度虽然较大,但不及离焦图像边缘梯度的累计误差产生的影响,造成图像清晰度自动判别困难。因此本文依据图像灰度变化,对算法进行了改进。由于系统采集的图像主体为圆形,在斜线的方向上的变化对结果有较大影响,因此应当同时考虑水平、竖直和交叉方向对像素变化的影响。

F(i,j)F(i,j+1)F(i+1,j)F(i+1,j+1)

图 4 像素邻域斜方向变化示意图 Fig.4 Sketch map of oblique direction

图4所示模型算法表达式为:

G(i,j)|F(i,j)F(i1,j1)||F(i1,j)F(i,j1)|(2)

改进的模型如图5所示。

F(i,j)F(i,j+1)F(i+1,j)F(i+1,j+1)

图 5 改进的向量模型 Fig.5 Modified gradient medol

将水平方向的梯度再与斜线方向的梯度作差,用于表征该像素在其邻域内的综合变化梯度,向量模型算法表达式为:

G(i,j)|F(i,j)F(i,j1)||F(i,j)F(i1,j)|2|F(i,j)F(i1,j1)|(3)

3 DCT变换算法

在图像的频域分析中,图像的清晰和聚焦的程度由图像高频分量的多少来决定:高频分量多则图像清晰;高频分量少则图像模糊。因此可以利用图像高频分量的多少作为图像清晰度的判定依据。最常见的变换有傅立叶变换(FFT)和离散余弦变换(DCT)。由于FFT变换是对复数进行处理,其计算程度较为复杂,计算所需的时间长。硬度压痕直径测量系统要进行大量的测量实验,电机位移在微米级,且压痕图像为2048×2048px,除去电机移动时间是固定的之外,必须提高图像处理的速度,FFT算法对于该系统显然是不适用的。因此采用变换简单且较为快速的DCT变换。图6显示了一幅图像进行DCT变换后的结果。DCT变换能聚集更多的能量,对高频分量有较好的分离能力,在清晰度评价函数中,分离并保留高频分量作为图像清晰度的评价尺度。

图 6 DCT变换 Fig. 6 DCT transfer

二维的DCT正变换如式(4)所示。

M1NF(u,v)c(u)c(v)x1)u(2y1)vx01f(x,y)cos(2y02Mcos2N(4)u0,1,M1;v0,1,N1 c(u)1/M(u0)

2/M(u1,2,M1)c(v)1/N(v0)

2/N(v1,2,N1)如果按照公式(4)编写程序,将包含一个四

重循环,这对于处理大分辨率图像是不能接受的。根据DCT变换的可分离性将二维DCT变换改写为两个一维DCT变换运算的等价形式。DCT变换公式如式(5)。

M1N1F(u,v)c(u)c(v)(x,y)cos(2x1)u(2y1)v x0fy02Mcos2N(5)求和符号分开写成:

M1F(u,v)c(u)cos(2x1)uN1(2y1)v

x02Mf(x,y)c(v)cosy02N(6)并规定M1C(2x1)u1c(u)cos,1C2c(v)x02MNcos(2y1)vy02N,

C1和C2是两个分别包含有两个不同域向量分量的二维矩阵。如果求C1和C2的循环按照u,x和v,y方式进行,那么C1和C2中的元素可以表达为C1(u,x)和C2(u,x),根据矩阵的内乘性法则,有:

F(u,v)C1f(x,y)C'2(7)

式(7)便是改进以后的DCT变换公式。 基于DCT变换的图像清晰度函数关注图像高频部分并将高频分量的多少作为判定图像清晰度的依据,因此算法如式(8)。

GNvmin(M,N)(8) vM|F(u,v)|uu式(8)中F(u,v)为DCT变换后的结果,(M,

N)为图像的分辨率。但本系统聚焦图像和离焦图像在亮度和灰度级方面相差很大,且图像的清晰度还与图像自身的亮度和灰度级有很大关系,故引入相对高频分量进行判别。由于直流分量在一定程度上反映了图像的整体亮度和总体信息,因而用高频分量和直流分量的比作为图像相对高频分量进行判别,得到的G的最大值所对应的图像即为样本图像中最清晰的。改进后的DCT算法如式(9)所示。

NM|F(u,v)|Gvu|F(1,1)|uvmin(M,N)(9)

4 实验研究

为了验证算法的稳定性和执行效率,实验所

用的图像样本均采集自硬度压痕直径测量系统,图像大小均为640×480px,分为三组进行。纵坐标为归一化的清晰度评价函数值,横坐标为图像

样本序号。 1向量模型算法0.9Roberts算法拉普拉斯算法FFT变换算法0.8DCT变换算法0.7值数函0.6价评0.5的化一0.4归0.30.20.10051015图像样本20253035 图 7 各种算法在第一组实验中的结果 Fig.7 Result of various algorithm on the 1st experiment 1向量模型算法0.9Roberts算法拉普拉斯算法0.8FFT变换算法DCT变换算法0.7值数函0.6价评0.5的化一0.4归0.30.20.10051015图像样本20253035 图 8 各种算法在第二组实验中的结果 Fig.8 Result of various algorithm on the 2nd experiment 10.90.8向量模型算法0.7Roberts算法值数拉普拉斯算法函0.6FFT变换算法价DCT变换算法评0.5的化一0.4归0.30.20.100510图像样本15202530 图 9 各种算法在第三组实验中的结果 Fig.9 Result of various algorithm on the 3rd experiment

从以上图表数据不难看出,改进后的向量模型算法在曲线的单峰性上较Roberts算法有了明显的提高,且在三组不同样本的测试结果中都具有较好的稳定性和重复性;而同样是基于边缘最大梯度计算的拉普拉斯算法在本系统的采样图像中表现不佳,且不稳定;基于FFT变换的能量-熵算法在本系统中无法对图像的清晰度进行评价;基于DCT变换的算法则在曲线的单峰性和稳定性方面都有出色的表现。

表 1 各种算法在三组实验中的执行时间 Tab.1 Executive time of various algorithm

算法 时间(s) Roberts 向量模型 拉普拉斯 DCT变换 FFT变换 实验1 5.6250 6.5930 24.5470 4.0940 71.9060 实验2 5.2030 7.3910 19.8910 4.2820 74.5630 实验3 4.5000 5.6560 20.0470 3.5000 62.9530 平均时间 0 .0511 0 .0655 0 .2150 0 .0396 0 .6981 算法的执行时间如表1所示,从平均时间看,

DCT变换算法在对单张图像进行评价时所需时间最短,只需0.0396s,而Roberts算法和向量模型算法次之;拉普拉斯算法和FFT变换算法时间最长,无法满足系统要求。

5 混合编程的实现

本系统通过VB调用Matlab制作的COM组件实现二者混合编程。VB语言简单,执行速度快,在图形友好界面设计和开发等方面具有独特的优势,但在数值计算方面能力欠佳。Matlab可以提供与矩阵有关的强大的数据处理和图形显示功能,但其界面功能弱。把VB和Matlab相结合,充分利用Matlab强大的数值分析运算功能和VB开发界面方便的特点进行混合编程能较好地满足系统要求。

编译组件添加M文件编译成功

图 10 COM组件编译界面

Fig.10 Compile interface of COM component

COM组件技术是有别于传统的一种新型软件架构,提供了一种可以共享二进制代码的工业标准。这种共享并不局限于某一种编程语言,它将编写的算法和自定义函数封装在COM组件中,通过Windows应用程序调用封装在组件中相应的函数,并由COM组件的标准接口把结果返回给应用程序。已编写好的m文件可以通过Matlab提供的COM组件编译器进行编译,编译成功后生成dll文件,该文件就是在VB编程中需要引用的COM组件,如图10所示。

在新建的VB工程中引用这个组件,如图11。

图11 VB工程引用COM组件示意

Fig.11 Sketch map of VB project quoteing the COM

componet

在form的初始化过程中创建对象,就可以像调用VB内置函数一样在程序需要的地方调用COM组件进行运算。组件的函数参数类型和输入顺序与Matlab中m文件构成是一致的。

6 工程应用实例

压痕直径测量系统是以视觉检测和图像处理技术为基础,结合X、Y两维坐标测量技术和Z向测量来自动识别焦面(物面)位置,实现自动对焦和测量,系统组成框图如图12所示。

图12 压痕直径测量系统

Fig.12 Measurement system of indentation diameter

本文所讨论的基于自动对焦技术设计的软

件对应于整个系统的控制模块,如图13。软件控制电机移动采集图像,并记录采集图像的位置,处理后挑选清晰度值最大的图像,控制电机移动至相应的位置进行采图,之后将采集的图像交由测量模块进行处理。

图 13 软件流程 Fig.13 Flow chart for software

软件界面如图14所示,分为4个区域,1为

CCD图像监视实时显示区域,2为主要的操作菜单按钮,3为滑块,用于控制电机上下移动,4为采集图像处理显示区域,用红色数字标定清晰度值最大的图像并放置首位,当点击区域4内的图像时,电机自动移到采集该图像所在的位置。

图 14 软件界面 Fig.14 Software interface

7 结 论 本文分别从图像灰度值变化和频谱分析两方面讨论了图像清晰度判定实现的途径,提出了基于图像灰度值变化梯度的向量模型算法和改进型的DCT变换算法,构造了清晰度评价函数,通过实验与其他几种常见的清晰度评价算法进行了对比,在压痕直径测量系统中,向量模型算法和DCT变换算法具有良好的曲线单峰性,并且计算时间短,评价结果更为准确、稳定和可靠,优于其他算法。通过Matlab与VB混合编程,充分利用MATLAB强大的数值分析运算功能和VB开发界面方便的特点,提高了代码的利用率和编程效率,在实际工程中得到了较好的应用。

参考文献(References)

1 董维国.深入浅出Matlab7.X混合编程.机械工业出版社:2005.10 2 苗敬利,兰娜,褚江川,张宴速,朱庆. 基于VB和Matlab混编程控制系统稳定性分析[J]. 微计算机信息,2006,22(8-1):246-247,26.

3 高赞,姜威,朱孔风. 基于最大梯度和阈值的自动聚焦算法[J]. 电子测量与仪器学报,2007,21 (5):49-54.

4 祝世平,房建成,周锐. 一种新的能量谱-熵图像聚焦评价函数[J].

北京航空航天大学学报,1999,25 (6):720-723.

5 麻恒阔,魏国强. 基于图像处理自动调焦方法的稳定性研究[J]. 航空精密制造技术,2007,43 (2):33-36.

因篇幅问题不能全部显示,请点此查看更多更全内容