Halcon几何定位
生活随笔
收集整理的這篇文章主要介紹了
Halcon几何定位
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Halcon幾何定位Halcon幾何定位Halcon幾何定位
建模經(jīng)驗(yàn)
difference和union:特別對(duì)于:回型區(qū)域,需要挖洞區(qū)域
定位經(jīng)驗(yàn)
灰度定位與輪廓定位的對(duì)比
幾何定位 = 輪廓定位
| 灰度定位 | 短 | 差 | 差 | 差 | 差 |
| 輪廓定位 | 長(zhǎng) | 好 | 好 | 好 | 好 |
灰度定位,一般指的就是Blob分析
幾何定位:支持單模板定位和多模板定位
幾何定位分三種:無(wú)縮放、xy同步縮放、xy異步縮放
幾何定位工具:匹配助手
模板匹配的重要參數(shù)
1.對(duì)比度
2.最小組件尺寸
3.金字塔等級(jí)(等級(jí)越高,模板越模糊,匹配越容易)
4.角度范圍
5.縮放參數(shù)
6.極性(度量)
7.最小分?jǐn)?shù)(相似度、匹配分?jǐn)?shù))
8.匹配最大數(shù)
9.貪心算法
10.最大重疊比
11.形狀模板可能與圖像邊緣交叉
對(duì)比度
Contrast不僅僅是對(duì)比度,根據(jù)數(shù)組元素?cái)?shù)量不同,其意義不同
1個(gè)元素時(shí):10,對(duì)比度,直接提取邊緣
2個(gè)元素時(shí):[10,20],表示10提取不出邊緣,則使用20作為參數(shù)提取邊緣
3個(gè)元素時(shí):[10,30,5],前兩個(gè)參數(shù)同上,最后一個(gè)參數(shù)表示所提取邊緣的長(zhǎng)度最小為5
幾何定位的流程
實(shí)例
* * online shape-based matching with adaptation to illumination changes * rotational invariant * rotation/translation to "normalize" the input image * * set online to true if you are using an image acquisition device * if online is set to false, a virtual image acquisition device is opened which reads an image sequence from hard disk * online := false VisUndefPixelBlack := 1 dev_update_window ('off') dev_update_pc ('off') dev_update_var ('off') dev_update_time ('off') if (online)* open the 'real' image acquisition deviceinfo_framegrabber ('1394IIDC', 'revision', RevisionInfo, RevisionInfoValues)open_framegrabber ('1394IIDC', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'default', 'default', 'default', -1, -1, AcqHandle) else* open the virtual image acquisition deviceinfo_framegrabber ('File', 'general', Information, ValueList)open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'default', 'pendulum/pendulum', 'default', -1, 1, AcqHandle) endif grab_image (Image, AcqHandle) get_image_size (Image, Width, Height) dev_close_window () dev_open_window (0, Width + 30, Width, Height, 'black', WindowRot) dev_open_window (0, 0, Width, Height, 'black', WindowID) dev_set_window (WindowID) dev_set_part (0, 0, Height - 1, Width - 1) dev_set_window (WindowRot) dev_set_part (0, 0, Height - 1, Width - 1) dev_display (Image) set_display_font (WindowID, 16, 'mono', 'true', 'false') hom_mat2d_identity (HomMat2DIdentity) * disp_continue_message (WindowID, 'black', 'true') * stop () * ------------------------ * select the model object * ------------------------ if (online)* * define template by drawing a rectangle* dev_update_pc ('off')dev_set_window (WindowID)dev_set_draw ('margin')dev_set_line_width (5)grab_image (ImageTempl, AcqHandle)dev_set_window (WindowID)dev_display (ImageTempl)disp_message (WindowID, 'define the template', 'window', 12, 12, 'black', 'true')dev_set_color ('green')draw_rectangle2 (WindowID, RowTempl, ColumnTempl, PhiTempl, Length1, Length2)gen_rectangle2 (Rectangle, RowTempl, ColumnTempl, PhiTempl, Length1, Length2)dev_display (Rectangle)reduce_domain (ImageTempl, Rectangle, ImageReduced)create_shape_model (ImageReduced, 4, 0, rad(360), 'auto', 'none', 'use_polarity', 30, 10, ModelID)intensity (ImageReduced, Image, TemplMean, Deviation)dev_update_pc ('on') else* * load default object for virtual framegrabber* Length1 := 32.0Length2 := 12.5PhiTempl := -0.315RowTempl := 112.5ColumnTempl := 92.0copy_obj (Image, ImageTempl, 1, 1)gen_rectangle2 (Rectangle, RowTempl, ColumnTempl, PhiTempl, Length1, Length2)reduce_domain (Image, Rectangle, ImageReduced)create_shape_model (ImageReduced, 4, 0, rad(360), 'auto', 'none', 'use_polarity', 30, 10, ModelID)intensity (ImageReduced, Image, TemplMean, Deviation) endif * RowRot := RowTempl * ColumnRot := ColumnTempl RowRot := Height / 2 ColumnRot := Width / 2 * ------------------------------------------ * visualize normalized input image * ------------------------------------------ * Compensate for rotation and translation vector_angle_to_rigid (RowTempl, ColumnTempl, PhiTempl, RowRot, ColumnRot, 0, HomMat2DRotate) affine_trans_image (ImageTempl, ImageAffineTrans, HomMat2DRotate, 'constant', 'false') if (VisUndefPixelBlack == 1)full_domain (ImageAffineTrans, ImageFull)dev_set_window (WindowRot)dev_display (ImageFull) elsedev_set_window (WindowRot)dev_display (ImageAffineTrans) endif dev_set_window (WindowID) dev_display (ImageTempl) disp_message (WindowID, 'run the template matching', 'image', 20, 20, 'yellow', 'false') disp_message (WindowID, 'run the template matching', 'image', 20, 20, 'yellow', 'false') disp_message (WindowID, '(click left to start,', 'image', 50, 20, 'yellow', 'false') disp_message (WindowID, 'right to stop)', 'image', 80, 20, 'yellow', 'false') * disp_continue_message (WindowID, 'black', 'true') * stop () Button := 0 while (Button != 1)get_mbutton (WindowID, dummy, dummy, Button) endwhile dev_update_pc ('off') * ------------------------ * shape-based matching * ------------------------ Button := 0 Exp := 1 while (Button != 4)if (online)grab_image_async (Image, AcqHandle, -1)elsegrab_image (Image, AcqHandle)endifcount_seconds (Seconds1)find_shape_model (Image, ModelID, 0, rad(360), 0.7, 1, 0.5, 'least_squares', 0, 0.7, Row, Column, Angle, Score)if (Score > 0.5)gen_rectangle2 (Rectangle, Row, Column, PhiTempl + Angle, Length1, Length2)reduce_domain (Image, Rectangle, ImageReduced)intensity (ImageReduced, Image, Mean, Deviation)* Compensate for rotation and translationvector_angle_to_rigid (Row, Column, Angle, RowRot, ColumnRot, 0, HomMat2DRotate)affine_trans_image (Image, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')count_seconds (Seconds2)Time := round(1000 * (Seconds2 - Seconds1))if (VisUndefPixelBlack == 1)full_domain (ImageAffineTrans, ImageFull)dev_set_window (WindowRot)dev_display (ImageFull)elsedev_set_window (WindowRot)dev_display (ImageAffineTrans)endifdev_set_window (WindowID)dev_display (Image)disp_message (WindowID, Time + ' ms', 'window', 12, 12, 'black', 'true')dev_set_color ('green')dev_display (Rectangle)elsedev_display (Image)endif* --------------------------* Exit with mouse click* --------------------------dev_error_var (Error, 1)dev_set_check ('~give_error')get_mposition (WindowID, R, C, Button)dev_error_var (Error, 0)dev_set_check ('give_error')if (Error != H_MSG_TRUE)Button := 0endif endwhile clear_shape_model (ModelID) disp_continue_message (WindowID, 'black', 'true') stop () close_framegrabber (AcqHandle) dev_set_window (WindowRot) dev_close_window () dev_update_pc ('on') dev_update_var ('on') dev_update_time ('on') dev_update_window ('on')總結(jié)
以上是生活随笔為你收集整理的Halcon几何定位的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java计算机毕业设计无人值守台球厅智能
- 下一篇: 华为5G商用全球首例 深圳地铁车地超宽带