很多项目场景中,使用相机采集到原始图像后,都会对图像进行增强来增加检测区域的对比度,VM文档中对于【图像增强】模块中对比度的解释是
对比度
假定图像中的所有像素点的灰度值都在某个均值的附近波动。将波动的幅度变大,图像特征
的明暗差异也就更大。明暗差异增大后,更容易区分图像中的信息。
此处提及的“波动”的幅度,可通过下文参数配置中的对比度系数调整。
从说明中我们可以得到一个信息 均值
调整不同对比度系数得到一组图片
系数为10

系数50

系数500
1.系数 10、50 → 图像基本不变,说明 factor ≈ 0(接近 0 时 scale_image 不做增强)
2.系数 1000 → 图像几乎纯黑白,说明 factor 已经很大(≥ 10 就会把轻微的灰度差拉到饱和)
推断:
HALCON中scale_image的factor=1时图像不变,factor > 1 时增强对比度。
系数 50 → 图像还是灰的,说明 factor < 1,即 50/x < 1,所以 x > 50
系数 500 → 图像明显拉伸,说明 factor > 1,即 500/x > 1,所以 x < 500
x 在 50 到 500 之间,最自然的整十整百数就是 100。
验证:系数 100 → factor = 1(不变),系数 1000 → factor = 10(极度拉伸),完全符合所有观察结果。
依据上面的推断,我们进行验证测试
intensity(Image, Image, Mean, Deviation)
convert_image_type(Image, ImageReal, 'real')
* VisionMaster 系数到实际 factor 的映射
ContrastCoefficient := 50
ActualFactor := ContrastCoefficient / 100.0
scale_image(ImageReal, ImageScaled, ActualFactor, Mean * (1.0 - ActualFactor))
convert_image_type(ImageScaled, ImageResult, 'byte')
最终得到的ImageResult和VM中保持一致。