read_image ( Image, 'C: / Users/ 86173 / Desktop/ test/ 2. png')
get_image_size ( Image, Width, Height)
dev_close_window ( )
dev_open_window ( 0 , 0 , Width, Height, 'black' , WindowHandle)
dev_display ( Image)
threshold ( Image, Region, 128 , 255 )
connection ( Region, ConnectedRegions)
select_shape ( ConnectedRegions, SelectedRegions, 'rectangularity' , 'and' , 0.9 , 1 )
select_shape ( SelectedRegions, SelectedRegions1, 'area' , 'and' , 7500 , 99999 )
fill_up ( SelectedRegions1, RegionFillUp)
reduce_domain ( Image, RegionFillUp, ImageReduced)
threshold ( ImageReduced, Region1, 0 , 130 )
threshold_sub_pix ( ImageReduced, Border, 138 )
select_contours_xld ( Border, SelectedContours, 'contour_length' , 30 , 50 , - 0.5 , 0.5 )
count_obj ( SelectedContours, Number)
gen_region_contour_xld ( SelectedContours, Region2, 'filled' )
reduce_domain ( ImageReduced, Region2, ImageReduced1)
* * 阈值处理 ( Thresholding) * * 是图像处理中一项基本技术,用于将图像分割为不同的区域。在 HALCON 中,阈值处理函数 `threshold` 用于根据像素强度将图像中的像素分类为两类:
* * * 目标像素:* * 强度高于或等于阈值的像素。
* * * 背景像素:* * 强度低于阈值的像素。
* * 参数:* *
* * * Image:* * 输入图像。
* * * Result:* * 输出二值图像,其中目标像素设置为 1 ,背景像素设置为 0 。
* * * MinValue:* * 阈值。
* * 用法示例:* *
image : = ReadImage ( . . . ) ;
threshold : = 128 ;
result : = Threshold ( image, MinValue : = threshold) ;
这将创建一个二值图像 `result`,其中像素强度高于或等于 `threshold` 的像素设置为 1 ,其他像素设置为 0 。
* * 阈值处理类型:* *
HALCON 提供了几种不同的阈值处理类型:
* * * MinValue:* * 如上所述,根据给定的最小值进行阈值处理。
* * * MaxValue:* * 根据给定的最大值进行阈值处理。
* * * Otsu:* * 使用 Otsu 算法自动确定阈值。
* * * Hysteresis:* * 使用滞后阈值处理,其中一个阈值用于识别目标区域,另一个阈值用于识别边界区域。
* * * Adaptive:* * 根据图像的局部特征动态调整阈值。
* * 应用:* *
阈值处理在机器视觉中广泛用于:
* 分割图像中的对象。
* 提取图像中的特征。
* 消除图像噪声。
* 增强对比度。
通过选择合适的阈值处理类型和参数,可以优化图像处理结果以满足特定应用需求。
* * 连接 ( Connection) * * 在 HALCON 中指的是将不连接的区域或对象连接成一个或多个连通区域的过程。它通常用于图像处理和分析中,以简化图像数据并提取有意义的信息。
* * 函数:* *
HALCON 提供了几个用于连接的函数,包括:
* * * Connection ( Conn) :* * 将图像中所有连接的区域标记为不同的值。
* * * SelectShape ( SelShape) :* * 根据形状特征(例如面积、周长、形状系数等)选择连接的区域。
* * * RegionGrowing ( RegGrow) :* * 根据相似性标准(例如强度、颜色等)将相邻像素连接成区域。
* * 参数:* *
连接函数通常具有以下参数:
* * * Image:* * 输入图像。
* * * Result:* * 输出图像,其中连接的区域已标记或选择。
* * * Connectivity:* * 指定连接的类型,例如 4 邻域或 8 邻域。
* * * Select:* * 布尔型参数,指定是否选择符合特定标准的连接区域。
* * * Criterion:* * 用于选择连接区域的形状或相似性标准。
* * 用法示例:* *
image : = ReadImage ( . . . ) ;
connectivity : = 8 ;
result : = Connection ( image, Connectivity : = connectivity) ;
这将连接 `image` 中所有 8 邻域连接的区域,并将它们标记为不同的值存储在 `result` 中。
* * 应用:* *
连接在图像处理和分析中具有广泛的应用,包括:
* 分割图像中的对象。
* 提取图像中的连通组件(例如文本行、连通区域等)。
* 分析图像中的形状和模式。
* 减少图像噪声和杂散像素。
通过选择合适的连接类型和参数,可以优化图像处理结果以满足特定应用需求。
* * SelectShape* * 是 HALCON 中一个用于根据形状特征从连接区域中选择特定区域的函数。它通常用于图像处理和分析中,以提取感兴趣的区域或对象。
* * 函数:* *
SelectShape ( Image : Image, SelectedImage : Image, ShapeType : ShapeType, Criterion : Criterion, Min, Max)
* * 参数:* *
* * * Image:* * 输入图像,其中连接区域已经通过 `Connection` 函数标记。
* * * SelectedImage:* * 输出图像,其中满足指定形状特征的区域被选择(标记为 1 ),其他区域被标记为 0 。
* * * ShapeType:* * 指定要使用的形状特征,例如:
* `"area" `:面积
* `"perimeter" `:周长
* `"circularity" `:圆度
* `"rectangularity" `:矩形度
* * * Criterion:* * 指定选择标准,例如:
* `"and" `:同时满足最小值和最大值条件
* `"or" `:满足最小值或最大值条件之一
* * * Min:* * 最小形状特征值。
* * * Max:* * 最大形状特征值。
* * 用法示例:* *
image : = ReadImage ( . . . ) ;
connectivity : = 8 ;
connected_regions : = Connection ( image, Connectivity : = connectivity) ;
selected_regions : = SelectShape ( connected_regions, SelectedImage, ShapeType : = "area" , Criterion : = "and" ,
这将从 `connected_regions` 中选择面积在 100 到 500 之间的连接区域,并将它们标记在 `selected_regions` 中。
* * 应用:* *
`SelectShape` 在图像处理和分析中具有广泛的应用,包括:
* 提取特定形状或大小的物体。
* 分析图像中的形状分布。
* 分割图像中的文本行或其他连通组件。
* 识别和计数图像中的特定特征,例如圆形、矩形等。
通过选择合适的形状特征和选择标准,可以优化图像处理结果以满足特定应用需求。
* * ReduceDomain* * 是 HALCON 中一个用于减少图像处理操作作用区域的函数。它通常用于图像处理和分析中,以优化处理速度并提高结果精度。
* * 函数:* *
ReduceDomain ( Image : Image, Domain : Domain, ReducedImage : Image)
* * 参数:* *
* * * Image:* * 输入图像。
* * * Domain:* * 指定图像中要处理的区域,可以是矩形、椭圆或多边形。
* * * ReducedImage:* * 输出图像,其中只处理了指定区域内的像素,区域外的像素保持不变。
* * 用法示例:* *
image : = ReadImage ( . . . ) ;
domain : = Rectangle2 ( 100 , 100 , 200 , 200 ) ;
reduced_image : = ReduceDomain ( image, Domain : = domain) ;
这将创建一个只处理图像中 100 到 200 像素宽和高的矩形区域的 `reduced_image`。
* * 应用:* *
`ReduceDomain` 在图像处理和分析中具有广泛的应用,包括:
* 限制图像处理操作的区域,以提高处理速度和精度。
* 从图像中提取感兴趣区域(ROI)并对其进行更详细的分析。
* 消除图像边缘或其他不需要处理的区域的影响。
* 在图像的不同部分执行不同的处理操作。
通过定义合适的域,可以优化图像处理算法并获得更好的结果。
* * ThresholdSubPix* * 是 HALCON 中一个用于执行亚像素阈值化的函数。它通常用于图像处理和分析中,以更精确地分割图像中的对象或区域。
* * 函数:* *
ThresholdSubPix ( Image : Image, Thresh : double , ThreshSubPix : double , Inverted : bool, Result : Image)
* * 参数:* *
* * * Image:* * 输入图像。
* * * Thresh:* * 主阈值。
* * * ThreshSubPix:* * 亚像素阈值。
* * * Inverted:* * 如果为 true,则反转阈值(将大于阈值的像素标记为 1 )。
* * * Result:* * 输出图像,其中像素被二值化为 0 或 1 ,具体取决于它们是否满足阈值条件。
* * 用法示例:* *
image : = ReadImage ( . . . ) ;
thresh : = 128 ;
thresh_sub_pix : = 0.5 ;
result : = ThresholdSubPix ( image, Thresh : = thresh, ThreshSubPix : = thresh_sub_pix, Inverted : = false) ;
这将创建一个二值图像 `result`,其中像素值大于或等于 128.5 被标记为 1 ,否则标记为 0 。
* * 应用:* *
`ThresholdSubPix` 在图像处理和分析中具有广泛的应用,包括:
* 提取图像中的对象或区域,具有更高的精度。
* 分割具有平滑边缘或渐进变化的图像。
* 提高图像处理算法的鲁棒性,使其对噪声和光照变化不那么敏感。
* 检测图像中的细小特征或细节。
通过使用亚像素阈值化,可以获得比传统阈值化更精确和可靠的结果。
* * CountObj* * 是 HALCON 中一个用于计算图像中连通区域数量的函数。它通常用于图像处理和分析中,以检测和计数图像中的对象或区域。
* * 函数:* *
CountObj ( Regions : Region, Connected : int , Result : integer)
* * 参数:* *
* * * Regions:* * 输入区域。
* * * Connected:* * 连通性类型,可以是 4 或 8 ,分别表示 4 - 连通或 8 - 连通。
* * * Result:* * 输出变量,其中存储检测到的对象数量。
* * 用法示例:* *
image : = ReadImage ( . . . ) ;
regions : = BinarizeImage ( image, Thresh : = 128 ) ;
num_objects : = CountObj ( Regions : = regions, Connected : = 8 ) ;
这将创建一个 `num_objects` 变量,其中存储图像中检测到的 8 - 连通对象的总数。
* * 应用:* *
`CountObj` 在图像处理和分析中具有广泛的应用,包括:
* 检测和计数图像中的对象或区域。
* 分析图像的连通性。
* 提取图像中对象的统计信息。
* 作为其他图像处理算法(例如对象标记或测量)的输入。
通过使用 `CountObj`,可以轻松高效地确定图像中连通区域的数量,这对于各种应用非常有用。