QQ登录

只需一步,快速开始

工业视觉halcon算术滤波器函数介绍

[ 复制链接 ]
abs_diff_image(Image1, Image2 : ImageAbsDiff : Mult : )
abs_diff_image计算两个图像之间的绝对差值。
输出图像ImageAbsDiff的灰度值g'由输入图像(Image1和Image2)的灰度值g1、g2计算如下:
g' = |(g1 - g2)| * Mult


1.abs_image(Image : ImageAbs : : )
abs_image计算任意类型图像的绝对灰度值,并将结果存储在ImageAbs中。
将复合图像的功率谱计算为“real”图像。操作符abs_image生成无符号图像的逻辑副本。


2.acos_image(Image : ArccosImage : : )
acos_image计算输入图像的反余弦,并将结果存储在图像ArccosImage中。
ArccosImage中的角用弧度表示。
如果图像包含反余弦函数有效域[-1,1]以外的灰度值,则ArccosImage中相应的灰度值设置为0。


3.add_image(Image1, Image2 : ImageResult : Mult, Add : )
add_image将两个图像相加。将输入图像(Image1和Image2)的灰度值g1、g2变换如下:
g' := (g1 + g2) * Mult + Add
如果发生溢出或下溢,这些值将被剪切。
注意,cyclic图像和direction图像并非如此。
生成的图像存储在ImageResult中。


4.asin_image(Image : ArcsinImage : : )
asin_image计算输入图像Image 的反正弦值,并将结果存储在图像ArcsinImage中。
ArcsinImage中的角用弧度表示。
如果图像包含反正弦函数有效域[-1,1]以外的灰度值,则将反正弦图像中相应的灰度值设置为0。

5.atan2_image(ImageY, ImageX : ArctanImage : : )
atan2_image计算输入图像ImageY和ImageX的反正切ImageY/ImageX,
利用两幅图像的灰度值符号确定结果的象限,并将结果存储在图像ArctanImage中。
ArctanImage中的角用弧度表示。


6.atan_image(Image : ArctanImage : : )
atan_image计算输入图像Image 的反正切值,并将结果存储在图像ArctanImage中。
ArctanImage中的角用弧度表示。


7.cos_image(Image : CosImage : : )
cos_image计算输入图像的余弦值,并将结果存储在real类型的图像CosImage中。
如果图像是direction类型或cyclic类型,则图像中的角度在内部转换为弧度。
如果图像是real类型,则假设图像中的角度用弧度表示。
对于direction图像,255的值将导致输出图像中的值为0。


8.div_image(Image1, Image2 : ImageResult : Mult, Add : )
div_image分割两个图像。将输入图像(Image1,Image2 )的灰度值(g1,g2)变换如下:

g':= g1 / g2 * Mult + Add

如果发生溢出或下溢,这些值将被剪切。
对于除数为零,结果设为零。


9.exp_image(Image : ExpImage : Base : )
exp_image计算对输入图像Image 的以Base 为基数的幂,并将结果存储在图像ExpImage中。
如果Image包含会溢出ExpImage范围的灰度值,例如,对于Base = 'e', > 88.722839,
则将ExpImage中对应的灰度值设置为ExpImage中可表示的最大值(即,3.4028235*10的23次方)。

10.gamma_image(Image : GammaImage : Gamma, Offset, Threshold, MaxGray, Encode : )
gamma_image对输入图像Image 执行通用伽玛编码或解码,并在GammaImage中返回结果图像。


广义伽马编码可以描述为:
2019-06-10_165812.jpg
这里,G’是gamma-encoded灰度值,G是线性灰度值,γ=Gamma,
o =Offset,
m = MaxGray,
t =Threshold,
s是一个由Gamma、OffsetThreshold和MaxGray计算的因子,以使转换的线性和指数部分是连续的。



类似地,广义伽玛解码可以描述为:
2019-06-10_170316.jpg
其中变量具有与gamma编码相同的含义,t' = st.
例如,通过设置
gamma = 1.0/2.4,
Offset = 0.055,
Threshold = 0.0031308,
就可以得到sRGB标准要求的gamma编码或解码。


同样,设置
gamma = 0.45,
Offset = 0.099,
Threshold = 0.018,
就可以得到HDTV视频标准所需的gamma编码或解码。
在任何情况下,都应该根据图像的图像类型设置MaxGray(例如,字节图像的255.0)。


11.invert_image(Image : ImageInvert : : )
invert_image反转图像的灰度值。对于“byte”和“cycle”类型的图像,计算结果如下:

g' = 255 - g

转换“direction”类型的图像

g' = (g + 90)
以180为模
在带符号类型的情况下,值无效。
生成的图像具有与输入图像相同的像素类型。

可以在一个调用中处理多个图像。
为每个输入图像生成一个输出图像。

invert_image可以在OpenCL设备上执行byte, direction, cyclic, int1, int2, uint2, int4, real 类型图像。


12.log_image(Image : LogImage : Base : )
log_image计算以Base 为基数的输入图像Image 的对数,并将结果存储在图像LogImage中。
如果图像包含对数函数有效域外的灰度值,即<=0, LogImage中对应的灰度值设置为0。


13.mult_image(Image1, Image2 : ImageResult : Mult, Add : )
将两图像相乘。将输入图像(Image1,Image2)的灰度值(g1,g2)变换如下:

g':= g1 * g2 * Mult + Add


如果发生溢出或下溢,这些值将被剪切。
注意,循环图像和方向图像并非如此。

可以在一个调用中处理多个图像。

在这种情况下,两个输入参数包含相同数量的图像,然后成对处理。
每对图像生成一个输出图像。

