exhaustive_match(Image, RegionOfInterest, ImageTemplate : ImageMatch : Mode : )
exhaustive_match 在RegionOfInterest区域内匹配ImageTemplate和Image。
因此,ImageTemplate将在感兴趣区域内的所有图像点上移动。
参数Mode用于指定匹配准则。
结果值将存储在ImageMatch中。
下列配对准则(Mode )可供选择:
norm_correlation
其中X[j]表示图像X的第i列和第j行灰度值。
(l,c)为ImageTemplate区域的中心。
选择u和v,这样模板的所有点都将到达,i,j运行在感兴趣的区域。
在图像帧中,只考虑图像模板中位于图像内部的部分(即u和v受到相应的限制)。
取值范围:0 - 255(最佳匹配)。
dfd'
计算平均“位移帧差”:
这项与“norm_correlation”中的项相同。
AREA ( X ) 表示X区域的面积。取值范围为0(最佳匹配)- 255。
计算归一化相关和“移位帧差”(相对于ImageTemplate的面积)非常耗时。
因此,重要的是要限制输入区域(RegionOfInterest ,
如果可能的话,即只在一个非常有限的“ROI”中应用过滤器)。
就质量而言,两种模式返回的结果是相似的,因此模式“dfd”要快3.5倍左右。
例程:
read_image(Image,'monkey')
dev_display(Image)
gen_rectangle2(Rectangle,200,200,0.15,20,30)
reduce_domain(Image,Rectangle,Template)
exhaustive_match(Image,Image,Template,ImageMatch,'dfd')
invert_image(ImageMatch,ImageInvert)
local_max(Image,Maxima)
union1(Maxima,AllMaxima)
add_channels(AllMaxima,ImageInvert,FitMaxima)
threshold(FitMaxima,BestFit,230.0,255.0)
dev_display(BestFit)
1.exhaustive_match_mg(Image, ImageTemplate : ImageMatch : Mode, Level, Threshold : )
exhaustive_match_mg是exhaustive_match的扩充版本,
执行图像Image和模板ImageTemplate匹配。
将ImageTemplate移动到图像区域的所有点上,
根据参数Mode计算匹配准则,结果值存储在ImageMatch中。
以这种方式滤波的图像,通常只有那些具有良好匹配结果的区域是感兴趣的。
搜索区域的大小,即输入图像Image的区域大小,决定了匹配滤波器的运行时间。
因此,建议第一次使用exhaustive_match_mg时,尽量减少图像分辨率,以确定一个“感兴趣的区域”,
在其中可以期望良好的匹配结果;然后,在这个限制区域中,
只有真正的匹配(参见exhaustive_match)才会以正常的分辨率执行。
因此, Image 的高斯金字塔和ImageTemplate将被合(特别是相应的区域也将被转换)。
然后在分辨率金字塔的每一层——从startlevel开始——执行当前“感兴趣区域”内的匹配。
其中,startlevel上的“感兴趣区域”等效于输入图像Image 的区域。
过滤后,在阈值函数的帮助下,确定一个新的“感兴趣区域”,并在下一个分辨率级别进行转换:
threshold(...:...:0,Threshold,..., if Mode = 'dfd'
threshold(...:...:Threshold,255,..., if Mode = 'norm_correlation'
然后以最高分辨率(0级)计算确定的“感兴趣区域”的最终匹配,
输出图像ImageMatch包括相应的滤波结果和最终的“感兴趣区域”,
在阈值函数的帮助下对结果图像进行确定。
因此,exhaustive_match_mg 不仅是一个过滤器,还可以被看作是区域转换类的成员。
例程:
read_image(Image,'monkey')
gen_rectangle2(Rectangle,200,200,0,20,30)
reduce_domain(Image,Rectangle,Template)
exhaustive_match_mg(Image,Template,ImageMatch,'dfd',1,30)
invert_image(ImageMatch,ImageInvert)
local_max(ImageInvert,BestFit)
dev_display (BestFit)
|