当前位置:网站首页>Halcon图片标定,使得后续图片处理过后变成与模板图片一样
Halcon图片标定,使得后续图片处理过后变成与模板图片一样
2022-07-04 05:14:00 【小女孩真可爱】
Halcon图片标定,使得后续图片处理过后变成与模板图片一样
随便选择一张图片
对这张图片进行旋转矫正之后,图片就变成了一个模板图片。它的区域region位置如图所示:
当来了一张新的图片的时候,让它与region比较,与模板的位置有明显的偏差, 如图所示:
我们的目标就是让这张新的图片经过处理后与模板区域重合。如下图所示:
其实总体功能和旋转抠图差不多,只是使用的函数有一点差异。
代码总合:
代码所用的图片在:C:\Users\HJ\AppData\Roaming\MVTec\HALCON-21.05-Progress\examples\images\blister(根据自己安装halcon的位置来寻找)
*读取一张图进行处理,并以处理后的图为模板,让后续的图片都办成这张图的模样
read_image (Image, 'C:/Users/HJ/Desktop/test_image/blister/blister_01.png')
threshold(Image, Region, 100, 255)
connection(Region, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 15000, 9999999)
shape_trans(SelectedRegions, RegionTrans, 'convex')
*计算region的方向(角度),Phi是区域最远处点和x轴的夹角
orientation_region(RegionTrans, Phi)
*获取区域的中心
area_center(RegionTrans, Area, Row, Column)
if ((1.57<Phi and Phi<3.142) or (-3.142<Phi and Phi<-1.57))
vector_angle_to_rigid(Row, Column, Phi, Row, Column, 3.14159, HomMat2D)
else
vector_angle_to_rigid(Row, Column, Phi, Row, Column, 0, HomMat2D)
endif
*旋转图片和区域
affine_trans_image(Image, ImageAffineTrans, HomMat2D, 'constant', 'false')
affine_trans_region(RegionTrans, RegionTrans, HomMat2D, 'nearest_neighbor')
*计算旋转之后的区域的中心, 也就是模板区域的中心
area_center (RegionTrans, AreaRef, RowRef, ColumnRef)
list_files ('C:/Users/HJ/Desktop/test_image/blister', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
Width := 550
Height := 400
for Index := 0 to |ImageFiles| - 1 by 1
*数据前处理
read_image (Image2, ImageFiles[Index])
threshold(Image2, Region_Each, 100, 255)
connection(Region_Each, ConnectedRegions_Each)
select_shape(ConnectedRegions_Each, SelectedRegions_Each, 'area', 'and', 15000, 9999999)
shape_trans(SelectedRegions_Each, RegionTrans_Each, 'convex')
*计算当前区域的方向(角度)
orientation_region(RegionTrans_Each, Phi_Each)
*获取当前区域的中心
area_center(RegionTrans_Each, Area_Each, Row_Each, Column_Each)
if ((1.57<Phi_Each and Phi_Each<3.142) or (-3.142<Phi_Each and Phi_Each<-1.57))
*利用当前区域的中心、角度 和 模板区域的中心和角度来进行计算, 生成一个仿射变换的矩阵
vector_angle_to_rigid(Row_Each, Column_Each, Phi_Each, RowRef, ColumnRef, 3.14159, HomMat2D1)
else
vector_angle_to_rigid(Row_Each, Column_Each, Phi_Each, RowRef, ColumnRef, 0, HomMat2D1)
endif
*根据仿射变换矩阵来对图片进行调整,变成和模板图片一样的
affine_trans_image(Image2, ImageAffineTrans_Each, HomMat2D1, 'constant', 'false')
endfor
边栏推荐
猜你喜欢
BUU-Pwn-test_ your_ nc
Graduation design of small programs -- small programs of food and recipes
ansys命令
Void convolution, deformable convolution, deformable ROI pooling
2022危险化学品经营单位安全管理人员上岗证题库及答案
June 2022 summary
BUU-Real-[PHP]XXE
LM small programmable controller software (based on CoDeSys) note XXI: error 3703
What are the reasons for the frequent high CPU of ECS?
KMP match string
随机推荐
BUU-Crypto-[HDCTF2019]basic rsa
Flink1.13 basic SQL syntax (II) join operation
A summary of the 8544 problem that SolidWorks Standard cannot obtain a license
JS string splicing
Easy change
With the advent of the IP era, how can E-sports hotels take advantage of the "east wind" of games?
What are the reasons for the frequent high CPU of ECS?
Get the ID of the record just inserted from laravel
模拟小根堆
[matlab] matlab simulation - simulate the AM modulation process of the modulation system
ping端口神器psping
[matlab] matlab simulation modulation system - VSB system
Two sides of the evening: tell me about the bloom filter and cuckoo filter? Application scenario? I'm confused..
力扣 第 300 场周赛
2022 R2 mobile pressure vessel filling retraining question bank and answers
[matlab] general function of communication signal modulation bandpass filter
VB. Net calls ffmpeg to simply process video (class Library-6)
Useful plug-ins for vscode
Talk about the SQL server version of DTM sub transaction barrier function
BUU-Crypto-[GXYCTF2019]CheckIn