halcon中怎么降低图像亮度_Halcon学习(图像预处理)

文章目录

图像的变换与校正

由于相机拍摄的时候可能存在角度偏差,因此实际获得的画面可能会与想象中有所差异。例如:采集连续目标时,可能每幅图中目标区域的位置和角度都不一样;又或者目标对象是一块矩形区域,而在采集到的图像中,这一块可能变成了梯形或扭曲的四边形。

因此,接下来要做的第一件事,就是把这块区域进行一些调整,使之恢复成原本的矩形区域。

首先需要理解:二维图像的平移、旋转和缩放,这里就不在赘述了,可以查看博主的另一篇文章 智能探针台-相关算法描述-仿射变换及其变换矩阵的理解。

把平移、旋转和缩放结合起来,可以才Halcon中使用仿射变换的相关算子。一个放射变化的矩阵包括平移向量和旋转向量。

仿射变换矩阵使用步骤:

使用hom_mat2d_identity (HomMat2DIdentity)创建一个空的仿射变换矩阵。

指定变换的参数,这里可以指定平移、缩放、旋转参数,例如:

设置平移矩阵,像x轴正方向平移30个像素,像y轴正方向平移30个像素:hom_mat2d_translate (HomMat2DIdentity, 30 30, HomMat2DTranslate)

设置旋转矩阵,以点(Px,Py)为参考点,旋转角度phi:hom_mat2d_rotate (HomMat2DIdentity, rad(Phi), Px, Py, HomMat2DRotate)

设置缩放矩阵,以点(Px,Py)为参考点,放大2倍:hom_mat2d_scale (HomMat2DIdentity, 2, 2, Px,Py, HomMat2DScale)

* 创建一个空的仿射变换矩阵

hom_mat2d_identity (HomMat2DIdentity)

* 设置平移矩阵

hom_mat2d_translate (HomMat2DIdentity, 64, 64, HomMat2DTranslate)

* 设置旋转矩阵

hom_mat2d_rotate (HomMat2DTranslate, 0.78, 0, 0, HomMat2DRotate)

* 设置缩放矩阵

hom_mat2d_scale (HomMat2DRotate, 2, 2, 0, 0, HomMat2DScale)

应用放射变换矩阵:

应用于像素点:使用affine_trans_pixel算子。

应用于二维点:使用affine_trans_point_2d算子。

应用于图像:使用affine_trans_image算子。

应用于区域:使用affine_trans_region算子。

应用于XLD轮廓:使用affine_trans_contour_xld算子。

* 应用于像素点

affine_trans_pixel (HomMat2DScale, 64, 64, RowTrans, ColTrans)

* 应用于二维点

affine_trans_point_2d (HomMat2DScale, RowTrans, ColTrans, Qx, Qy)

* 应用于图像

affine_trans_image (Image, ImageAffineTrans, HomMat2DScale, 'constant', 'false')

* 应用于区域

affine_trans_region (Region, RegionAffineTrans, HomMat2DScale, 'nearest_neighbor')

* 应用于XLD轮廓

affine_trans_contour_xld (, ContoursAffineTrans, HomMat2DScale)

仿射变换其实是投影变换的一个特殊例子,其特殊性在于变换后图像的形状仍然维持原状。投影变换包括的情况很多,有可能变换前后图像的形状发生了很大的改变,如对边不再平行,或者发生了透视畸变等,这时可以使用投影变换使其恢复原状。其步骤与仿射变换类似,首先计算投影变换矩阵,然后计算投影变换参数,最后将投影变换矩阵映射到对象上。

要计算投影变换矩阵,应找出投影变换区域的特征点的位置及其投影后的位置,通过hom_vector_to_proj_hom_mat2d算子进行换算,就可以根据已知的投影对应的点的值计算投影变换矩阵。然后用projective_trans_image对图像进行投影变换,就能得到投影后的图像了。

实例:透视性变图像校正

*关闭当前显示窗口,清空屏幕

dev_close_window ()

*读取测试图像

read_image (Image_

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值