Baumer工业相机堡盟万兆网相机如何在联合Halcon中对图像进行平场校正功能(Halcon)

简介: Baumer工业相机堡盟万兆网相机如何在联合Halcon中对图像进行平场校正功能(Halcon)

项目场景

Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。  


Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。


Baumer工业相机的平场校正功能可以通过Baume相机软件Camera Explorer完成,也可以通过Baumer BGAPI SDK里的函数功能完成,可以参考上篇文章,如下所示:


Baumer工业相机堡盟相机VLXT-90M.I如何做平场校正阴影校正:消除图像明暗不均匀现象_格林威的博客-CSDN博客


本次分享为在一般环境下直接使用Halcon的环境库来进行平场校正,在图像处理层级进行图像的平场校正。


技术背景

一般情形下,由于光线不均匀、镜头中心和边缘响应不一致,相机sensor固定噪声和响应不均匀噪声等因素导致图像出现边缘和中心像素差异较大的情况。


平场校正算法介绍:一般用FPN暗场校正和PRNU明场校正进行,平场校正就是以整帧图像的均值或者中值为目标图像,根据每个像素的特性不同,以响应增益gain为系数K和offset偏置B,对每个像素进行校正,从而使得整幅图像看起来很均匀平滑,当然,为了简化计算,节省资源,也可以使用多个相邻的像素使用同一组校准参数。


校正时,可以采用多段校正法将响应曲线分段校正,而更多的是简单暴力的两点校正法,也就是看成线性响应。


在暗场校正中,可以得到均值Vavgb,像素值Vinb;


在明场校正中,可以得到均值Vavgr,像素值Vinr;


可以得到增益响应系数K=(Vavgr-Vavgb)/(Vinr-Vinb);


偏置B=Vavgb-Vinb*K;


将n个像素的每一个像素点的K[n]和B[n]写入一个ram表中,当读取一帧图像时,对每一个像素进行校正Vout=Vin*K+B;


正常情况下,平场校正的功能都会在相机的固定参数中可以写入,从而可以在相机内部直接输入平场校正后图片,本次是采用Halcon的图像处理功能在图像预处理这部分进行平场校正。


代码分析

一、对图像进行RGB三通道的平场校正


例如相机出现图片如下图所示:


22.png


可以看出图像边缘和中心的R通道的灰度值差异较大,而打光环境却又是正常均衡的。


下面使用Halcon对三通道RGB通道进行整体的平场校正

* 读取待处理图像
read_image (test, 'C:/Users/Administrator/Desktop/平场校正/20201230093414113.png')
* rgb通道分离
decompose3(test, image_R, image_G, image_B)
* 均值滤波R通道图像
mean_image (image_R, MeanR, 9, 9)
* 增强图像对比度
emphasize (MeanR, em1, 5, 5, 1.5)
* 亮度调整
illuminate (em1, ImageI1, 20, 20, 0.55)
* 均值滤波G通道图像
mean_image (image_G, MeanG, 9, 9)
* 增强图像对比度
emphasize (MeanG, em2, 5, 5, 1.5)
* 亮度调整
illuminate (em2, ImageI2, 20, 20, 0.55)
* 均值滤波B通道图像
mean_image (image_B, MeanB, 9, 9)
* 增强图像对比度
emphasize (MeanB, em3, 5, 5, 1.5)
* 亮度调整
illuminate (em3, ImageI3, 20, 20, 0.55)
* 高斯滤波处理
gauss_filter (ImageI1, ImageGauss1, 5)
gauss_filter (ImageI2, ImageGauss2, 5)
gauss_filter (ImageI3, ImageGauss3, 5)
* 增强图像对比度
emphasize (ImageGauss1, emR, 5, 5, 1.5)
emphasize (ImageGauss2, emG, 5, 5, 1.5)
emphasize (ImageGauss3, emB, 5, 5, 1.5)
* 通道合并
compose3 (emR, emG, emB, MultiChannelImage)


最终效果如下所示:


11.png


图像整体偏暗,但是边缘和中心灰度差变的比较小,从而实现相对的均衡性。


二、对图像进行R通道的平场校正


一般情况下,对应产品我们只采用R通道的图像的校正,保留GB通道的一些细节,从而既满足平场校正的均匀性,又满足了图像细节的完整性。


代码如下图所示:

