当前位置:网站首页>Shape template matching based on Halcon learning [v] find_ cocoa_ packages_ max_ deformation. Hdev routine
Shape template matching based on Halcon learning [v] find_ cocoa_ packages_ max_ deformation. Hdev routine
2022-07-05 07:55:00 【BoomBiuBiu】
* This sample program demonstrates how to use shape based matching to find slightly deformed objects , Using parameter “ Maximum deformation ”;
* Please note that , To find deformed objects , Shape based matching can be applied using parameters “ Maximum deformation ” or - Apply locally deformable matching ;
* In this case , The task is to use shape based matching and parameters “ Maximum deformation ”. You can compare it with the example “ Find a deformable cocoa bag ”, Which uses local deformation matching to solve the same task . Shape based matching is significantly faster , But local deformable matching is more robust to different types of images
dev_update_off ()
* Read images
read_image (ModelImage, 'food/cocoa_package_model')
* close window
dev_close_window ()
* Open window adaptive image
dev_open_window_fit_image (ModelImage, 0, 0, -1, -1, WindowHandle)
* Set display font
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
First step : Create a template
* Create and display shape models
create_shape_model (ModelImage, 'auto', rad(-20), rad(40), 'auto', 'auto', 'use_polarity', [40,60,'auto_min_size'], 10, ModelID)
* Get the outline of the template
* notes : The position of the template will return to the origin
get_shape_model_contours (ModelContours, ModelID, 1)
* Get the row and column coordinates of the region
area_center (ModelImage, Area, Row, Column)
* Affine transformation
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_translate (HomMat2DIdentity, Row, Column, HomMat2DTranslate)
affine_trans_contour_xld (ModelContours, ContoursAffineTrans, HomMat2DTranslate)
* Set a series of parameters
dev_set_line_width (2)
dev_set_color ('yellow')
dev_display (ModelImage)
dev_display (ContoursAffineTrans)
disp_message (WindowHandle, 'Model image and contours', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
2、 Start template matching
* The picture has 13 Zhang
NumImages := 13
* To begin for loop
for Index := 1 to NumImages by 1
* Read the picture
read_image (Image, 'food/cocoa_packages_' + Index$'02')
* Reduce image resolution to improve speed
dev_resize_window_fit_image (Image, 0, 0, -1, -1)
* display picture
dev_display (Image)
disp_message (WindowHandle, 'Search...', 'window', 12, 12, 'black', 'true')
* Time before looking for template
count_seconds (S1)
* Find the deformation model in the search image
* And display the results
* Start looking for templates
find_shape_model (Image, ModelID, rad(-20), rad(40), 0.6, 0, 0.5, ['least_squares','max_deformation 16'], 0, 0.4, Row, Column, Angle, Score)
* Time after finding the template
count_seconds (S2)
Time := (S2 - S1) * 1000
* Set the color
dev_set_color ('green')
* Display the matching results
dev_display_shape_matching_results (ModelID, 'green', Row, Column, Angle, 1, 1, ModelID)
disp_message (WindowHandle, |Score| + ' matches found in ' + Time$'3.1f' + ' ms', 'window', 12, 12, 'black', 'true')
* Show the results below the picture
disp_message (WindowHandle, 'Score: ' + Score$'.2f', 'image', 350, Column - 80, 'black', 'true')
* If the index is smaller than the number of pictures , Continued to
if (Index < NumImages)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
endif
endfor


3、 Clear template
clear_shape_model (ModelID)notes : Here's how to find template parameters
* Start looking for templates
find_shape_model (Image, ModelID, rad(-20), rad(40), 0.6, 0, 0.5, ['least_squares','max_deformation 16'], 0, 0.4, Row, Column, Angle, Score)1、 In some applications , The accuracy requirement is very high . In these cases , The attitude of the model can be determined by least square adjustment . And “interpolation” contrary , This mode requires additional computation time . Different least squares methods can be used to adjust the mode ('least_squares','least_squares_high' and 'least_squares_very_high') To determine the accuracy of the minimum distance being searched . However , The higher the selection accuracy , The longer the sub-pixel extraction will take . Usually ,SubPixel Should be set to “interpolation”. If the least square adjustment is needed , You should choose “least_squares”, Because of this Will result in the best trade-off between runtime and accuracy .
2、 An object that is slightly deformed relative to the model , In some cases , Cannot be found or even if found , Accuracy is also very low . For such objects , It can be in the parameter SubPixel Maximum allowable object deformation for medium and extra frontal delivery . Deformation must be specified in pixels . This can be done by passing optional parameter values “max_deformation”, Followed by a 0 To 32 The integer value between ( In the same string ), This value specifies the maximum deformation . for example , If the shape of the object can deform as much as... Relative to the shape stored in the model 2 Pixel , Must be in SubPixel Pass values in “max_deformation 2”. Transfer value “max_deformation 0” when , When searching, the object must not be deformed , And not set “max_deformation” It does the same thing .
3、 Please note that , When the maximum deformation value is set high, it usually leads to an increase in running time . Besides , Select the higher the deformation value , The higher the risk of discovering instances of the wrong model . These two problems mainly appear when searching for small objects or objects with fine structures . This is because this kind of object will lose its characteristic shape when it is highly deformed , And feature shape is very important for powerful search . Also pay attention to , For higher deformations , If there is clutter near the object , The accuracy of partially occluded objects may be reduced . therefore , The maximum deformation should be as small as possible , Set it higher only when necessary .
边栏推荐
- Gradle composite construction
- LED display equipment records of the opening ceremony of the Beijing Winter Olympics
- Count and sort the occurrence times of specific fields through SQL statements
- Ads learning record (lna_atf54143)
- Acwing-宠物小精灵之收服-(多维01背包+正序倒序+两种形式dp求答案)
- [popular science] some interesting things that I don't know whether they are useful or not
- How to excavate and research ideas from the paper
- Opendrive record
- Day08 ternary operator extension operator character connector symbol priority
- RTOS in the development of STM32 single chip microcomputer
猜你喜欢

Basic embedded concepts

Extended application of single chip microcomputer-06 independent key

Consul installation

Beijing Winter Olympics opening ceremony display equipment record 3

如何将EasyCVR平台RTSP接入的设备数据迁移到EasyNVR中?

About the problem that MySQL connector net cannot be cleared in MySQL

UEFI development learning 5 - simple use of protocol

Could NOT find XXX (missing: XXX_LIBRARY XXX_DIR)

Factors affecting the quality of slip rings in production

UEFI development learning 6 - creation of protocol
随机推荐
Makefile application
Record the torch encountered by win10 cuda. is_ False problem in available()
Software designer: 03 database system
Define in and define out
Global and Chinese market of blackbody calibration source 2022-2028: Research Report on technology, participants, trends, market size and share
Embedded composition and route
mysql 盲注常见函数
Day01 markdown log entry tips
Shell脚本基本语法
Calibre garbled
PIL's image tool image reduction and splicing.
C#,数值计算(Numerical Recipes in C#),线性代数方程的求解,LU分解(LU Decomposition)源程序
Record the opening ceremony of Beijing Winter Olympics with display equipment
. Net service governance flow limiting middleware -fireflysoft RateLimit
Programming knowledge -- basis of C language
Function of static
Ads learning record (lna_atf54143)
万字详解八大排序 必读(代码+动图演示)
solver. Learning notes of prototxt file parameters
UEFI development learning 2 - running ovmf in QEMU