Halcon图像分割
auto_threshold(Image : Regions : Sigma : )* 对单通道图像做自动阈值(灰度直方图确定)分割Sigma:灰度直方图高斯光滑核(标准差),光滑消除噪声,并且分割区域
binary_threshold(Image : Region : Method, LightDark : UsedThreshold)* 使用二值阈值进行图像分割,用于背景色与前景色色差较为分明的图像,自动选取Sigma值进行高斯光滑处理,光滑直到灰度直方图只有一个最小值,这个最小值就是阈值;Method:分割方法,只适用于具有双峰直方图的图像。 smooth_histo方法提供了与bin_threshold操作符相同的功能。 max_separability方法倾向于为UsedThreshold确定较小的值。此外,它对距离光谱其余部分很远的柱状图中孤立的薄峰不太敏感,而且通常比smooth_his更快
char_threshold(Image, HistoRegion : Characters : Sigma, Percent : Threshold)* 为提取字符执行阈值分割,适用于不是很明显的出现极小值的情况(色差相对小)Image:用于提取字符的图像HistoRegion:要提取字符所在的Region,可以和Image一样Percent:灰度直方图中的灰度差的百分比此方法关键在于找到灰度直方图中的最大值,在最大值的左侧寻找关键阈值,Threshold所对应的灰度值频率不能大于最大值频率乘以(100.0-Persent)histogram[Threshold]*100.0 < histogram[maximum]*(100.0-Percent)
dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )* 动态局部阈值分割图像,根据像素周围的情况来决定阈值OrigImage:单通道原图像ThresholdImage:用于对比局部阈值的图像,通常是原始图像的平滑版本(如mean_image、binomial_filter、gauss_filter等)RegionDynThresh:阈值分割后获得的区域Offset:原图像与对比图像的像素值偏移量LightDark:决定选取暗边界还是亮边界以及相似边界 'light' OrigImage >= ThresholdImage + Offset'dark' OrigImage <= ThresholdImage - Offset'equal' ThresholdImage - Offset <= OrigImage <= ThresholdImage + Offset'not_equal' ThresholdImage - Offset > OrigImage or OrigImage > ThresholdImage + Offset
dual_threshold(Image : RegionCrossings : MinSize, MinGray, Threshold : )* 通过阈值分割有符号图像(灰度值有正负之分),通常前面伴随着如diff_of_gauss,sub_image等这样的算子使用
fast_threshold(Image : Region : MinGray, MaxGray, MinSize : )* 使用全局阈值对图像进行快速阈值化MinSize 要提取的对象的最小大小
hysteresis_threshold(Image : RegionHysteresis : Low, High, MaxLength : )* 对图像执行一个滞后阈值操作(由Canny引入)。在图像上执行一个滞后阈值操作(由Canny引入)。输入图像中灰度值大于或等于High的所有点立即被接受(“安全”点)。 相反,所有灰度值小于Low的点立即被拒绝。如果“潜在”点的路径连接到“安全”点,则接受在两个阈值之间有灰度值的“潜在”点,这些“潜在”点的长度最多为MaxLength点。
通过sub_image对两帧图像做差,得到图三的图像,其中中亮部分小车灰度值大于零,暗部分小车灰度值小于零,使用dual_threshold进行分割得到图四。
dev_close_window ()read_image (Traffic1, 'traffic1')read_image (Traffic2, 'traffic2')get_image_size (Traffic1, Width, Height)dev_open_window (0, 0, 2 * Width, 2 * Height, 'black', WindowHandle)convert_image_type (Traffic1, ImageConverted1, 'int2')convert_image_type (Traffic2, ImageConverted2, 'int2')sub_image (ImageConverted1, ImageConverted2, ImageSub, 1, 0)dual_threshold (ImageSub, RegionDiff, 500, 20, 10)
var_threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark : )* 根据掩膜局部均值和标准差来做与会分割MaskWidth,MaskHeight:掩膜大小,在此区域求均值方差StdDevScale:标准差因子AbsThreshold:像素值与均值对比的最差值StdDevScale>=0,则v(x,y) = max(StdDevScale * d(x,y), AbsThreshold)如果参数StdDevScale<0,则v(x,y) = min(StdDevScale * d(x,y), AbsThreshold)LightDark = 'light' 获得亮边界Image(x,y) >= mean(x,y) + v(x,y)LightDark = 'dark' 获得暗边界Image(x,y) < mean(x,y) - v(x,y)
赞 (0)