当前位置: 首页 > article >正文

Halcon 矫正图像 图像矫正

目录

1、图像预处理和形状校正

2、源码 

1.原图

2.矫正后的图像

3.示例代码 


        在图像处理领域中,Halcon是一种广泛使用的编程语言和库,它提供了丰富的图像处理功能。本文将详细解析一段Halcon代码,这段代码主要用于图像处理和形状校正。代码分为两部分,本文将逐一解析。

1、图像预处理和形状校正

1. 初始化变量

HomMat2DInvert := []
Row_T := []
Col_T := []

        首先,代码初始化了三个空变量,这些变量将在后续的图像处理过程中用于存储变换矩阵和坐标值。

2. 形状特征提取

region_features (ROI, 'rectangularity', Value)
    if (Value > RectY)
        HomMat2DInvert := []
        smallest_rectangle1 (ROI, Row_T, Col_T, Row2, Column2)
        reduce_domain (Image, ROI, ImageReduced)
        crop_domain (ImageReduced, ImagePart)
        move_region (ROI, ROIM, -Row_T, -Col_T)
    else
        * 矫正
        boundary (ROI, RegionBorder, 'inner')
        gen_contour_region_xld (RegionBorder, Contours, 'border')
        segment_contours_xld (Contours, ContoursSplit, 'lines', 15, 4, 2)
        area_center (ROI, Area, Row, Column)
        select_shape_xld (ContoursSplit, XLD1, 'rect2_phi', 'and', rad(-20), rad(20))
        * 标记
        UT := 0
        DT := 0
        LT := 0
        RT := 0

        通过region_features函数提取ROI(感兴趣区域)的矩形度特征。如果ROI的矩形度大于某个阈值RectY,则进行简单的矩形化处理,提取最小矩形并调整图像域。否则,进入校正处理流程。

3. 校正处理

boundary (ROI, RegionBorder, 'inner')
gen_contour_region_xld (RegionBorder, Contours, 'border')
segment_contours_xld (Contours, ContoursSplit, 'lines', 15, 4, 2)

        在校正处理部分,代码首先通过boundarygen_contour_region_xld函数生成ROI的轮廓,并使用segment_contours_xld函数将轮廓分割为线段。


4. 轮廓筛选和拟合

接下来,代码通过多个步骤筛选和拟合轮廓,以确定ROI的上下左右边界。

  • 上边界:通过筛选和拟合,确定上边界的线段,并处理特殊情况(多条线段)。
  • 下边界:类似地,确定下边界的线段。
  • 左边界:确定左边界的线段。
  • 右边界:确定右边界的线段。

每个方向的边界处理都涉及轮廓筛选、长度计算和线段拟合。例如,上边界的处理如下:


select_shape_xld (XLD1, XLD, 'row1', 'and', -1, Row)
length_xld (XLD, Length)
tuple_median (Length, Median)
select_shape_xld (XLD, XLD, 'contlength', 'and', max2(200,Median), 999999999)
count_obj (XLD, Num)

        通过筛选和拟合,代码确定了ROI的四个边界,并存储了相关的坐标信息。这些坐标信息将用于后续的图像校正或进一步分析。

5. 特殊情况处理

        在处理上下左右边界时,代码还考虑了特殊情况,如当边界由多条线段组成时,通过排序和选择特定的线段来确定最终的边界。

* 下
select_shape_xld (XLD1, XLD, 'row1', 'and', Row, Row*3)
length_xld (XLD, Length)
tuple_median (Length, Median)
select_shape_xld (XLD, XLD, 'contlength', 'and', max2(200,Median), 999999999)
count_obj (XLD, Num)
   if (Num == 1)
      copy_obj (XLD, XLDDown, 1, 1)
      fit_line_contour_xld (XLDDown, 'tukey', -1, 0, 5, 2, RowBeginDown, ColBeginDown, RowEndDown, ColEndDown, Nr, Nc, Dist)
        else
            DT := 1
            sort_contours_xld (XLD, Sorte

http://www.kler.cn/a/382703.html

相关文章:

  • 工业以太网PLC无线网桥,解决用户布线难题!
  • docker+nacos
  • [SWPUCTF 2021 新生赛]fakebase
  • 【自用】时序数据库、时序数据库,IOTDB官方文档笔记
  • 完成程序《大奖赛评分B》
  • 【CAP理论:概念、解释与应用】
  • CustomDataSource、Entity 和 Primitive 区别
  • MongoDB笔记02-MongoDB基本常用命令
  • 小程序 + AI 自动直播:一部手机开启抖音挂载小程序流量主变现之旅
  • 搭建react项目
  • Markdown转HTML
  • 前深度学习时代-经典的推荐算法
  • 《JVM第7课》堆区
  • qt QTextStream详解
  • ssm基于Web的汽车客运订票系统的设计与实现+vue
  • 解决return code from pthread_create() is 22报错问题
  • 《运维网络安全》
  • 对比Java和TypeScript中的服务注册和查找机制
  • 在 JavaScript 中,`Array.prototype.filter` 方法用于创建一个新数组,该数组包含通过测试的所有元素
  • 机器人助力Bridge Champ游戏:1.4.2版本如何提升玩家体验
  • java 实训第12天 (git版本控制继续)
  • 【无标题】特征降维的常见方法
  • 3D互动+AR试戴,重塑线上珠宝营销新体验!
  • 【题解】—— LeetCode一周小结44
  • 效果框架(效果ID3DXEffect)
  • ML 系列:机器学习和深度学习的深层次总结( 19)— PMF、PDF、平均值、方差、标准差