0019_畸变矫正(单相机标定)

畸变

图像形状发生了变形(本来是直线,变成了向内凹或者向外凸的弧线)

 

单相机畸变矫正的处理步骤

1. 使用标定板,在halcon中使用标定助手,得到相机的内外参数

可以将内外参数据生成到halcon中

2. 标定后的初始内参形成无畸变的内参

3. 标定后的初始内参与无畸变内参之间形成map映射关系

4. 将map映射作用到图像上

 

涉及到的算子

形成无畸变内参

change_radial_distortion_cam_par

Mode:模式

CamParamIn:标定后的内参

DistortionCoeffs:镜像畸变的参数,缺省值即可

CamParamOut:拉直之后的内参

 

形成矫正映射

gen_radial_distortion_map

Map:图像映射数据

CamParamIn:标定后的内参

CamParamOut:拉直后的参数

MapType:插值算法

 

生成畸变矫正后的图像

 

map_image

Image:被处理的图像

Map:图像映射数据

ImageMapped:映射之后的图像

 

内外参的简单说明

外参主要是一些姿态方面的参数,图像的旋转平移这一类的

内参主要是相机设备(比如透镜等)本身所产生的一些畸变

 

更多halcon和六轴机械臂算法干货公众号:

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当进行相机标定时,通常需要进行畸变矫正以提高图像质量。在MATLAB中,可以使用相机标定工具箱(Camera Calibration Toolbox)来实现相机标定畸变矫正。 以下是一个简的MATLAB代码示例,用于相机标定畸变矫正: ```matlab % 步骤1:准备标定板图像和对应的世界坐标点 imageFileNames = {'image1.jpg', 'image2.jpg', 'image3.jpg', ...}; % 标定板图像文件名 squareSize = 25; % 标定板方格尺寸(位:毫米) worldPoints = generateCheckerboardPoints(boardSize, squareSize); % 生成标定板上的世界坐标点 % 步骤2:检测标定板角点 [imagePoints, boardSize] = detectCheckerboardPoints(imageFileNames); % 步骤3:进行相机标定 params = estimateCameraParameters(imagePoints, worldPoints, 'EstimateSkew', false, 'EstimateTangentialDistortion', true); % 步骤4:显示标定结果 figure; showExtrinsics(params); % 步骤5:读取待校正图像 image = imread('test_image.jpg'); % 步骤6:进行畸变矫正 undistortedImage = undistortImage(image, params); % 步骤7:显示校正结果 figure; imshowpair(image, undistortedImage, 'montage'); ``` 这段代码中,首先需要准备标定板图像和对应的世界坐标点。然后,通过`detectCheckerboardPoints`函数检测标定板角点,并使用`estimateCameraParameters`函数进行相机标定。接下来,可以使用`showExtrinsics`函数显示标定结果。最后,可以使用`undistortImage`函数对待校正图像进行畸变矫正,并使用`imshowpair`函数显示校正结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值