仅供参考,主要思路就是图像对比,但你提供的图片中有一个最大的问题就是,即使都是正常的点胶,同一个位置点胶的区域也不是固定的,那比对的时候,这种导致的差异会造成很大的干扰,比如看下面三张图,第二张左下角的点胶区域就很其他的明显不同
read_image (Image, '1.png')
get_image_size (Image, Width, Height)
dev_get_window (WindowHandle)
set_display_font (WindowHandle, 12, 'mono', 'true', 'false')
*创建一个模板用于对齐图像
gen_rectangle1 (ROI_0, 88.7986, 511.103, 145.144, 664.311)
reduce_domain (Image, ROI_0, ImageReduced)
create_generic_shape_model (ShapeModelID)
train_generic_shape_model (ImageReduced, ShapeModelID)
set_generic_shape_model_param (ShapeModelID, 'angle_start', rad(-10))
set_generic_shape_model_param (ShapeModelID, 'angle_end', rad(10))
area_center (ROI_0, Area, ModelRow, ModelColumn)
*定义检测范围,用多边形工具绘制
gen_region_runs (ROI_1, [16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112], [497,478,477,476,475,474,474,473,472,472,471,471,470,470,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,470,470,470,470,471,471,472,472,473,473,474,474,475,475,476,476,476,476,476,477,477,477,477,477,477,478,478,478,478], [514,515,516,516,516,515,515,516,516,516,517,517,517,515,506,502,498,494,491,490,489,487,486,486,485,485,484,484,484,484,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,485,485,485,485,486,486,486,486,487,487,487,488,488,488,489,489,490,490,490,490,490,490,490,490,490,490,489,489,488,488,488,487,485,484,482,481,479])
gen_region_runs (TMP_Region, [16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98], [586,583,582,582,581,581,581,581,581,581,581,581,580,605,654,682,687,690,691,691,691,691,691,691,691,692,692,692,692,692,692,692,692,692,692,692,692,692,692,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,694,694,694,694,694,694,694,694,694,694,694,694,694,694,695,695,695,695,695,695,695,695,695,696,696,698,701,703,706], [644,701,702,703,704,704,705,706,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707])
union2 (ROI_1, TMP_Region, ROI_1)
gen_region_runs (TMP_Region, [323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,393,394,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415], [478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,479,479,479,564,479,528,479,479,479,479,479,479,479,479,480,480,480,480,480,480,481,482,483,485,486,487,499], [478,491,491,492,492,492,492,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,493,493,493,493,493,493,493,494,494,495,495,495,496,496,498,500,502,504,506,581,508,583,585,586,587,587,588,589,589,590,590,590,590,590,590,589,587,585,583,582,582,581,581])
union2 (ROI_1, TMP_Region, ROI_1)
gen_region_runs (TMP_Region, [191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325], [695,695,695,695,695,695,695,694,694,694,694,694,694,693,692,691,691,690,689,688,687,686,686,685,684,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,682,682,681,681,680,679,679,678,678,677,676,676,675,675,674,673,673,672,672,671,670,670,669,669,668,667,667,666,666,665,664,664,663,663,662,663,664,664,665,666,667,668,668,669,670,671,671,672,673,674,675,675,676,677], [708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,708,708,707,706,706,705,704,703,703,702,701,701,700,699,699,698,697,696,696,695,694,694,693,692,692,691,690,690,689,688,687,687,686,685,685,684,683,683,682,681,680,680,679,678,678,677])
union2 (ROI_1, TMP_Region, ROI_1)
gen_image_const (VarImage, 'byte', Width, Height)
create_variation_model (Width, Height, 'byte', 'direct', VarModelID)
prepare_direct_variation_model (Image, VarImage, VarModelID, 65, 4)
for i := 2 to 4 by 1
read_image (Image1, i+'.png')
find_generic_shape_model (Image1, ShapeModelID, MatchResultID, NumMatchResult)
if (NumMatchResult != 0)
get_generic_shape_model_result (MatchResultID, 'best', 'row', Row)
get_generic_shape_model_result (MatchResultID, 'best', 'column', Column)
get_generic_shape_model_result (MatchResultID, 'best', 'angle', Angle)
vector_angle_to_rigid (Row, Column, Angle, ModelRow, ModelColumn, 0, HomMat2D)
affine_trans_image (Image1, ImageAffineTrans, HomMat2D, 'constant', 'false')
reduce_domain (ImageAffineTrans, ROI_1, ImageReduced1)
compare_ext_variation_model (ImageReduced1, RegionDiff, VarModelID, 'absolute')
connection (RegionDiff, ConnectedRegions)
select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)
dev_clear_window ()
dev_display (ImageAffineTrans)
dev_display (SelectedRegions)
endif
stop ()
endfor
clear_shape_model (ShapeModelID)
clear_variation_model (VarModelID)
|