当前位置:网站首页>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-Reverse-easyre
- Evolution of system architecture: differences and connections between SOA and microservice architecture
- Supplement the JS of a video website to decrypt the video
- Flutter ‘/usr/lib/libswiftCore. dylib‘ (no such file)
- C # character similarity comparison general class
- Customize a pager needed in your project
- flink1.13 sql基础语法(二)join操作
- Trie数-字典树
- KMP match string
- [high concurrency, high performance and high availability of massive data MySQL practice-7] - memory data drop disk
猜你喜欢

Public inputs in appliedzkp zkevm (13)
![BUU-Crypto-[GXYCTF2019]CheckIn](/img/b8/ad6c05977f6943f30e9975acb6eb6e.jpg)
BUU-Crypto-[GXYCTF2019]CheckIn

VB.net 简单的处理图片,黑白(类库——7)

拓扑排序和关键路径的图形化显示
![[QT] create mycombobox click event](/img/5a/ed17567a71f6737891fc7a8273df0a.png)
[QT] create mycombobox click event

Ping port artifact psping

Etcd database source code analysis - initialization overview

Topological sorting and graphical display of critical path

Two sides of the evening: tell me about the bloom filter and cuckoo filter? Application scenario? I'm confused..

【QT】制作MyComboBox点击事件
随机推荐
2022G2电站锅炉司炉特种作业证考试题库及答案
力扣(LeetCode)184. 部门工资最高的员工(2022.07.03)
光模块字母含义及参数简称大全
[matlab] communication signal modulation general function interpolation function
Flask
Flutter calls Gaode map app to realize location search, route planning and reverse geocoding
2022危险化学品经营单位安全管理人员上岗证题库及答案
Just do it with your hands 7 - * project construction details 2 - hook configuration
LC周赛300
Notepad++--显示相关的配置
1480. 一维数组的动态和
2022年A特种设备相关管理(电梯)考试题模拟考试平台操作
[matlab] general function of communication signal modulation - generation of narrow-band Gaussian white noise
Integer type of C language
724. 寻找数组的中心下标
Just do it with your hands 7 - * project construction details 2 - hook configuration
【雕爷学编程】Arduino动手做(105)---压电陶瓷振动模块
[matlab] matlab simulation - narrow band Gaussian white noise
Build an Internet of things infrared temperature measuring punch in machine with esp32 / rush to work after the Spring Festival? Baa, no matter how hard you work, you must take your temperature first
Zkevm (12) state proof of appliedzkp