在一系列图像中搜索局部可变形模型

dev_update_off ()
read_image (ModelImage, ‘food/cocoa_package_model’)
dev_close_window ()
dev_open_window_fit_image (ModelImage, 0, 0, -1, -1, WindowHandle)
set_display_font (WindowHandle, 16, ‘mono’, ‘true’, ‘false’)
*

  • Create and display the local deformable model
    create_local_deformable_model (ModelImage, ‘auto’, rad(-15), rad(30), ‘auto’, 1, 1, ‘auto’, 1, 1, ‘auto’, ‘none’, ‘use_polarity’, [40,60], ‘auto’, [], [], ModelID)
    get_deformable_model_contours (ModelContours, ModelID, 1)
    area_center (ModelImage, Area, Row, Column)
    hom_mat2d_identity (HomMat2DIdentity)
    hom_mat2d_translate (HomMat2DIdentity, Row, Column, HomMat2DTranslate)
    affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2DTranslate)
    dev_set_line_width (2)
    dev_set_color (‘yellow’)
    dev_display (ModelImage)
    dev_display (ContoursAffinTrans)
    disp_message (WindowHandle, ‘Model image and contours’, ‘window’, 12, 12, ‘black’, ‘true’)
    disp_continue_message (WindowHandle, ‘black’, ‘true’)
    stop ()

Smoothness := 19
NumImages := 13
for Index := 1 to NumImages by 1
read_image (Image, ‘food/cocoa_packages_’ + Index ′ 0 2 ′ ) d e v r e s i z e w i n d o w f i t i m a g e ( I m a g e , 0 , 0 , − 1 , − 1 ) d e v d i s p l a y ( I m a g e ) d i s p m e s s a g e ( W i n d o w H a n d l e , ′ S e a r c h . . . ′ , ′ w i n d o w ′ , 12 , 12 , ′ b l a c k ′ , ′ t r u e ′ ) c o u n t s e c o n d s ( S 1 ) ∗ F i n d t h e m o d e l i n t h e d e f o r m e d s e a r c h i m a g e . ∗ A s r e s u l t , t h e r e c t i f i e d i m a g e , t h e r e s p e c t i v e ∗ v e c t o r f i e l d , a n d t h e f o u n d c o n t o u r s a r e q u e r i e d . f i n d l o c a l d e f o r m a b l e m o d e l ( I m a g e , I m a g e R e c t i f i e d , V e c t o r F i e l d , D e f o r m e d C o n t o u r s , M o d e l I D , r a d ( − 14 ) , r a d ( 28 ) , 1 , 1 , 1 , 1 , 0.78 , 0 , 0 , 0 , 0.45 , [ ′ i m a g e r e c t i f i e d ′ , ′ v e c t o r f i e l d ′ , ′ d e f o r m e d c o n t o u r s ′ ] , [ ′ d e f o r m a t i o n s m o o t h n e s s ′ , ′ e x p a n d b o r d e r ′ , ′ s u b p i x e l ′ ] , [ S m o o t h n e s s , 0 , 0 ] , S c o r e , R o w , C o l u m n ) c o u n t s e c o n d s ( S 2 ) T i m e : = S 2 − S 1 ∗ V i s u a l i z e t h e d e f o r m a t i o n a s a m e s h g e n e r a t e d f r o m ∗ t h e r e t u r n e d v e c t o r f i e l d g e n w a r p e d m e s h ( V e c t o r F i e l d , W a r p e d M e s h , S m o o t h n e s s / 2 ) d e v s e t l i n e w i d t h ( 1 ) d e v s e t c o l o r ( ′ y e l l o w ′ ) d e v d i s p l a y ( W a r p e d M e s h ) F o u n d [ I n d e x ] : = ∣ S c o r e ∣ d e v s e t l i n e w i d t h ( 2 ) d e v s e t c o l o r ( ′ g r e e n ′ ) d e v d i s p l a y ( D e f o r m e d C o n t o u r s ) d i s p m e s s a g e ( W i n d o w H a n d l e , ∣ S c o r e ∣ + ′ m a t c h e s f o u n d i n ′ + T i m e '02') dev_resize_window_fit_image (Image, 0, 0, -1, -1) dev_display (Image) disp_message (WindowHandle, 'Search ...', 'window', 12, 12, 'black', 'true') count_seconds (S1) * Find the model in the deformed search image. * As result, the rectified image, the respective * vector field, and the found contours are queried. find_local_deformable_model (Image, ImageRectified, VectorField, DeformedContours, ModelID, rad(-14), rad(28), 1, 1, 1, 1, 0.78, 0, 0, 0, 0.45, ['image_rectified','vector_field','deformed_contours'], ['deformation_smoothness','expand_border','subpixel'], [Smoothness,0,0], Score, Row, Column) count_seconds (S2) Time := S2 - S1 * Visualize the deformation as a mesh generated from * the returned vector field gen_warped_mesh (VectorField, WarpedMesh, Smoothness / 2) dev_set_line_width (1) dev_set_color ('yellow') dev_display (WarpedMesh) Found[Index] := |Score| dev_set_line_width (2) dev_set_color ('green') dev_display (DeformedContours) disp_message (WindowHandle, |Score| + ' matches found in ' + Time 02)devresizewindowfitimage(Image,0,0,1,1)devdisplay(Image)dispmessage(WindowHandle,Search...,window,12,12,black,true)countseconds(S1)Findthemodelinthedeformedsearchimage.Asresult,therectifiedimage,therespectivevectorfield,andthefoundcontoursarequeried.findlocaldeformablemodel(Image,ImageRectified,VectorField,DeformedContours,ModelID,rad(14),rad(28),1,1,1,1,0.78,0,0,0,0.45,[imagerectified,vectorfield,deformedcontours],[deformationsmoothness,expandborder,subpixel],[Smoothness,0,0],Score,Row,Column)countseconds(S2)Time:=S2S1Visualizethedeformationasameshgeneratedfromthereturnedvectorfieldgenwarpedmesh(VectorField,WarpedMesh,Smoothness/2)devsetlinewidth(1)devsetcolor(yellow)devdisplay(WarpedMesh)Found[Index]:=Scoredevsetlinewidth(2)devsetcolor(green)devdisplay(DeformedContours)dispmessage(WindowHandle,Score+matchesfoundin+Time’1.2f’ + ’ s’, ‘window’, 12, 12, ‘black’, ‘true’)
for J := 0 to |Score| - 1 by 1
disp_message (WindowHandle, ‘Score: ’ + Score[J]$’.2f’, ‘image’, 350, Column[J] - 80, ‘black’, ‘true’)
endfor
if (Index < NumImages)
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop ()
endif
endfor
*

  • Clean up
    clear_deformable_model (ModelID)

