Halcon中增强图像的对比度也是预处理中的一环,主要有如下方式:
1. 灰度变换
a. scale_image
原理:可以理解为用一个模板扫描图像中的每一个像素,模板中像素最大值和最小值的差作为模板中心像素点的值。
作用:拉开图像的对比度,让图像中黑的地方更黑,亮的地方更亮。
scale_image: g’ := g * Mult + Add g为当前的灰度值,Mult 为所乘的系数,Add为加的偏移值,由公式可以看出用 scale_image来处理图像是个线性变化,会让黑的地方更黑,亮的地方更亮。
b. scale_image_max:将灰度值拉伸到0-255
2. 增强图像对比度
a. emphasize
增强图像的高频区域(边缘和拐角),使图像看起来更清晰。
res := round((orig - mean) * Factor) + orig
b. illuminate
增强图像的高频区域(边缘和拐角),使图像看起来更清晰.
new = round ( (val - mean) * Factor + orig )
3. 直方图均衡化
a. equ_histo_image
增强图像的对比度,采用直方图的方式
4.灰度图像形态学
a. gray_opening
结构元素在图像中滑,灰度值最高的值作为新值,有使图像变亮的作用。
b.equ_histo_image
结构元素在图像中滑,灰度值最低的值作为新值,有使图像变暗的作用。
c. gray_range_rect
用一个矩形结构元素在图像中滑动,新值 = (矩形中最大的)灰度值-(矩形中最大的)最小的灰度值
5.非线性灰度变换
log_image
pow_image
****对图像进行线性灰度变换******* dev_clear_window () dev_close_window () read_image (Image, 'D:/org_R.jpg') get_image_size (Image, Width, Height) dev_open_window (0, 0, Width, Height, 'black', WindowHandle) dev_display (Image) *灰度转化 rgb1_to_gray (Image, GrayImage) GrayImage_1:= GrayImage *********************************************************************** *计算图像的灰度值分布 gray_histo (GrayImage, GrayImage, AbsoluteHisto, RelativeHisto) *获得灰度直方图 gen_region_histo (Region, AbsoluteHisto, 255, 255, 1) *********************************************************************** dev_close_window () dev_open_window (0, 0, Width, Height, 'black', WindowHandle) dev_display (Image) ************************************************************************ *直方图均衡化 equ_histo_image (GrayImage_1, ImageEquHisto) gray_histo (Region, ImageEquHisto, AbsoluteHisto1, RelativeHisto1) *获得灰度直方图 gen_region_histo (Region1, AbsoluteHisto1, 255, 255, 1) ************************************************************************ *增强图像的高频区域(边缘和拐角),使图像看起来更清晰 illuminate (GrayImage_1, ImageIlluminate, Width, Height, 1) *增强图像的高频区域(边缘和拐角),使图像看起来更清晰 emphasize (GrayImage_1, ImageEmphasize, Width, Height, 1) *灰度变换 scale_image (GrayImage_1, ImageScaled, 0.9, 10)
---
推荐阅读
https://blog.csdn.net/weixin_43197380/article/details/91129854