测试效果
原理简介
harris_binomial是Harris角点检测算法的一种变体或优化版本,它在保持Harris算法基本思想的基础上,通过引入二项式近似来加速计算过程。以下是对harris_binomial算法的详细解释,包括其特点、参数设置以及与其他Harris算法的比较:
一、算法特点
- 加速计算:
-
- harris_binomial通过采用二项式近似来简化Harris算法中的某些计算步骤,从而显著提高了算法的执行速度。
- 保持基本特性:
-
- 尽管在计算上进行了优化,但harris_binomial仍然保留了Harris算法的基本特性,如尺度不变性和旋转不变性(在一定程度上)。
- 适用场景:
-
- 当需要对大量图像数据进行快速角点检测时,harris_binomial是一个很好的选择。它特别适用于实时处理或计算资源有限的环境。
二、参数设置
在Halcon等图像处理软件中,harris_binomial算子通常具有一系列可配置的参数,这些参数用于调整算法的性能和结果。以下是一些常见的参数及其说明(以Halcon为例):
- mask_size_grd:梯度计算时使用的掩模大小。这个参数影响梯度计算的精度和计算量。
- mask_size_smooth:高斯平滑时使用的掩模大小。平滑操作有助于消除噪声,但过大的掩模可能会导致细节丢失。
- alpha:角点响应函数中的加权系数。它用于平衡Ix2和Iy2在R值计算中的贡献。
- threshold:角点检测的阈值。只有当R值大于此阈值时,像素点才会被视为角点。
请注意,以上参数仅为示例,并非所有实现都会包含这些参数。在实际应用中,应根据具体需求和图像特性来选择合适的参数设置。
三、与其他Harris算法的比较
- 与原始Harris算法的比较:
-
- harris_binomial在速度上优于原始Harris算法,因为它采用了二项式近似来简化计算。然而,在某些情况下,它可能会牺牲一些检测精度来换取速度提升。
- 与其他优化算法的比较:
-
- 除了harris_binomial外,还有其他一些优化算法如Shi-Tomasi角点检测器等。这些算法在保持Harris算法基本思想的同时,也通过不同的方式来提高计算效率或检测精度。选择哪种算法取决于具体的应用场景和需求。
四、总结
harris_binomial是一种在保持Harris算法基本特性的基础上,通过引入二项式近似来加速计算过程的优化算法。它适用于需要快速角点检测的场景,并在Halcon等图像处理软件中得到了广泛应用。在实际应用中,应根据具体需求和图像特性来选择合适的参数设置和算法实现。
测试代码
* This program illustrates how to use the Harris Binomial point detector.
*
read_image (Image, 'fabrik')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, [500,800], [400,800], WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
*
MaskSizeGrd := 5
MaskSizeSmooth := 15
Alpha := 0.04
Threshold := 1000
Subpix := 'on'
*
count_seconds (S1)
points_harris_binomial (Image, MaskSizeGrd, MaskSizeSmooth, Alpha, Threshold, Subpix, Row, Column)
count_seconds (S2)
gen_cross_contour_xld (Cross, Row, Column, 6, rad(45))
*
dev_display (Image)
dev_set_color ('green')
dev_display (Cross)
disp_message (WindowHandle, |Row| + ' points found in ' + (1000 * (S2 - S1))$'.3' + ' ms', 'window', 12, 12, 'black', 'true')