2018-11-17 16:27:28
在Halcon的rft变换中,我们经常可以看到这样的算子组合:rft_generic (Image, ImageFFT2, 'to_freq', 'none', 'complex', Width) convol_fft (ImageFFT2, ImageFilter, ImageConvol2)rft_generic (ImageConvol2, I...
2018-11-17 16:18:42
有时候通常需要简单的拼图,不涉及图像融合之类的,仅仅是简单的平移将多张图拼接成一张图。tile_images和tile_images_offset就是用于简单拼图的2个算子。 谈到拼图,肯定有以下问题要明确:1、将多少张图拼起来?由于是多张图,这需要一个元组来存储多张图片的集合。2、是横向拼图,还是纵向拼图?这涉及拼图的方向。3、是一张挨着一张无缝拼接吗?能不能做“有缝”的自由拼接?这涉及拼接偏移...
2018-11-17 16:13:27
线扫相机的原理:线扫相机一般一次只拍摄一条线(线宽通常是1个像素),在机构运动的过程中,线扫相机不断地拍摄线,于是“聚线成面”,这就是线扫相机成像的原理。 线扫相机的原理决定了,它所拍摄的物体必须要运动。机构运动的话,就存在机构的速度是否和线扫相机采集的速度匹配的问题。将对机构运动速度的要求进行拆分的话,其实就是如下两点:① 运动速度必须与线扫相机的工作行频(即采集速度)相匹配。② 机构的运动速度...
2018-11-17 13:59:21
二维仿射变换,顾名思义就是在二维平面内,对对象进行平移、旋转、缩放等变换的行为(当然还有其他的变换,这里仅论述这三种最常见的)。 Halcon中进行仿射变换的常见步骤如下:① 通过hom_mat2d_identity算子创建一个初始化矩阵(即[1.0, 0.0, 0.0, 0.0, 1.0, 0.0]);② 在初始化矩阵的基础上,使用hom_mat2d_translate(平移)、hom_mat2...
2018-11-17 12:44:22
我们知道,Halcon中的坐标系的原点在左上角,而一般二维平面坐标系的原点在左下角。那么Halcon中坐标系和一般的二维坐标系有什么区别呢?我通过下面这个例子来分析。gen_image_const (Image, 'byte', 512, 512)
dev_set_draw ('margin')
*点1
gen_circle (Circle1, 10,...
2018-11-17 12:27:31
例图:read_image (Image, 'C:/Users/Administrator/Desktop/1.png')
threshold (Image, Regions, 0, 112)
skeleton(Regions,TriangleSkeleton)
gen_contours_skeleton_xld(TriangleSkeleton,Triangl...
2018-11-17 12:21:49
Halcon中如何通过灰度线性映射增强图片对比度呢?不急,我先讲点其他的。如果你用过Photoshop,那么想必对增强图像的对比度很熟悉。在Photoshop中,我们对下面这张图执行“色阶”调整:执行“色阶”调整:可以观察到图片的对比度明显增强。(白的更白,黑的更黑了)它的原理是这样的:将原图中灰度值小于55的点全部强制置为0,将灰度值高于140的点强制置为255,并且将55~140之间的色阶强行...
2018-11-17 12:19:50
以Halcon为例,一般解码的步骤为:创建解码模型——设置解码参数——执行解码——清除模型回收内存。如下所示:create_bar_code_model ([], [], BarCodeHandle)
set_bar_code_param (BarCodeHandle, 'num_scanlines', 30)
find_bar_code (Image, SymbolRegio...
2018-11-17 12:04:47
select_shape_proto是一个非常有用的region筛选算子,但是由于难以理解,因此一般人使用得不是太多。 算子签名如下:select_shape_proto(Regions, Pattern : SelectedRegions : Feature, Min, Max : )其中Feature可以取这7种模式:'distance_center'、'distanc...
2018-11-17 11:08:23
赃污通常是比较浅的痕迹,一般你是无法通过threshold来处理的,否则它就不是什么赃污而是刮伤、疤痕之类的。处理这种不明显的痕迹,傅立叶变换算子是最常用到的。素材图:上面的问题图片你可能并不觉得有什么问题,我们用photoshop来调节一下色阶。结果看到了红圈中我示意的两个缺陷处。我们先给出处理代码,后面在分析一下代码:read_image (Image, 'C:/Users/Admin...
2018-11-16 15:06:10
边缘检测的定义 :使用数学方法提取图像像元中具有亮度值(灰度)空间方向梯度大的边、线特征的过程。边缘 是指周围像素灰度有阶跃变化或屋顶等变化的那些像素的集合。图像的边缘对应着图像灰度的不连续性。显然图像的边缘很少是从一个灰度跳到另一个灰度这样的理想状况。真实图像的边缘通常都具有有限的宽度呈现出陡峭的斜坡状。边缘的锐利程度由图像灰度的梯度决定。梯度是指灰度变化的最快的方向和数量。常见的边缘点有三种...
2018-11-16 14:30:54
2.1 the process of 1D Edge extraction Then, the mean gray value along each line of projection is calculated. The sequence of these mean valuesis called the profile简单的说 是以 profile Line 为基准 对profile Lin...
2018-11-16 14:26:54
本人文着重阐述以下问题: halcon是否只能使用halcon专用的标定板?halcon标定板如何生成?halcon标定板如何摆放,拍照数量有无限制? halcon是否只能使用halcon专用的标定板? halcon提供了简便、精准的标定算子并且提供了标定助手,这无疑大大方便了广大开发者。在halcon中有两种方式可以进行标定:如halcon自带例程中出现的,用halcon定义的标定板 ,如下图...
2018-11-16 14:24:19
本次先对halcon的自标定做个整体介绍,了解屌炸天的自标定在实际应用中的应用与实现方法,具体的编程细节将在后续的文章中介绍。halcon提供了一种自标定的算子,它可以在不用标定板的情况下,标定出相机内参(无焦距),相对于多幅标定无法获取相机的外参。求出了相机内参就可以进行畸变校正,因而自标定相对于多幅标定,在畸变校正方面更快捷,这样设备在现场更容易操作、维护。在畸变校正以后我们同样可以放置一个参...
2018-11-16 14:21:44
一个喷码识别的案例read_image (Image, 'D:/用户目录/Desktop/2.png')
rgb1_to_gray(Image, Image)
get_image_size (Image, Width, Height)
* 获取喷码区域的方法很多 比如可以用mean+dyn的动态阈值
dots_image (Image, Dot...
2018-11-16 14:18:33
在日常工程应用中,我们通常通过halcon的 shape-based matching(形状匹配)进行各种定位,如以前文章介绍的这样,理解各个参数并灵活应用通常就能得到很好的匹配效果和匹配速度,当待匹配物体有轻微变形时,并不影响得到的匹配结果,然后当待匹配物体有较大变形时,如塑料产品在成形时变形、纺织产品的花纹因为褶皱变形等,要想得到精确的定位结果就显得捉襟见肘, 如下图所示,印刷品有较大变形,在...
2018-11-16 14:14:58
当我们用VC\C#调试halcon代码的时候,通常会遇到一个头痛的问题,我们无法看到halcon变量的调试信息如下图:什么鬼。。。什么鬼比如我们想看一个double数值变量,我们需要double score = htScore.D()或者当我们想看一个image、region的中间处理结果时,我们需要存文件或者输出到窗口中如此的繁琐以至于大大降低了开发效率。 然而这些烦恼在halcon12中得到了...
2018-11-16 14:12:21
很多扫描APP都有祛底色的功能:用于改善成像质量,通常扫描后的图像可能会用于存档或者再打印。 本来想通过扫描后打印,想法是好的,但是打印出来的文件不是自己想象的那样,打印出来有底色,而且很严重,那该怎么办才能解决? 熟悉photoshop的通常通过色阶调整来达到此目的,但是今天介绍的是用halcon灰度拉伸函数(scale_image)来达到此目的。下图是halcon祛底色的效果。在halcon的...
2018-11-16 14:09:08
如果不了解最小二乘算法 请先阅读: Least squares的算法细节原理https://en.wikipedia.org/wiki/Least_squares通常在halcon中拟合直线会用houghline或者 fitline。本文提供一种新的选择,用halcon的矩阵操作实现最小二乘拟合直线首先随机生成一组数据
Mx:=[100:10:500]
tuple_length(Mx,len)...
2018-11-16 13:34:24
收到一封email,有个学员求助去除衣服上纹理的干扰,然后提取衣服上徽章的边缘的方法。我想他肯定是个很努力上进的boy,在求助以前也许已经试过各种方法,通过二值化不断的调试阈值, 寻找各种边缘检测的算子不断的实验,或者更高阶的用FFT试图去掉背景等等,我想起了我刚入门的时候 那股不达目的绝不罢休的狠劲,在网络上或者图书馆搜索相关的书籍, 试图找到答案,然而受制于自身知识体系的不完善,并不能得到满意...
2018-11-15 20:39:52
这是一条金属棒上的伤疤,不知道被什么啃去了一块,你说该怎么才能把这个伤疤提取出来呢?肯定是非常简单的,核心一定是threshold算子做阈值分割,然后就是select_shape选择区域只不过在threshold算子的前置算子会有所不同,在select_shape后面的后置算子也如此。本例子提供三种方法,基本上思路都是增加图像,然后threshold阈值分割。方法一。dev_update_off...
2018-11-14 20:38:44
先来张素材图read_image (Image, 'C:/Users/Administrator/Desktop/划痕+油污+瑕疵的检测/划痕、油污、瑕疵/胶囊表面污点检测/Image.bmp')
rgb1_to_gray(Image,GrayImage)
scale_image_max(GrayImage,ImageScaleMax)
mean_image(ImageSca...
2018-11-12 15:54:32
Chapter_14:Regions14.1 Access1. get_region_chain 功能:一个对象的轮廓(contour)作为链式码。2. get_region_contour 功能:查询一个目标的轮廓(contour)。3. get_region_convex 功能:查询突起的外表作为轮廓(contour)。4. get_region_points 功能:查询一个区域的像...
2018-11-11 10:58:29
当我们想要提取Region时,图像处理后,往往存在几个类似的Region,此时,需要根据Region的一些特殊特征,来选择指定的Region。求Region指定特征值:region_features(Regions : : Features : Value)根据特征值选择区域:select_shape(Regions : SelectedRegions : Features, Operation,...
2018-11-10 21:00:36
上篇我们讲到通过动态定位焊点的ROI区域,以排除压块位置跳舞的影响。正常情况下,我们的region可以通过下移30个像素,取得很好的覆盖ROI,如图:但是,上面的算法在移动30个像素时,无法处理下面这样的情况,如图:因此,我们的算法必须能检测我们要移动的30个像素是否会超出焊片(白色)的区域。我们先把程序放上来:list_files ('C:/Users/Administrator/Des...
2018-11-09 13:55:10
划痕、油污、瑕疵,常用的方法有傅里叶变换和Blob分析。1.表面划痕invert_image(Image,ImageInvert1)
mult_image(ImageInvert1, ImageInvert1, ImageResult,0.01, 0)
gen_sin_bandpass (ImageBandpass, 0.6, 'none', 'rft'...
2018-11-09 13:42:30
参考了HALCON例程和其他网友的思路, 简单地去除周期性噪声方法如下. 因是初学者,所以有错误的地方还请多多指正.素材图片:程序:read_image (Image1, 'C:/Users/Administrator/Desktop/a1.png')
get_image_size (Image1, Width, Height)
fft_generic (Image1, I...
2018-11-08 19:57:36
1、close_all_framegrabbers ( : : : ) 关闭所有图像采集设备。2、close_framegrabber ( : : AcqHandle : ) 关闭Handle为AcqHandle的图像采集设备。3、open_framegrabber ( : : Name, HorizontalResolution,VerticalResolution, ImageWid...
2018-11-08 16:29:19
例程:detect_indent_fft.hdev说明:这个程序展示了如何利用快速傅里叶变换(FFT)对塑料制品的表面进行目标(缺陷)的检测,大致分为三步:首先,我们用高斯滤波器构造一个合适的滤波器(将原图通过高斯滤波器滤波);然后,将原图和构造的滤波器进行快速傅里叶变换;最后,利用形态学算子将缺陷表示在滤波后的图片上(在缺陷上画圈)。注:代码中绿色部分为个人理解和注释,其余为例程中原有代码
*...
2018-11-08 14:34:05
纹理分析是对图像灰度(浓淡)空间分布模式的提取和分析。纹理分析在遥感图像、X射线照片、细胞图像判读和处理方面有广泛的应用。关于纹理,还没有一个统一的数学模型。它起源于表征纺织品表面性质的纹理概念,可以用来描述任何物质组成成分的排列情况,例如医学上X 射线照片中的肺纹理、血管纹理、航天(或航空)地形照片中的岩性纹理等。图像处理中的视觉纹理通常理解为某种基本模式(色调基元)的重复排列。因此描述一种纹理...