在为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)