如下是model:
在这里插入图片描述
如下是采样图片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以下是程序运行结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以下是代码的逐行解释:

dev_update_off():关闭设备更新,以提高处理速度。
read_image (ModelImage, ‘food/cocoa_package_model’):读取模型图像。
dev_close_window ():关闭当前窗口。
dev_open_window_fit_image (ModelImage, , , -1, -1, WindowHandle):打开一个窗口,窗口大小自动调整以适应图像。
set_display_font (WindowHandle, 16, ‘mono’, ‘true’, ‘false’):设置窗口的显示字体。
创建并显示局部可变形模型:
create_local_deformable_model:创建一个局部可变形模型。
get_deformable_model_contours:获取模型的轮廓。
area_center:获取图像的中心点。
hom_mat2d_identity 和 hom_mat2d_translate:创建一个平移矩阵,将模型轮廓平移到图像中心。
affine_trans_contour_xld:使用平移矩阵变换模型轮廓。
dev_set_line_width (2):设置线条宽度为2。
dev_set_color (‘yellow’):设置线条颜色为黄色。
dev_display (ModelImage):显示模型图像。
dev_display (ContoursAffinTrans):显示变换后的模型轮廓。
disp_message:在窗口中显示消息。
disp_continue_message:在窗口中持续显示消息。
stop ():暂停执行。
循环搜索图像:
read_image:读取要搜索的图像。
dev_resize_window_fit_image:调整窗口大小以适应图像。
dev_display:显示图像。
disp_message:显示搜索消息。
count_seconds:计算搜索开始时间。
find_local_deformable_model:在图像中搜索局部可变形模型。
count_seconds:计算搜索结束时间。
Time := S2 - S1:计算搜索时间。
gen_warped_mesh:生成变形网格。
dev_display:显示变形网格。
Found[Index] := |Score|:记录搜索得分。
disp_message:显示搜索结果。
if (Index < NumImages):如果还有图像未搜索,显示继续消息并暂停。
clear_deformable_model (ModelID):清除局部可变形模型。
这个脚本的主要功能是创建一个局部可变形模型,并在一系列图像中搜索这个模型,然后显示搜索结果和搜索时间。

  • 80
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 38
    评论
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Happy Monkey

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

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

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

打赏作者

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

抵扣说明:

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

余额充值