halcon学习 图像定义域、裁减、变形

本文详细介绍了图像处理中如何修改和利用定义域(ROI),包括使用矩形和任意形状区域改变图像定义域,以及扩展定义域至最大。还涉及图像的裁剪、缩放、旋转、镜像和仿射变换等几何变换,如平移、旋转和缩放。此外,讨论了刚体仿射变换的应用,展示了如何通过变换矩阵实现这些操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义域(ROI)

修改图像的定义域(ROI),不会改变图像的尺寸。

  • 获得图像的当前定义域
    get_domain (Image, Domain)

  • 用矩形去改变图像的定义域。

dev_get_window (WindowHandle)
read_image (Image, 'mvtec_logo')
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
* 矩形定义域
rectangle1_domain (Image, ImageReduced, Row1, Column1, Row2, Column2)
dev_clear_window ()
dev_display (ImageReduced)
  • 用任意形状的区域去改变图像的定义域
dev_get_window (WindowHandle)
read_image (Image, 'mvtec_logo')
draw_region (Region, WindowHandle)
* 任意形状定义域
reduce_domain (Image, Region,ImageReduced)
dev_clear_window ()
dev_display (ImageReduced)
  • 扩展图像的定义域到最大(去除ROI)
    full_domain (ImageReduced, ImageFull)

  • 图像的定义域更换
    change_domain (Image,Domain, ImageNew)

  • 批量改变图像定义域

  1. 与reduce_domain的区别是reduce_domain只对第一个区域有效,结果只有一副图像
  2. add_channels 生成的 图像数量与Regions的数量一致
concat_obj (Domain1, Domain2, Regions)
add_channels (Regions, Image, GrayRegions)

图像的裁剪

  • 按矩形区域裁剪
    crop_rectangle1 (Image, ImagePart, 100, 100, 200, 200)
  • 按图像的定义域裁减图像,图像的定义域未变,图像尺寸变小为定义域的最小外接矩形
    crop_domain (ImageReduced, ImagePart)
  • 按图像定义域裁剪图像,裁剪时对四边的裁剪位置进行偏移
    crop_domain_rel (Image, ImagePart, 100, 100, 100, 100)

图像变形

  • 缩放
  1. 缩放到固定大小zoom_image_size (Image, ImageZoom, 512, 512, 'constant')
  2. 按比例缩放zoom_image_factor (Image, ImageZoom, 0.5, 0.5, 'constant')
  • 旋转
    rotate_image (Image, ImageRotate, 90, 'constant')

  • 镜像
    mirror_image (Image, ImageMirror, 'row')

  • 仿射变换实现平移旋转缩放

dev_get_window (WindowHandle)
read_image (Image, 'mvtec_logo')
* 创建变换矩阵
hom_mat2d_identity(HomMat2DIdentity)
* 平移
hom_mat2d_translate (HomMat2DIdentity, 20, 20, HomMat2D)
* 旋转
* hom_mat2d_rotate (HomMat2D, rad(5), 100, 200, HomMat2D)
* 缩放
* hom_mat2d_scale (HomMat2D, 0.5, 0.5, 100, 200, HomMat2D)
* 镜像
* hom_mat2d_reflect (HomMat2D, 0, 300, 500, 300, HomMat2D)
* 斜切
* hom_mat2d_slant (HomMat2D, -0.78, 'x', 100, 100, HomMat2D)
* 应用
affine_trans_image (Image, ImageAffineTrans, HomMat2D, 'constant', 'false')
  • 刚体仿射变换 实现 平移旋转
dev_get_window (WindowHandle)
read_image (Image, 'mvtec_logo')
threshold (Image, Regions, 0, 255)
area_center (Regions, Area, Row, Column)
orientation_region (Regions, Phi)
*创建变换矩阵
vector_angle_to_rigid (Row, Column, 0, Row-50, Column, rad(15), HomMat2D)
*应用
affine_trans_image (Image, ImageAffineTrans, HomMat2D, 'constant', 'false')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值