【可变性模板匹配】

该示例程序演示了如何使用局部可变形匹配方法来检测和定位变形的MVTec徽标。首先,创建了一个模型图像,然后通过人工变形模拟物体的变化。接着,使用‘use_polarity’作为度量创建局部可变形模型,并在变形的搜索图像中找到模型,展示校正后的匹配结果和差异。
摘要由CSDN通过智能技术生成

文章目录


*这个示例程序展示了如何使用局部可变形匹配来查找变形的对象。在这个例子中,物体的变形是由模拟的棉塞印刷效果产生的。
*准备MVTec徽标的局部可变形模型。
dev_update_off ()
Width := 256
Height := 256

create_mvtec_logo_broadened (LogoImage, 0, 200, Width, Height)
decompose3 (LogoImage, ImageR, ImageG, ImageB)

WindowWidth := 2 * Width
WindowHeight := 2 * Height
Smoothness := 21
dev_close_window ()
dev_open_window (0, 0, WindowWidth, WindowHeight, 'black', WindowHandle1)
dev_display (LogoImage)

set_display_font (WindowHandle1, 16, 'mono', 'true', 'false')
disp_message (WindowHandle1, 'Model image', 'window', 12, 12, 'black', 'true')
rgb1_to_gray (LogoImage, GrayImage)
gen_rectangle1 (Rectangle, 82, 17, 177, 235)
reduce_domain (GrayImage, Rectangle, ImageReduced)

**提取矩形模板域,稍后将与搜索图像的校正版本进行比较。
crop_domain (ImageReduced, ImagePart)

*使用use_polarity作为度量创建局部可变形模型。
create_local_deformable_model (ImageReduced, 'auto', [], [], 'auto', 1, [], 'auto', 1, [], 'auto', 'none', 'use_polarity', 'auto', 'auto', [], [], ModelID)
get_deformable_model_contours (ModelContours, ModelID, 1)
disp_continue_message (WindowHandle1, 'black', 'true')
stop ()

*打开一个窗口,用于将校正后的匹配与裁剪后的模型图像进行比较。
get_image_size (ImagePart, WidthPart, HeightPart)
WindowWidthPart := 2 * WidthPart
WindowHeightPart := 2 * HeightPart
dev_open_window (0, WindowWidth + 8, WindowWidthPart * 1.5, WindowHeightPart * 1.5, 'black', WindowHandle2)
set_display_font (WindowHandle2, 16, 'mono', 'true', 'false')
*出于演示的目的,匹配被应用于搜索显示具有增加的人工变形量的标志的图像。
gen_random_vector_field (VectorFieldFrom, Width, Height, 0, 2)
vector_field_to_real (VectorFieldFrom, VFFromRow, VFFromCol)
for Index := 1 to 5 by 1
    gen_random_vector_field (VectorFieldTo, Width, Height, 40, 2)
    vector_field_to_real (VectorFieldTo, VFToRow, VFToCol)
    for T := 0.0 to 0.95 by 0.05
        
        *使用人工变形创建搜索图像。
        create_deformed_mvtec_logo (VFFromRow, VFFromCol, VFToRow, VFToCol, ImageR, ImageG, ImageB, SearchImage, T)
        rgb1_to_gray (SearchImage, GrayImage)
        
        *在变形的搜索图像中找到模型。因此,应该返回校正后的图像、相应的矢量场以及找到的模型实例的变形轮廓。
        count_seconds (Seconds1)
        find_local_deformable_model (GrayImage, ImageRectified, VectorField, DeformedContours, ModelID, 0, 0, 1, 1, 1, 1, 0.5, 1, 1, 4, 0.9, ['image_rectified','vector_field','deformed_contours'], ['deformation_smoothness','expand_border','subpixel'], [Smoothness,0,1], Score, Row, Column)
        count_seconds (Seconds2)
        Time := 1000.0 * (Seconds2 - Seconds1)
        dev_set_window (WindowHandle1)
        
        *对于可视化,我们使用返回的矢量场,并在搜索图像中生成变形网格。
        gen_warped_mesh (VectorField, WarpedMesh, 10)
        dev_display (SearchImage)
        dev_set_color ('yellow')
        dev_set_line_width (1)
        dev_display (WarpedMesh)
        dev_set_line_width (3)
        dev_set_color ('green')
        dev_display (DeformedContours)
        disp_message (WindowHandle1, 'Match found in ' + Time$'3.1f' + ' ms (Score: ' + Score$'3.2f' + ')', 'window', 12, 12, 'black', 'true')
        dev_set_window (WindowHandle2)
        
        *为了可视化校正的搜索图像和原始模型区域之间的差异,使用绝对差异。
        abs_diff_image (ImagePart, ImageRectified, ImageAbsDiff1, 1)
        dev_display (ImageAbsDiff1)
        disp_message (WindowHandle2, 'Difference between model image and rectified image', 'window', 12, 12, 'black', 'true')
        
        *可选地,可以通过使用光流来进一步减小经矫正的搜索图像和原始模型区域之间的差异(取消对以下行的注释)*        optical_flow_mg (ImagePart, ImageRectified, VectorField1, 'clg', 0.8, 1, 20, 5, 'default_parameters', 'very_accurate')
*        unwarp_image_vector_field (ImageRectified, VectorField1, ImageUnwarped)
*        vector_field_to_real (VectorField1, RowField, ColField)
*        vector_field_length (VectorField1, Length, 'length')
*        abs_diff_image (ImagePart, ImageUnwarped, ImageAbsDiff, 1)
*        stop ()
        
    endfor
    copy_obj (VFToRow, VFFromRow, 1, 1)
    copy_obj (VFToCol, VFFromCol, 1, 1)
endfor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【网络星空】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值