模板匹配,寻找有重叠的

模板匹配基本流程:

确定ROI区域

生成一个矩形(draw_rectangle2,gen_rectangle2.)

得到ROI区域(reduce_domain)

创建模板(create_shape_model)

Template:输入的图像

Numlevels:金字塔的级数,越大匹配时间就越少,必须保证最高层图像具有足够的信息至少4点。可以通过inspect_shape_model()查看设置结果,最高层太少自动减少层数,最底层信息太少就会报错,auto会自动计算层数

Anglestart:开始的角度

Angleextent:经过的角度

Anglestep:一步经过的角度(小图大一点)

Optimization:‘none’使用全部模板点,’auto’可以用来减少模板点的数量

Metric:决定模板识别的条件’use_polarity(相同对比度:如果模板是背景暗,对象亮,那么匹配的也会是背景暗,对象亮)’,‘ignore_global_polarity’(对比度相反的)。还有用在多通道中的‘ignore_local_polarity’;’ignore_color_polarity’,

Contrast: 对比度是用来测量目标与背景之间和目标不同部分局部的灰度值差异,‘auto_contrast’自动适应设置阈值。‘auto_min_size’

Mincontrast:如果要将遮挡严重的模板也能识别出来,应该设置一个比噪声引起的弧度浮动略大的数。比contrast小 (小图设的小)

ModelID:

EG.

create_shape_model(reduceimage,3,0,rad(360),rad(1),‘none’,‘use_polarity’,[‘auto_contrast’,‘auto_min_size’],20,modelid)

监视模板(inspect_shape_model)检查参数的适用性

获得模板的轮廓(get_shape_model_contours)

在新图像中寻找与模板匹配的图像部分(find_shape_model)

Image

ModelID

Anglestart

Angleextent

Minscore:得到的匹配度的值,如果超过这个值将被认为找到 (若只有一半则该值应该小于0.5)

Munmatches:寻找的个数,0找到所有的,

Maxoverlap:当找到的目标存在重叠时,且重叠大于该值时选择一个好的输出(可能一个点会被多次找到,减小该值可以)

Subpixel:是否使用亚像素‘none’不使用。

Numlevels:金字塔级数

Greediness:确定在搜索时的“贪婪程度”。0慢,1快但是可能会有没有找到的,建议0.9

Row,column

Angle

Score:得到的匹配度的值

EG.

find_shape_model(gray_src,modelid,0,rad(360),0.4,0,0.267,‘least_squares’,3,0.1,row1,col1,ang1,score1)

‘least_squares’:是使用最小二值的插补方法来计算的亚像素值

代码:



 

模板匹配基本流程:

1.    
确定ROI区域

生成一个矩形(draw_rectangle2,gen_rectangle2.)

得到ROI区域(reduce_domain)

2.    
创建模板(create_shape_model)

Template:输入的图像

Numlevels:金字塔的级数,越大匹配时间就越少,必须保证最高层图像具有足够的信息至少4点。可以通过inspect_shape_model()查看设置结果,最高层太少自动减少层数,最底层信息太少就会报错,auto会自动计算层数

Anglestart:开始的角度

Angleextent:经过的角度

Anglestep:一步经过的角度(小图大一点)

Optimization:‘none’使用全部模板点,’auto’可以用来减少模板点的数量

Metric:决定模板识别的条件’use_polarity(相同对比度:如果模板是背景暗,对象亮,那么匹配的也会是背景暗,对象亮)’,‘ignore_global_polarity’(对比度相反的)。还有用在多通道中的‘ignore_local_polarity’;’ignore_color_polarity’,

Contrast: 对比度是用来测量目标与背景之间和目标不同部分局部的灰度值差异,‘auto_contrast’自动适应设置阈值。‘auto_min_size’

Mincontrast:如果要将遮挡严重的模板也能识别出来,应该设置一个比噪声引起的弧度浮动略大的数。比contrast小 (小图设的小)

ModelID:

 

EG.

create_shape_model(reduceimage,3,0,rad(360),rad(1),'none','use_polarity',['auto_contrast','auto_min_size'],20,modelid)

 

3.    
监视模板(inspect_shape_model)检查参数的适用性

4.    
获得模板的轮廓(get_shape_model_contours)

5.    
在新图像中寻找与模板匹配的图像部分(find_shape_model)

Image

ModelID

Anglestart

Angleextent

Minscore:得到的匹配度的值,如果超过这个值将被认为找到 (若只有一半则该值应该小于0.5)

Munmatches:寻找的个数,0找到所有的,

Maxoverlap:当找到的目标存在重叠时,且重叠大于该值时选择一个好的输出(可能一个点会被多次找到,减小该值可以)

Subpixel:是否使用亚像素‘none’不使用。

Numlevels:金字塔级数

Greediness:确定在搜索时的“贪婪程度”。0慢,1快但是可能会有没有找到的,建议0.9

Row,column

Angle

Score:得到的匹配度的值

EG.

find_shape_model(gray_src,modelid,0,rad(360),0.4,0,0.267,'least_squares',3,0.1,row1,col1,ang1,score1)

'least_squares':是使用最小二值的插补方法来计算的亚像素值

 

代码:

dev_close_window()

read_image(image,'C:/Users/DELL/Desktop/clip.jpg')

get_image_size(image,width,height)

dev_open_window(0,0,512,512,'black',window)

dev_set_part(0,0,height,width)

dev_display(image)

灰度处理

rgb1_to_gray(image,gray_src)

加强图像的对比度

equ_histo_image(gray_src,equ_src)

*
draw_rectangle2(window,row,col,phi,length1,length2)

row:=876.435

col:=260.772

phi:=2.058

length1:=99.135

length2:=30.102

得到ROI区域

gen_rectangle2(rectangle,row,col,phi,length1,length2)

*gen_rectangle2(rectangle,390,490,0,60,100)

reduce_domain(equ_src,rectangle,reduceimage)

*创建模板,金字塔级数3,从0开始旋转360,每次旋转1,‘none’不减少模板数,‘use_polarity’使用相同对比度,自动化适应对比度和尺寸,最小对比度20

create_shape_model(reduceimage,3,0,rad(360),rad(1),'none','use_polarity',['auto_contrast','auto_min_size'],20,modelid)

*监视模板

inspect_shape_model (reduceimage,
ModelImages, ModelRegions, 3, 20)

*得到模板轮廓

get_shape_model_contours(contours,modelid,1)

*匹配,从0开始旋转360,匹配度大于0.4,0找到所有,0.267重复值,'least_squares',亚像素值的插值方法为最小二值,金字塔级数,贪婪程度

find_shape_model(gray_src,modelid,0,rad(360),0.4,0,0.267,'least_squares',3,0.1,row1,col1,ang1,score1)

 dev_display(image)

 dev_set_draw('margin')

 dev_set_line_width(3)

num:=|row1|

for i:=0 to num-1 by 1

显示信息 

   disp_message(window,i+1,'image',row1[i],col1[i],'green','true')

画出矩形框    

gen_rectangle2(rectangle2,row1[i],col1[i],ang1[i]+phi,length1,length2)

endfor


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值