参考Halcon代码:
w:=3
h:=3
gen_image_const (Image, 'byte', w, h)
get_domain (Image, Domain)
get_region_points (Domain, Rows, Columns)
*将图像的所有灰度值都设置为1
grayvals:=[1,20,3,10,1,1,1,1,1]
set_grayval (Image, Rows, Columns, grayvals)
get_grayval (Image, Rows, Columns, Grayval1)
*图像相加,(图像1灰度+图像2灰度)*比例+偏移
add_image (Image, Image, ImageResult, 4, 50)
get_grayval (ImageResult, Rows, Columns, Grayval2)
*图像取反,使用255减去当前灰度值
invert_image (ImageResult, ImageInvert)
get_grayval (ImageInvert, Rows, Columns, Grayval3)
*灰度的非线性变换,提高低灰度值像素的对比度,降低高灰度值像素的对比度
log_image (ImageInvert, LogImage, 'e')
get_grayval (LogImage, Rows, Columns, Grayval4)
*降低低灰度值像素的对比度,提高高灰度值像素的对比度
exp_image (Image, ExpImage, 'e')
get_grayval (ExpImage, Rows, Columns, Grayval5)
*直方图均衡化
equ_histo_image (Image, ImageEquHisto)
get_grayval (ImageEquHisto, Rows, Columns, Grayval6)
1、线性灰度变换
1.1 图像相加
*图像相加,(图像1灰度+图像2灰度)*比例+偏移
add_image (Image, Image, ImageResult, 4, 50)
上面函数的意思是,将(图像1灰度+图像2灰度)*4+50,等于最终的图像灰度
1.2 图像取反
*图像取反,使用255减去当前灰度值
invert_image (ImageResult, ImageInvert)
2、非线性灰度变换
exp_image (Image, ExpImage, ‘e’)
特点:降低低灰度值像素的对比度,提高高灰度值像素的对比度,因为高灰度值对应X轴正方向的值,x增加相同值,y轴的值增加的更多。
log_image (ImageInvert, LogImage, ‘e’)
特点:提高低灰度值像素的对比度,降低高灰度值像素的对比度,因为高灰度值对应X轴正方向的值,x增加相同值,y轴的值增加的越少。
3、直方图变换
*直方图均衡化
equ_histo_image (Image, ImageEquHisto)
将图像的灰度范围按照一定的关系进行扩大,从而增强图像对比度
参考代码如下:
w:=3
h:=3
gen_image_const (Image, 'byte', w, h)
get_domain (Image, Domain)
get_region_points (Domain, Rows, Columns)
*将图像的所有灰度值都设置为1
grayvals:=[1,20,3,10,1,1,1,1,1]
set_grayval (Image, Rows, Columns, grayvals)
get_grayval (Image, Rows, Columns, Grayval1)
*图像相加,(图像1灰度+图像2灰度)*比例+偏移
add_image (Image, Image, ImageResult, 4, 50)
get_grayval (ImageResult, Rows, Columns, Grayval2)
*图像取反,使用255减去当前灰度值
invert_image (ImageResult, ImageInvert)
get_grayval (ImageInvert, Rows, Columns, Grayval3)
*灰度的非线性变换,提高低灰度值像素的对比度,降低高灰度值像素的对比度
log_image (ImageInvert, LogImage, 'e')
get_grayval (LogImage, Rows, Columns, Grayval4)
*降低低灰度值像素的对比度,提高高灰度值像素的对比度
exp_image (Image, ExpImage, 'e')
get_grayval (ExpImage, Rows, Columns, Grayval5)
*直方图均衡化
equ_histo_image (Image, ImageEquHisto)
get_grayval (ImageEquHisto, Rows, Columns, Grayval6
图像Image是均衡化前的灰度范围,蓝色柱状图显示如下,横坐标为灰度值,纵坐标为该灰度值的个数
均衡化后的图如下:
可以看出灰度范围变宽了
直方图工具在Halcon中是如下箭头所指的一个图标,当双击图像变量时,就能出现右上角所示的灰度直方图统计图。