在为LabVIEW中如何实现自动对焦而发愁?龙哥教你轻松搞定

有很多小伙伴在问:LabVIEW中有没有自动对焦的函数,labview视觉中摄像头对焦能否实现自动调节?

如何评价一副图像的清晰度?可以通过以下算法定义并计算:

Tenengrad梯度方法利用Sobel算子分别计算水平和垂直方向的梯度,同一场景下梯度值越高,图像越清晰。以下是具体实现,这里衡量的指标是经过Sobel算子处理后的图像的平均灰度值,值越大,代表图像越清晰。

那么接下来就是如何编程来实现了:

①opencv实现

opencv中正好有相关函数可以直接实现:

Mat imageSobel;

Sobel(img, imageSobel, CV_16U, 1, 1);

//图像的平均灰度

double meanValue = 0.0;

meanValue = mean(imageSobel)[0];

实际上就是sobel算子的平均灰度值

接下来封装成dll,由labview调用即可:

②labview自带函数实现:

labview自带sobel算子,提取sobel后图像灰度值会自动归一化到0-255,然后提取数组,对数组求均值即可:

最后比较两种方法的清晰度结果,看看是否能反应出图像的清晰度变化,以下是3张原图,可以看出,清晰度依次降低,opencv和labview调用后清晰度结果对应如下图:

可以看出,虽然labview和opencv得到的数值不一样大,但是3张图的清晰度值变化趋势是一样的,具体改算法的有效性还需要大家自行测试。

需要源码的朋友,请转发朋友圈并截图发给售后小姐姐获取源码下载链接。

(0)

相关推荐