* 读取待处理图像
read_image (test, 'C:/Users/Administrator/Desktop/平场校正/20201230093414113.png')
* rgb通道分离
decompose3(test, image_R, image_G, image_B)
* 高斯滤波处理
gauss_filter (image_R, ImageGauss, 5)
* 增强图像对比度
scale_image_max (ImageGauss, ImageScaleMax)
*emphasize (ImageGauss, em1, 5, 5, 1.5)
* 照亮图像
illuminate (ImageScaleMax, ImageI1, 20, 20, 0.55)
* 直方图均衡化
equ_histo_image (image_G, ImageEquHisto2)
equ_histo_image (image_B, ImageEquHisto3)
* 通道合并
compose3 (ImageI1, ImageEquHisto2, ImageEquHisto3, MultiChannelImage)
* 显示图像
dev_display(MultiChannelImage)

使用图像算法进行平场校正注意点

在图像预处理的方式中,有多种方法都可以一定程度上实现平场校正功能,但是需要确认到工业相机的采图环境或者图像采集的细节等待问题,需要灵活的使用图像算法来保证图像经过处理后的均衡性和完整性。


同样,在Halcon里,我们还可以使用均值对减方法来进行平场矫正功能。

decompose3 (Image, Image1, Image2, Image3)
add_image (Image1, ImageSubR, ImageResultR, 1, -30)
add_image (Image2, ImageSubG, ImageResultG, 1, -30)
add_image (Image3, ImageSubB, ImageResultB, 1, -30)

平场校正的行业应用

工业相机的平场校正功能是许多涉及图像分析和处理的工业应用中的一个基本功能。该功能可以纠正整个图像的光照变化,这可能导致测量和分析的不准确。


以下是工业相机平场校正功能的一些工业应用:


1. 质量控制和检查: 具有平场校正功能的工业相机可以帮助检测工业产品的缺陷和变化,如表面光洁度、材料厚度和颜色一致性。


2. 医学成像: 平场校正用于校正医疗成像应用中的照明变化,如X射线成像、计算机断层扫描(CT)和磁共振成像(MRI)。


3. 材料科学: 平场校正用于分析材料的结构和属性,如金属、陶瓷和聚合物,通过消除照明的变化。


4. 航空航天和国防: 相机平场校正可以确保在航空航天和国防应用中准确检测和识别目标和物体,如卫星图像、侦察和导弹制导。


总的来说,工业相机平场校正功能在许多需要准确和可靠的图像分析和处理的工业应用中至关重要。


目录
相关文章
|
4天前
|
存储 新制造 开发工具
Baumer工业相机堡盟工业相机如何使用OpenCV实现相机图像的显示(C++)
Baumer工业相机堡盟工业相机如何使用OpenCV实现相机图像的显示(C++)
31 0
|
4天前
|
存储 新制造 C#
Baumer工业相机堡盟工业相机如何使用OpenCV实现相机图像的显示(C#)
Baumer工业相机堡盟工业相机如何使用OpenCV实现相机图像的显示(C#)
32 1
|
9月前
|
算法 安全 机器人
Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCVSharp实现图像的拉普拉斯算法增强(C#)
Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCVSharp实现图像的拉普拉斯算法增强(C#)
97 0
|
9月前
|
算法 安全 机器人
Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCVSharp实现图像的伽马变换算法增强(C#)
Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCVSharp实现图像的伽马变换算法增强(C#)
60 0
|
9月前
|
存储 数据采集 机器人
Baumer万兆网工业相机堡盟相机VLXT-28M.I如何做全帧率图像存储到本地
Baumer万兆网工业相机堡盟相机VLXT-28M.I如何做全帧率图像存储到本地
62 0
|
9月前
|
算法 安全 机器人
Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的直方图算法增强(C#)
Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的直方图算法增强(C#)
62 0
|
9月前
|
算法 安全 机器人
Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCV实现图像的直方图算法增强(C++)
Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCV实现图像的直方图算法增强(C++)
44 0
|
9月前
|
算法 安全 机器人
Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的线性灰度变换ScaleImage算法增强(C#)
Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的线性灰度变换ScaleImage算法增强(C#)
56 0
|
9月前
|
算法 安全 机器人
Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的线性灰度变换Emphasize 算法增强(C#)
Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的线性灰度变换Emphasize 算法增强(C#)
54 0
|
9月前
|
算法 安全 机器人
Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCVSharp实现图像的直方图算法增强(C#)
Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCVSharp实现图像的直方图算法增强(C#)
69 0