* This program measures the length of scratches in world
* coordinates in a perspectively distorted image
*
dev_close_window ()
dev_close_window ()
dev_update_off ()
**关闭更新
dev_set_draw ('margin')
**设置阈值方式为轮廓
read_image (Image, 'scratch/scratch_perspective')
**读取带有划痕的图片
get_image_pointer1 (Image, Pointer, Type, Width, Height)
**指向Image的第一通道的指针
dev_open_window (0, 0, Width, Height, 'black', WindowHandle1)
set_display_font (WindowHandle1, 14, 'mono', 'true', 'false')
**设置字体的格式
dev_display (Image)
dev_set_line_width (2)
disp_continue_message (WindowHandle1, 'black', 'true')
stop ()
*
* Step: calibrate the camera
*
CaltabName := 'caltab_30mm.descr'
**标定板描述文件
* Make sure that the file 'CaltabDescrName' is in the current directory,
* the HALCONROOT/calib directory, or use an absolut path
StartCamPar := [0.012,0,0.0000055,0.0000055,Width / 2,Height / 2,Width,Height]
**初始内参数
create_calib_data ('calibration_object', 1, 1, CalibDataID)
**创建标定数据模型
set_calib_data_cam_param (CalibDataID, 0, 'area_scan_division', StartCamPar)
**设置相机标定参数类型 面扫描
set_calib_data_calib_object (CalibDataID, 0, CaltabName)
**指定标定板描述文件
NumImages := 12
**读取12幅图像
for I := 1 to NumImages by 1
read_image (Image, 'scratch/scratch_calib_' + I$'02d')
dev_display (Image)
find_calib_object (Image, CalibDataID, 0, 0, I, [], [])
get_calib_data_observ_contours (Caltab, CalibDataID, 'caltab', 0, 0, I)
* find_caltab (Image, Caltab, CaltabName, 3, 112, 5)
dev_set_color ('green')
dev_display (Caltab)
get_calib_data_observ_points (CalibDataID, 0, 0, I, RCoord, CCoord, Index, StartPose)
* find_marks_and_pose (Image, Caltab, CaltabName, StartCamPar, 128, 10, 18, 0.9, 15, 100, RCoord, CCoord, StartPose)
dev_set_color ('red')
disp_circle (WindowHandle1, RCoord, CCoord, gen_tuple_const(|RCoord|,2.5))
dev_set_part (0, 0, Height - 1, Width - 1)
* set_calib_data_observ_points (CalibDataID, 0, 0, i, RCoord, CCoord, 'all', StartPose)
endfor
dev_update_time ('on')
disp_continue_message (WindowHandle1, 'black', 'true')
stop ()
calibrate_cameras (CalibDataID, Error)
**标定相机参数
get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam)
**获得相机内参数
get_calib_data (CalibDataID, 'calib_obj_pose', [0,1], 'pose', PoseCalib)
**获得相机外参数
*
* Step: transform images
*
dev_open_window (0, Width + 5, Width, Height, 'black', WindowHandle2)
set_display_font (WindowHandle2, 14, 'mono', 'true', 'false')
tuple_replace (PoseCalib, 5, PoseCalib[5] - 90, PoseCalibRot)
**数组中的替换
set_origin_pose (PoseCalibRot, -0.04, -0.03, 0.00075, Pose)
**替换输入数组元素中的一个或多个元素,并用Replaced返回
PixelDist := 0.00013
pose_to_hom_mat3d (Pose, HomMat3D)
**将3D位姿信息转换成矩阵模型,即HomMat3D
gen_image_to_world_plane_map (Map, CamParam, Pose, Width, Height, Width, Height, PixelDist, 'bilinear')
**生成基于世界坐标系下的图像信息
***********************************************以下是目标图像的校正过程***************************************
Imagefiles := ['scratch/scratch_calib_01','scratch/scratch_perspective']
for I := 1 to 2 by 1
read_image (Image, Imagefiles[I - 1])
dev_set_window (WindowHandle1)
dev_display (Image)
dev_set_window (WindowHandle2)
map_image (Image, Map, ModelImageMapped)
dev_display (ModelImageMapped)
if (I == 1)
gen_contour_polygon_xld (Polygon, [230,230], [189,189 + 0.03 / PixelDist])
disp_message (WindowHandle2, '3cm', 'window', 205, 195, 'red', 'false')
dev_display (Polygon)
disp_continue_message (WindowHandle2, 'black', 'true')
stop ()
endif
endfor
*********************************************以上是目标图像的校正过程****************************************
*
* Step: measure in world coordinates in the transformed (rectified) image
*
dev_set_draw ('fill')
**设置阈值方式为区域
fast_threshold (ModelImageMapped, Region, 0, 80, 20)
**快速阈值
fill_up (Region, RegionFillUp)
**区域填充,默认是8邻域
erosion_rectangle1 (RegionFillUp, RegionErosion, 5, 5)
**腐蚀轮廓区域
reduce_domain (ModelImageMapped, RegionErosion, ImageReduced)
**模糊处理
fast_threshold (ImageReduced, Region1, 55, 100, 20)
dilation_circle (Region1, RegionDilation1, 2.0)
**圆度膨胀
erosion_circle (RegionDilation1, RegionErosion1, 1.0)
**圆度腐蚀
connection (RegionErosion1, ConnectedRegions)
**连通区域
select_shape (ConnectedRegions, SelectedRegions, ['area','ra'], 'and', [40,15], [2000,1000])
**形状筛选,这里是基于面积大小来筛选
count_obj (SelectedRegions, NumScratches)
**识别对象数组中的对象数
dev_display (ModelImageMapped)
*********************************************以下是对标定板的读取、识别****************************************
for I := 1 to NumScratches by 1
dev_set_color ('yellow')
**设置区域颜色为黄色
select_obj (SelectedRegions, ObjectSelected, I)
**从输入对象数组元素ObjectSelected中输出索引复制对象,其对象数就是count_obj中识别出来的对象数
skeleton (ObjectSelected, Skeleton)
**输入区域的中间轴
gen_contours_skeleton_xld (Skeleton, Contours, 1, 'filter')
**将以上识别出来的骨架,也就是中间轴转变为XLD轮廓
dev_display (Contours)
length_xld (Contours, ContLength)
**识别生成的XLD轮廓长度
area_center_points_xld (Contours, Area, Row, Column)
**生成区域中心XLD点
disp_message (WindowHandle2, 'L= ' + (ContLength * PixelDist * 100)$'.4' + ' cm', 'window', Row - 10, Column + 20, 'yellow', 'false')
disp_continue_message (WindowHandle2, 'black', 'true')
stop ()
endfor
dev_close_window ()
clear_calib_data (CalibDataID)
没有合适的资源?快使用搜索试试~ 我知道了~
HALCON数字图像处理(刘国华)图片和例程.rar
共496个文件
png:235个
hdev:100个
tif:73个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 19 下载量 193 浏览量
2022-06-20
08:35:18
上传
评论 2
收藏 59.14MB RAR 举报
温馨提示
HALCON数字图像处理(刘国华)图片和例程.rar
资源推荐
资源详情
资源评论
收起资源包目录
HALCON数字图像处理(刘国华)图片和例程.rar (496个子文件)
n.bmp 946KB
o.bmp 946KB
j.bmp 946KB
e.bmp 946KB
b.bmp 946KB
l.bmp 946KB
d.bmp 946KB
i.bmp 946KB
a.bmp 946KB
g.bmp 946KB
m.bmp 946KB
c.bmp 946KB
h.bmp 946KB
f.bmp 946KB
k.bmp 946KB
增加亮度.bmp 768KB
减小亮度.bmp 768KB
灰度直方图.bmp 768KB
原图.bmp 768KB
增加对比度.bmp 768KB
取反.bmp 768KB
原图.bmp 768KB
减小对比度.bmp 768KB
y.bmp 768KB
sum_abs.bmp 768KB
lena均衡化.bmp 768KB
原图.bmp 768KB
原图.bmp 768KB
highpass.bmp 768KB
laplace.bmp 768KB
x.bmp 768KB
2m.bmp 768KB
椒盐噪声.bmp 768KB
log.bmp 768KB
0.5m.bmp 768KB
lowpass.bmp 768KB
noise.bmp 768KB
1m.bmp 768KB
median5.bmp 768KB
结果.bmp 768KB
median7.bmp 768KB
median3.bmp 768KB
8邻域平滑.bmp 768KB
gaussnoise.bmp 768KB
8邻域平滑.bmp 732KB
gaussnoise.bmp 732KB
create_shape_model_3d.hdev 7KB
9.29测量程序.hdev 5KB
基于表面的三维匹配.hdev 5KB
Blob.hdev 4KB
助手.hdev 3KB
2d_data_codes_rectify_symbol.hdev 3KB
pyramid.hdev 3KB
图像拼接.hdev 3KB
XLD特征.hdev 2KB
字符识别.hdev 2KB
shape.hdev 2KB
去雾算法.hdev 2KB
区域距离.hdev 2KB
区域方向.hdev 2KB
最大类间方差法阈值.hdev 2KB
ncc.hdev 2KB
图5.13例程.hdev 2KB
腐蚀.hdev 2KB
add_image.hdev 2KB
sub_image.hdev 2KB
div_image.hdev 1KB
迭代法阈值.hdev 1KB
区域凸性.hdev 1KB
二维条码识别.hdev 1KB
图5.16例程.hdev 1KB
XLD轮廓附加属性.hdev 1KB
hough变换.hdev 1KB
一维条码.hdev 1KB
开运算.hdev 1KB
线性灰度.hdev 1KB
区域特性.hdev 1KB
边界提取.hdev 1KB
闭运算.hdev 1KB
骨架.hdev 1KB
膨胀.hdev 1KB
生成形状规则区域.hdev 1KB
灰度直方图区域.hdev 1KB
灰度开运算.hdev 1KB
灰度闭运算.hdev 1007B
中值滤波.hdev 1000B
显示文字.hdev 977B
低通.hdev 970B
灰度膨胀.hdev 952B
直方图.hdev 941B
灰度腐蚀.hdev 926B
基于标定的校正.hdev 903B
图像通道.hdev 896B
区域或多边形转换成亚像素轮廓.hdev 890B
逻辑运算.hdev 870B
根据直方图谷底进行阈值.hdev 856B
区域运算.hdev 851B
击中击不中.hdev 839B
异步采集.hdev 825B
实验法阈值.hdev 824B
共 496 条
- 1
- 2
- 3
- 4
- 5
qq_38220914
- 粉丝: 600
- 资源: 4313
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页