51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Halcon 创建图像

Halcon 中 HImage 为图像的数据结构,本文记录 HALCON 中生成图像的几种方式。

创建图像相关算子 {#创建图像相关算子}

| 序号 | 算子名称 | 算子含义 | |----|----------------------------------------------------------------------------------------------------------------|-----------------------------| | 1 | copy_image | 复制一个图像并为其分配新的内存。 | | 2 | gen_image1 | 从指向像素的指针创建图像。 | | 3 | gen_image1_extern | 使用存储管理从像素上的指针创建图像。 | | 4 | gen_image1_rect | 从像素上的指针创建一个带有矩形域的图像(带存储管理)。 | | 5 | gen_image3 | 创建一个从三个指针到像素(红色/绿色/蓝色)的图像。 | | 6 | gen_image3_extern | 使用存储管理从像素上的三个指针创建一个三通道图像。 | | 7 | gen_image_const | 创建一个具有常量灰度值的图像。 | | 8 | gen_image_gray_ramp | 创建一个灰色值斜坡。 | | 9 | gen_image_interleaved | 从指向交错像素的指针创建一个三通道图像。 | | 10 | gen_image_proto | 创建具有指定常数灰度值的图像。 | | 11 | gen_image_surface_first_order | 用一阶多项式创建一个倾斜的灰色曲面。 | | 12 | gen_image_surface_second_order | 用二阶多项式创建一个曲面。 | | 13 | region_to_bin | 将区域转换为二进制字节映像。 | | 14 | region_to_label | 将区域转换为标签图像。 | | 15 | region_to_mean | 用它们的平均灰度值绘制区域。 |

read_image {#read-image}

  • 读取图像,作为测试图像

语法: 示例:

copy_image {#copy-image}

  • 复制一个图像并为其分配新的内存

语法: 示例:

gen_image_const {#gen-image-const}

  • 创建指定大小的灰度为 0 的单通道图像

语法: 示例:

gen_image_gray_ramp {#gen-image-gray-ramp}

  • 根据下式创建一个渐变单通道图像

$$
ImageGrayRamp(r,c)=Alpha \times (r-row)+Beta \times (c-col) + 平均值
$$

语法:

  • 图像的大小由宽度和高度决定,灰度值的类型为 byte,有效区域外的灰色值会被剪切
  • 就是整张图大小为 Width, Height,围绕 Row, Column 为中心,此点均值为 Mean,纵向变化率为 Alpha,横向变化率 Beta,就这么样整个渐变图出来
  • 如果数值大于 255 或小于 0 会被置为 255 或 0
  • 输出为 byte 格式

示例:

gen_image_surface_first_order {#gen-image-surface-first-order}

  • 该函数和 gen_image_gray_ramp 功能几乎一致,只是可以指定图像类型

语法: 示例:

gen_image_surface_second_order {#gen-image-surface-second-order}

  • gen_image_surface_first_order 算子可以实现更加复杂的图像生成效果

  • 公式:

$$
\begin{aligned} \text { ImageSurface }(r, c) & =\text { Alpha }(r-\text { Row })^{2} \ & +\operatorname{Beta}(c-\text { Column })^{2} \ & +\operatorname{Gamma}(r-\text { Row }) *(c-\text { Column }) \ & +\operatorname{Delta}(r-\text { Row }) \ & +\operatorname{Epsilon}(c-\text { Column }) \ & +\text { Zeta }\end{aligned}
$$

语法: 示例:

gen_image_proto {#gen-image-proto}

  • 生成一张和输入图像一样长宽的指定灰度值的单通道图像

语法: 示例: 不论输入图像通道数为多少,输出图像均为单通道。

gen_image_interleaved {#gen-image-interleaved}

  • 通过一个指向交错像素的图像指针来创建一个三通道图像
  • 这个函数比较复杂也比较奇怪,要求输入图像的指针指向交错的图像,例如将 RGB 三通道图像按照 RGB像素的顺序压缩写入单通道图像中,然后再用这个函数解构出来,感觉用处不大

语法: 示例:

  • 直观上理解为左边的单通道图(RGB压缩到一行,所以宽三倍)提取组成右边的图

gen_image1 {#gen-image1}

  • 根据图像数据指针生成单通道

语法: 示例:

gen_image1_extern {#gen-image1-extern}

  • 根据图像数据指针生成单通道,并带有内存管理

语法: 示例:

gen_image3 {#gen-image3}

  • 根据图像数据指针生成三通道图像

语法: 示例:

gen_image3_extern {#gen-image3-extern}

  • 根据图像数据指针生成三通道图像,并带有内存管理

语法: 示例:

gen_image1_rect {#gen-image1-rect}

  • 从像素上的指针创建一个带有矩形域的图像(带存储管理)。
  • 函数很危险,不建议使用

语法: 示例:

region_to_bin {#region-to-bin}

  • 将区域转换为二进制字节映像。

语法: 示例:

region_to_label {#region-to-label}

  • 将区域转换为标签图像。

语法: 示例:

region_to_mean {#region-to-mean}

  • 用平均灰度值绘制区域。

语法: 示例:

参考资料 {#参考资料}



文章链接:
https://www.zywvvd.com/notes/coding/halcon/halcon-image-op/halcon-image-op/

赞(1)
未经允许不得转载:工具盒子 » Halcon 创建图像