先来看年过个算子的原型:gray_range_rect( Image : ImageResult : MaskHeight, MaskWidth: ) 函数作用:决定某个方形区域内的灰度值,计算方形区域内的最大最小灰度的差(最大-最小),并体现到每个图像点上。如果MaskHeight和MaskWidth是偶数,它们被变为靠近的小的奇数值,图像边缘的灰度值是呈镜像出现的。 参数列表:Image(in):被计算灰度值的图像ImageResult(out):包含灰度值的图像Mask
halcon的这种纹理检测模型使用起来相当方便。只需要下面几个步骤:创建纹理检测模型create_texture_inspection_model读多张图,选择图片中的一片没纹理正常的ROI传给检测模型设置训练参数 set_texture_inspection_model_param开始训练 train_texture_inspection_model读取要检测的图片,apply_texture_inspection_model进行检测,直接就能输出缺陷的regi
一般我们见到的简单的图像处理都是空间域的处理。即图像是一个二维图像,每个点都有对应的坐标。图像的频域理解起来并不是那么简单,因此我在这里说一下个人理解,希望帮助到需要帮助的人。本篇博文使用Halcon软件的示例以及图像进行展示。首先需要说明的几点知识:1.如果需要看频谱图是要进行傅里叶变换的,图像的傅里叶变换其实是将图像的灰度分布函数变换为图像的频率分布函数。2.图像的频域中的高频分量对应图像的细节信息,图像低频分量对应图像的轮廓信息。高频分量代表的是信号的突变部分(即灰度值梯度大),而低频分量
此示例是一个综合的示例,检测的是皮革纹理表面上出现的凸起、凹痕、划痕上的缺陷。使用的依然是光度立体法,只是不同的缺陷,需要使用的是不同参数所生成的图像。示例代码如下:* 使用光度立体的方法检测皮革样品
* Initialization
dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 640, 480, '
dev_close_window ()
dev_update_off ()
Path := 'lcd/mura_defects_texture_'
read_image (Image, Path + '01')
get_image_size (Image, Width, Height)
dev_open_window (0,
目标:实现高纹理图像中缺陷的检测(黑色)。思路为:1.对彩色图像进行R G B分解,选取B作为后续图像。2. 生成背景模板,将图像傅里叶变换到频域中,通过高斯滤波,然后傅里叶反变换回来,得到的图像就是背景模板。3 .背景差分。采用sub_image函数进行图像差分,增强两幅图像的差异4 .分水岭算法分割,在分割之前采用中值滤波来抑制小斑点或细线。分水岭后,图像分割为多个轮廓(region)。5 .计算多个轮廓region的灰度信息,包括能量。相关度、同一度、对比度,通过灰度共生矩阵。 前面的两个
texture.hdev这个例子是主要讲解了histo_2dim 、class_2dim_sup 搭配使用灰度直方图进行图像分割。* Find textured areas (trees and bushes)
*
dev_close_window ()
Interactive := 0
dev_close_window ()
read_image (MreutHi
无纺布折痕检测(3)· 基于灰度投影的折痕检测 https://www.skcircle.com/?id=1279频率域滤波基础之一 https://www.skcircle.com/?id=330基于二次曲面拟合的脏污检测 https://www.skcircle.com/?id=1274视觉进阶:阈值分割函数总结 https://www.skcircle.com/?id=683Hal
原图:halcon程序:read_image (Image, 'C:/Users/Administrator/Desktop/划痕+油污+瑕疵的检测/划痕、油污、瑕疵/表面划痕/Image.bmp')
dev_close_window()
get_image_size(Image, Width, Height)
dev_open_window(0, 0, Width, Height