2018-11-22 15:26:14
photoshop8是勇哥经常使用的版本, 它的好处是速度飞快, 而且新版本增强了什么功能, 一不愿意再去学习新版了, 二则新增功能估计也跟搞工业视觉关系不大了. 因此无论在什么系统上面,我都安装的是photoshop8.这个版本在win10 64位系统下面会出现启动界面卡死在"正在读取文本全球资源" 这个启动界面上.网上的解决方法是删除设置目录下的文件.但是对于win10的电...
2018-11-18 14:48:55
原图: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, H...
2018-11-17 20:30:46
Retinex图像增强算法前一段时间研究了一下图像增强算法,发现Retinex理论在彩色图像增强、图像去雾、彩色图像恢复方面拥有很好的效果,下面介绍一下我对该算法的理解。Retinex理论Retinex理论始于Land和McCann于20世纪60年代作出的一系列贡献,其基本思想是人感知到某点的颜色和亮度并不仅仅取决于该点进入人眼的绝对光线,还和其周围的颜色和亮度有关。Retinex这个词是由视网膜...
2018-11-17 20:06:57
在我们编写halcon程序中可能常会用到图像相减算子sub_image,例如在做高斯高通滤波的时候,最后的结果是要用原图像减去滤波后的图像才能得到锐化图像。该算子的参数形式如下:sub_image(ImageMinuend , ImageSubtrahend : ImageSub : Mult , Add :)第一个参数是被减图像,第二个参数是减数图像,第三个参数是结果图像,第四个参数是乘数因子,...
2018-11-17 19:38:18
1、变焦和对焦有什么区别?变焦就是改变镜头的焦距(准确说是像距),以改变拍摄的视角,也就是通常所说的把被摄体拉近或推远。例如18-55mm和70-200mm镜头就是典型的变焦镜头。焦距越长,视角越窄。对焦通常指调整镜片组和底片(传感器平面)之间的距离,从而使被摄物在CCD/CMOS上成的像清晰。我们通常说的“调焦”一般指“对焦”。有些人认为定焦镜头不能调焦的说法是错误的。 2、为什么镜头的最大光圈...
2018-11-17 19:13:13
有经验的机器视觉工程师都会认可这样一句话:机器视觉项目的成败在于能否得到一张打光优秀的图片。如果采集到的图片本身“质量”很差,那么接来下的图像处理工作就会困难重重。 由于项目的需求以及光源厂商的努力,目前机器视觉光源的类型可以说十分丰富,例如条光、背光、平行背光、同轴光、点光、隧道光、碗光、环形光、球形光、条形聚光等。根据光的波长和颜色,又可以分为X光、蓝光、红光、白光、红外光等。 网上关于光源选...
2018-11-17 17:30:41
引言openCV是因特尔的一个开源的视觉库,里面几乎包含了所有的图像处理的经典算法,并且采用C和少量的C++编写,运行效率很高,对于做图像处理这方面工作的,认识opencv是必须的工作。不过opencv有个很大的不足,这在于它几乎没有提供gui这方面接口,很难满足目前应用程序开发的需要,而万恶的MFC框架丑陋的界面也成为了我的噩梦,MFC与opencv和界面优化几乎让我在图像处理这一块儿无法动弹。...
2018-11-17 17:24:24
halcon的tuple算子功能总结...
2018-11-17 17:21:35
基于形状的模板查找算子:find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score) MaxOverlap:意思是允许的最大重叠区域。 那么我们想问,...
2018-11-17 17:08:45
Halcon中阈值二值化的算子众多,通常用得最多的有threshold、binary_threshold、dyn_threshold等。 threshold是最简单的阈值分割算子,理解最为简单;binary_threshold是自动阈值算子,它可以自动选出暗(dark)的区域,或者自动选出亮(light)的区域,理解起来也没有难度。 动态阈值算子dyn_threshold理解起来稍微复杂一点,使用...
2018-11-17 16:58:01
例一:毛刺在往外凸的面上策略1:分割出黑色部分,然后通过开运算去掉毛刺,再通过原黑色部分区域减去开运算之后的区域,得到毛刺部分的区域。read_image (Tu, 'C:/Users/xiahui/Desktop/tu.jpg')
binary_threshold (Tu, Region, 'max_separability', 'dark',...
2018-11-17 16:53:07
以下图为例:比如我想把面积第2小的那个“小正方形”选择出来,算法代码如下:read_image (Yuan, 'C:/Users/happy xia/Desktop/yuan.png')
binary_threshold (Yuan, Region, 'max_separability', 'dark', UsedThreshold)
conne...
2018-11-17 16:51:09
如下图:...
2018-11-17 16:45:15
connection直译为“连接”。其实它的功能不是连接,它的功能是确定区域之间的连接关系,如果简单粗暴地解释的话,可以认为:connection的意思是“打散”,将不连接的区域打散成一个一个的区域。 一、difference操作 1、用connection之后的region集合减去单一region 以下为待处理的图:read_image (Right, '未标题-1.jpg')...
2018-11-17 16:42:18
算子sort_contours_xld算子有5种排序方式,即: 'upper_left':The position is determined by the upper left corner of the surrounding rectangle.'upper_right':The position is determined by the upper righ...
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...