当前位置:网站首页>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
边栏推荐
- [matlab] communication signal modulation general function - low pass filter
- SQL performance optimization skills
- NTFS security permissions
- RSA加密应用常见缺陷的原理与实践
- Daily question brushing record (12)
- SQL injection - injection based on MSSQL (SQL Server)
- C语言简易学生管理系统(含源码)
- 19.Frambuffer应用编程
- LM小型可编程控制器软件(基于CoDeSys)笔记二十一:错误3703
- Useful plug-ins for vscode
猜你喜欢

A summary of the 8544 problem that SolidWorks Standard cannot obtain a license

19.Frambuffer应用编程
![[high concurrency, high performance and high availability of massive data MySQL practice-7] - memory data drop disk](/img/b9/cf4db4f8a5d2ef3fb344258f0e30f5.jpg)
[high concurrency, high performance and high availability of massive data MySQL practice-7] - memory data drop disk

【雕爷学编程】Arduino动手做(105)---压电陶瓷振动模块

VB.net GIF(制作、拆解——优化代码,类库——5)

Graduation design of small programs -- small programs of food and recipes

Supplement the JS of a video website to decrypt the video

Daily question brushing record (12)

【兴趣阅读】Adversarial Filtering Modeling on Long-term User Behavior Sequences for Click-Through Rate Pre

2022 question bank and answers for safety management personnel of hazardous chemical business units
随机推荐
SQL injection - injection based on MSSQL (SQL Server)
Supplement the JS of a video website to decrypt the video
Simple g++ and GDB debugging
Solar insect killing system based on single chip microcomputer
[matlab] matlab simulation modulation system SSB system
Error response from daemon: You cannot remove a running container 8d6f0d2850250627cd6c2acb2497002fc3
VB.net 简单的处理图片,黑白(类库——7)
[matlab] matlab simulates digital bandpass transmission system ask, PSK, FSK system
Zzulioj:1201: mode problem
Get the ID of the record just inserted from laravel
[interested reading] advantageous filtering modeling on long term user behavior sequences for click through rate pre
724. 寻找数组的中心下标
ping端口神器psping
Appearance of LabVIEW error dialog box
LM small programmable controller software (based on CoDeSys) note XXI: error 3703
[matlab] matlab simulates digital baseband transmission system eye diagram of bipolar baseband signal (cosine roll off forming pulse)
[matlab] matlab simulation of modulation system - power spectrum and coherent demodulation of AM modulated signal
[matlab] matlab simulation - low pass Gaussian white noise
BUU-Crypto-[GUET-CTF2019]BabyRSA
Simulink and Arduino serial port communication