鸟叔《HALCON工业应用实用教程》学习笔记
灰度直方图
定义
灰度直方图是灰度值的函数,描述了图像中具有该灰度值的像素的个数,横坐标是像素的灰度级,纵坐标是该灰度值出现的频率或这个灰度值像素的个数。
算子
gray_histo(Regions, Image : : : AbsoluteHisto, RelativeHisto)
gen_region_histo( : Region : Histogram, Row, Column, Scale : )
histo_to_thresh( : : Histogramm, Sigma : MinThresh, MaxThresh)
示例
read_image (Image, 'fabrik')
*生成直方图
gray_histo (Image, Image, AbsoluteHisto, RelativeHisto)
*生成直方图区域
gen_region_histo (Region, AbsoluteHisto, 255, 255, 1)
*根据直方图求分割阈值 该函数先进行高斯平滑
histo_to_thresh (AbsoluteHisto, 2, MinThresh, MaxThresh)
*二值化
threshold (Image, Region1, 128, 255)
灰度的线性变换
算子
scale_image(Image : ImageScaled : Mult, Add : )
scale_image_max(Image : ImageScaleMax : : )
示例
read_image (Image, 'mvtec_logo.png')
*求图像最小灰度值和最大灰度值
min_max_gray (Image, Image, 0, Min, Max, Range)
*拉伸灰度值
scale_image_max (Image, ImageScaleMax)
*求图像最小灰度值和最大灰度值
min_max_gray (ImageScaleMax, ImageScaleMax, 0, Min, Max, Range)
使用这种方法,可以将一个灰度值分布区域拉伸到0—255之间,可以提高图像的对比度,从而使目标物与背景区分开来。
直方图均衡化
算子
equ_histo_image(Image : ImageEquHisto : : )
equ_histo_image其实也是直方图线性化,只不过它是把出现频率比较高的灰度值在0—255之间均匀分布开,所以结果会增加对比度,而且程度比scale_image_max更高,因为出现频率越高的灰度值,间隔约远。我认为当图像的出现频率高的灰度值集中在一个小区域内,但是整体的灰度值又铺满了所有范围,此时使用equ_histo_image更好。
示例
read_image (Vessel, 'vessel')
equ_histo_image (Vessel, ImageEquHisto)
图像翻转
算子
invert_image(Image : ImageInvert : : )
示例
read_image (Image, 'mvtec_logo.png')
invert_image (Image, ImageInvert)
图像加、减、乘、除
算子
add_image(Image1, Image2 : ImageResult : Mult, Add : )
g’ := (g1 + g2) * Mult + Add
sub_image(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )
g’ := (g1 - g2) * Mult + Add
mult_image(Image1, Image2 : ImageResult : Mult, Add : )
g’ := (g1* g2) * Mult + Add
div_image(Image1, Image2 : ImageResult : Mult, Add : )
g’ := (g1 /g2) * Mult + Add
图像绝对差异处理
算子
abs_diff_image(Image1, Image2 : ImageAbsDiff : Mult : )
g’ = |(g1 - g2)| * Mult
图像最大值处理、最小值处理
比较两幅图像每个像素的灰度值大小,并将较大/较小灰度值作为新图像该像素点的灰度值。
算子
max_image(Image1, Image2 : ImageMax : : )
min_image(Image1, Image2 : ImageMin : : )