初学者系列:halcon(二) 图像算子Image

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学者系列:halcon(二) 图像算子Image相关的知识,希望对你有一定的参考价值。

参考技术A 算子使用位置

算子功能简述(详细内容持续更新中!!!)

预处理:
mean_image 消除噪声
binomial_filter 消除噪声
median_image 抑制小斑点或者细线
smooth_image 平滑图像
anisotropic_diffusion 平滑图像同时保存边缘(图像越大越耗时)

halcon算子翻译——gen_image3_extern

名称

gen_image3_extern - 使用内存管理从指向像素的三个指针创建一个三通道图像。

用法

gen_image3_extern( : Image : Type, Width, Height, PointerRed, PointerGreen, PointerBlue, ClearProc : )

描述

  算子gen_image3_extern创建Width*Height大小的三通道图像。 PointerRed,PointerGreen和PointerBlue中的像素按行存储。 给定像素的类型必须对应于Type(请参见gen_image_const以获取更详细的图像类型说明)。 请注意,如何传递一个指针值取决于所使用的算子和编程环境。 确保传递存储图像数据的实际内存地址,而不是指针变量的地址。 必须注意不要在64位体系结构上截断64位指针。

  新图像的内存不是由HALCON新分配的,与gen_image3相反,因此也不被复制。 这意味着PointerRed,PointerGreen和PointerBlue指向的内存空间必须通过删除对象Image来释放。 这是由调用者提供的程序ClearProc完成的。 此过程必须具有以下形式

  void ClearProc(void* ptr);

  并在删除图像时使用__cdecl调用约定进行调用。 如果内存不被释放(在图像采集卡或静态存储器的情况下),可以传递“无中继”或NULL指针的函数。 类似于参数PointerRed,PointerGreen和PointerBlue,指针必须根据使用的算子形式和编程环境传递给函数。

注意

gen_image3_extern不检查在PointerRed,PointerGreen和PointerBlue中是否分配了Width*Height图像的足够内存。

并行

●  多线程类型:可重入(与非独占算子并行运行)。
●  多线程范围:全局(可以从任何线程调用)。
●  不并行化处理。

参数

Image (output_object)   image → object (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)
  创建的Halcon图像。


Type (input_control)    string → (string)
  像素类型。
  Default value: ‘byte‘
  List of values: ‘byte‘, ‘cyclic‘, ‘direction‘, ‘int1‘, ‘int2‘, ‘int4‘, ‘real‘, ‘uint2‘


Width (input_control)    extent.x → (integer)
  图像宽度。
  Default value: 512
  Suggested values: 128, 256, 512, 1024
  Typical range of values: 1 ≤ Width ≤ 512 (lin)
  Minimum increment: 1
  Recommended increment: 10
  Restriction: Width >= 1


Height (input_control)    extent.y → (integer)
  图像高度。
  Default value: 512
  Suggested values: 128, 256, 512, 1024
  Typical range of values: 1 ≤ Height ≤ 512 (lin)
  Minimum increment: 1
  Recommended increment: 10
  Restriction: Height >= 1


PointerRed (input_control)    pointer → (integer)
  指向第一个通道的第一个灰度值的指针。


PointerGreen (input_control)    pointer → (integer)
  指向第二个通道的第一个灰度值的指针。


PointerBlue (input_control)    pointer → (integer)
  指向第三个通道的第一个灰度值的指针。

 

ClearProc (input_control)    pointer → (integer)
  指向在删除对象时重新释放图像的内存的函数的指针。
  Default value: 0

Example (C)

void NewImage(Hobject *new)
{
  unsigned char  *image_red;
  unsigned char  *image_green;
  unsigned char  *image_blue;
  int            r,c;
  image_red = malloc(640*480);
  image_green = malloc(640*480);
  image_blue = malloc(640*480);
  for (r=0; r<480; r++)
    for (c=0; c<640; c++)
    {
      image_red[r*640+c] = c % 255;
      image_green[r*640+c] = (c+64) % 255;
      image_blue[r*640+c] = (c+128) % 255;
    }
  gen_image3_extern(new,"byte",640,480,(Hlong)image_red,    (Hlong)image_green,(Hlong)image_blue,(Hlong)free);
}

结果

如果参数值正确,则算子gen_image3_extern返回值2(H_MSG_TRUE)。 否则会引发异常。

Alternatives

gen_image3, gen_image_const, get_image_pointer3, gen_image1_extern

See also

reduce_domain, paint_gray, paint_region, set_grayval

模块

Foundation

以上是关于初学者系列:halcon(二) 图像算子Image的主要内容,如果未能解决你的问题,请参考以下文章

Halcon斑点分析涉及算子及其高阶运用

halcon算子翻译——gen_image3_extern

Halcon之计算距离算子

halcon算子翻译——gen_image_gray_ramp

HALCON 算子函数 File

halcon算子翻译——gen_image_interleaved