halcon相机标定实验

根据相机标定模型,创建虚拟数据点进行相机标定实验

dev_close_window ()
read_image (Image, 'calib/calib-3d-coord-01')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, 768, 576, 'black', WindowHandle)
*调节下面四个参数实验
*物距
UVal:=120.0
*像距
VVal:=5
*点间隔
GridVal:=5
*畸变系数(调节畸变系数看畸变情况)
KVal:=-2e-7

*焦距
FVal:=1.0/(1.0/UVal+1.0/VVal[0])
*假设世界坐标系和相机坐标系方向一致,且只在Z轴存在平移关系
WorldX:=Width*0.1
WorldY:=Height*0.1
PixW:=Width*1.0
PixH:=Height*1.0
Sx:=WorldX*FVal/UVal/PixW
Sy:=Sx

tuple_int(WorldX/GridVal,xnum)
tuple_int(WorldY/GridVal,ynum)

NX:=[]
NY:=[]
NZ:=[]
*畸变前后坐标
RowSrc:=[]
ColSrc:=[]
Rows:=[]
Cols:=[]
TotalNum:=xnum*ynum
*生成畸变数据
for i:=0 to ynum-1 by 1
    for j:=0 to xnum-1 by 1
        *居中
        TempNx:=-GridVal*(xnum-1)*0.5+j*GridVal
        TempNy:=-GridVal*(ynum-1)*0.5+i*GridVal
        NX:=[NX,TempNx]
        NY:=[NY,TempNy]
        NZ:=[NZ,0]
        *注意转换到图像坐标系
        TempRow:=TempNy*FVal/UVal/Sy+PixH*0.5
        TempCol:=TempNx*FVal/UVal/Sx+PixW*0.5
        RowSrc:=[RowSrc,TempRow]
        ColSrc:=[ColSrc,TempCol]
        *畸变坐标
        TempRow:=TempRow-PixH*0.5
        TempCol:=TempCol-PixW*0.5
        r2:=TempRow*TempRow+TempCol*TempCol
        tuple_sqrt(1.0-4.0*KVal*r2,val)
        TempRow:=2.0/(1.0+val)*TempRow+PixH*0.5
        TempCol:=2.0/(1.0+val)*TempCol+PixW*0.5
        
        Rows:=[Rows,TempRow]
        Cols:=[Cols,TempCol]
    endfor
endfor
gen_region_points (Region, RowSrc, ColSrc)
gen_region_points (Region1, Rows, Cols)
dilation_circle (Region, RegionDilation, 5)
dilation_circle (Region1, RegionDilation1, 5)
dev_set_color('red')
dev_display (RegionDilation)
dev_set_color('blue')
dev_display (RegionDilation1)
stop()

StartCamPar := [FVal,0,Sx,Sy,PixW*0.5,PixH*0.5,PixW,PixH]
vector_to_pose (NX, NY, NZ, RowSrc, ColSrc, StartCamPar, 'iterative', 'error', NStartPose, Quality)
camera_calibration (NX, NY, NZ, Rows, Cols, StartCamPar, NStartPose, 'all', CamParam, NFinalPose, Errors)
camparaout:=CamParam
camparaout[1]:=0
* 径向畸变映射图
gen_radial_distortion_map (Map, CamParam, camparaout, 'bilinear')
region_to_bin (RegionDilation1, BinImage, 255, 0, Width, Height)
map_image (BinImage, Map, ImageMapped)
dev_display (ImageMapped)
dev_display(RegionDilation)

效果
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!Halcon是一种广泛使用的机器视觉开发库,可以与笔记本相机配合使用。Halcon支持多种不同类型的相机,包括工业相机、USB相机和笔记本内置相机等。要使用Halcon进行相机图像处理,您需要先安装Halcon软件,并使用其提供的API来控制和获取相机图像。 在使用Halcon时,您可以通过以下步骤来配置和使用笔记本相机: 1. 安装Halcon:首先,您需要从Halcon官方网站下载并安装Halcon软件。请确保选择与您的操作系统兼容的版本。 2. 连接相机:将笔记本相机连接到计算机上。根据相机类型,您可能需要使用适当的接口线(例如USB线)将其连接到计算机的相应端口。 3. 打开Halcon示例程序:启动Halcon软件后,您可以打开其中的一个示例程序来获取相机图像。 4. 配置相机参数:根据您的相机型号和要求,在示例程序中找到相机参数配置的部分。您可以设置图像分辨率、曝光时间、增益等参数。 5. 获取图像:在示例程序中调用相应的函数或方法来获取相机图像。您可以将图像保存到一个变量中,以便后续使用。 6. 图像处理:使用Halcon提供的函数和工具进行图像处理操作。您可以进行特征提取、边缘检测、目标识别等各种图像处理任务。 7. 分析结果:根据您的需求,对处理后的图像结果进行进一步的分析和处理。 请注意,以上步骤只是一个简单的示例,具体的操作方法可能会因您使用的Halcon版本和相机型号而有所不同。建议您参考Halcon官方文档或用户手册,以获取更详细和准确的操作指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值