mult_image可以在OpenCL设备上执行 byte, int1, int2, uint2, int4, real, direction, cyclic, complex 类型图像。

但是,由于对于OpenCL 1.0,所有设备只支持单精度浮点数,并且不支持所有舍入模式。


14.max_image(Image1, Image2 : ImageMax : : )
max_image计算图像Image1和Image2的最大值(逐像素计算)。
结果存储在image ImageMax中。
生成的图像具有与输入图像相同的像素类型。
如果在一个调用中处理多个(对)图像,则将Image1中的每个i-th图像与Image2中的每个i-th图像进行比较。
因此,两个输入参数中的图像数量必须相同。
每个输入对生成一个输出图像。


15.min_image(Image1, Image2 : ImageMin : : )
min_image确定图像Image1和Image2的最小值(逐像素)。
结果存储在image ImageMin中。
生成的图像具有与输入图像相同的像素类型。
如果在一个调用中处理多个(对)图像,则将Image1中的每个i-th图像与Image2中的每个i-th图像进行比较。
因此,两个输入参数中的图像数量必须相同。
每个输入对生成一个输出图像。


16.scale_image(Image : ImageScaled : Mult, Add : )
scale_image通过如下变换对输入图像(Image)进行缩放:
g' := g * Mult + Add


如果发生溢出或下溢,这些值将被剪切。
注意,循环图像和方向图像并非如此。

该运算符可以应用于,例如,映射图像的灰度值,即,区间[GMin,GMax],到最大范围[0:255]。为此,选取的参数如下:
2019-06-10_170316.jpg
可以使用min_max_gray操作符确定GMin和GMax的值。


17.scale_image_range(Image : ImageScaled : Min, Max : )
方便程序缩放输入图像,从灰度值区间[Min,Max]扩展到区间[0,255](默认值)。

灰度值< 0或> 255(缩放后)被剪切。

如果要将图像缩放到与[0,255]不同的区间,可以通过传递两个值到Min和Max元组来实现。

例如:scale_image_range (Image, ImageScaled,[100,50],[200,250])将图像的灰度值从区间[100,200]映射到[50,250]。

所有其他灰色值将被剪切。



18.sub_image(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )
sub_image将输入图像(ImageMinuend和imagesubtra)的灰度值(g1,g2)变换如下:
g' := (g1 - g2) * Mult + Add
如果发生溢出或下溢,这些值将被剪切。
注意,循环图像和方向图像并非如此。




19.sin_image(Image : SinImage : : )
sin_image计算输入图像的正弦值,并将结果存储在实数类型的图像SinImage中。
如果图像是方向类型或循环类型,则图像中的角度在内部转换为弧度。
如果图像是实数,则假设图像中的角度用弧度表示。
对于方向图像,255的值将导致输出图像中的值为0。


20.tan_image(Image : TanImage : : )
tan_image计算输入图像Image 的正切,并将结果存储在real类型的图像TanImage中。
如果图像是direction类型或cyclic类型,则图像中的角度在内部转换为弧度。
如果图像是real,则假设图像中的角度用弧度表示。
对于direction图像,255的值将导致输出图像中的值为0。


21.sqrt_image(Image : SqrtImage : : )
sqrt_image计算输入图像Image 的平方根,并将结果存储在相同像素类型的图像SqrtImage中。
如果图像是带符号的像素类型,则在SqrtImage中将负像素值映射为零。


22.pow_image(Image : PowImage : Exponent : )
pow_image将输入图像的灰度值提高到Exponent次方 ,并将结果存储在图像pow_image中。
如果Image 中含有会溢出PowImage范围的灰度值,如Exponent = 10时,> 7131.55017,
则将PowImage中对应的灰度值设置为PowImage中可表示的最大值(即,)。
如果图像中含有不能取幂指数的灰度值,即,如果灰度值为负数,且指数不是整数,则将PowImage中对应的灰度值设置为0。


以上函数的例程:
read_image (Image,'ic1')
read_image (Image2,'ic2')
abs_diff_image (Image, Image2, ImageAbsDiff, 1)


convert_image_type (Image, ImageInt2, 'int2')
texture_laws (ImageInt2, ImageTexture, 'el', 2, 5)
abs_image (ImageTexture, ImageTexture)
add_image (ImageTexture, ImageTexture, ImageResult, 1, 0)
sub_image (Image, Image2, ImageSub, 1, 128)
div_image (Image, Image2, ImageResult1, 255, 0)
mult_image (Image, Image2, ImageResult2, 0.01, 0)
invert_image (Image, ImageInvert)
max_image (Image, Image2, ImageMax)
min_image (Image, Image2, ImageMin)
min_max_gray (Image, Image, 0, Min, Max, Range)
scale_image (Image, ImageScaled, 255/Range, -Min*255/Range)
scale_image_range (Image, ImageScaled1, 100, 200)


gen_sin_bandpass (Image3, 0.1, 'none', 'dc_center', 512, 512)
acos_image (Image3, ArccosImage)
asin_image (Image3, ArcsinImage)
atan2_image (Image3, ArccosImage, ArctanImage)
atan_image (Image3, ArctanImage1)
tan_image (Image3, TanImage)
sin_image (Image3, SinImage)
cos_image (Image3, CosImage)
exp_image (Image3, ExpImage, 'e')
gamma_image (Image3, GammaImage, 0.416667, 0.055, 0.0031308, 255, 'true')
log_image (Image3, LogImage, 'e')
sqrt_image (Image3, SqrtImage)
pow_image (Image3, PowImage, 2)

可以单步执行每个函数,查看执行效果
  

halcon从自学到接项目视频教程,另外再赠送全网最全资源  

  

欢迎围观我录制的一套halcon自学视频教程(进入)



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索