2019-06-28 21:31:19
勇哥目前在一款尺寸测量设备中,应用到了一些算法,在这里做记录。下面是算法用到的一些函数。/// <summary>
/// 新建一条拟合直线
/// </summary>
/// <param name="linePt"></param>
/// <pa...
2019-05-27 09:41:09
已知直线的起始端点与终止端点,移动到指定点的位置。这个必须要考虑直线有可能是任意角度的问题。#代码如下:要注意,下面的代码需要安装netMarketing类库。using HalconDotNet;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;...
2019-05-22 17:03:58
注意看下面的8个点(绿色的小点),我们想由8个点拟合出一条直线。拟合完成的直线halcon代码如下:read_image (Image, 'C:/Users/Administrator/Desktop/尺寸机/建模/395876G-3-HWR.bmp')
*dev_open_window(0, 0, 2000, 2000, 'black', WindowHandl...
2019-05-07 10:52:54
此方法旨在满足部分区域拍照后,想输出成一张图,对重叠区域要求不是很高。区别于图像拼接方法,请注意。勇哥2019/5注:下面的办法只适合拼合灰度图片,如果你想拼合彩色图片则要用另外的办法。在这里,我在一个文件夹中保存了9张图,遍历读取,从而合成显示。图片合成方法public void ImageJigsaw(string path = "C:/Users/team/Desktop/4/&q...
2019-03-27 19:05:18
在视觉调试的时候,如果断点查看Linef对象的Points信息(即线的点集合),都是包含点位置x,y信息的数据,有些时候想显示Linef对象的points信息为图形化,则可以使用下面的小程序。你只需要vs的“即时窗口”输出这个Points对象,然后把它复制下来,粘贴到程序窗体中,然后点击“计算窗口内points”转换即可。下面的复制下来的Points对象: [0]: {4086.823730468...
2019-03-22 15:43:14
见下面的halcon代码,第4句将无法在屏幕上绘制,因为列坐标529。gen_circle(Circle, 344.02661132813, 444.00024414063, 2)
gen_circle(Circle, 343.42919921875, 472.00024414063, 2)
gen_circle(Circle, 342.57739257813, 501.00024414063...
2019-01-14 14:51:59
现象截图是这样的,看图片有时候这个现象是偶尔出现,有时候还取图不完整。这个现象可尝试从网卡设置上解决问题。还有一个方法是在程序上做一点设置。我们先看下网卡设置。很简单,网卡配置中有一项被称为“巨帧”,可以由原来“不启用”而改为最大值为4096.在有些网卡配置中,这个称为“接收缓冲区”,把它设置为最大。由于这种现象在IEE1394相机上看不到,因此请童鞋们毫不怀疑要从网络设定上去找问题。另一个方法是...
2018-12-07 10:37:45
勇哥把netMarketing类库改为halcon12,发现程序可以编译,但是运行起来报下面的错误。看来和原来的halcon10还是有所区别。下面的摘抄的网络上的资料:Halcon使用没有问题,二次开发可以写程序,运行时候提示halcon相关模块丢失;无法加载+DLL“halcon”:+找不到指定的模块。+(异常来自+HRESULT:0x8007007E)。复制代码问题解决:简单解决:把缺少的模块...
2018-11-27 08:51:29
勇哥原来的程序都是工作在halcon10下面的,某一天尝鲜安装了halcon12,用起来很爽的感觉。但是今天跑以前的某个视觉程序时,软件起动会报错误:help files for package 'system' ……看起来这个错误8000很是莫名其妙的,说什么help目录无效。后面那句 Please check the correct setting of HALCONROOT让...
2018-11-24 11:42:57
图像拼接技术就是针对同一场景的一系列图片,根据图片的特征,比如位置,重叠部分等,拼接成一张大幅的宽视角的图像。图像拼接要求拼接后图像最大程度的与原图一致,失真尽可能的小,并且要尽量做到天衣无缝即没有明显的拼接线或其他拼接痕迹。图像拼接不能损失原始图像信息为达到以上目标,图像拼接要求具备以下条件:1:图像应具有一定的特征性能,拼接正是通过这些特征来进行的。2:图像需要具有重叠部分,一般情况下,这些重...
2018-11-23 20:56:32
灰度形态学处理有腐蚀,膨胀,开运算,闭运算,顶帽操作,低帽操作等。可以对图像进行图像平滑,图像增强,图像分割等。一,图像平滑gray_opening_shape(Image : ImageOpening : MaskHeight, MaskWidth, MaskShape : )开运算。开操作会抑制比结构元小的亮细节,去除亮点噪声gray_closing_shape(Image : ImageCl...
2018-11-23 20:38:23
选择性滤波在很多应用中,其中感兴趣是处理指定的频段或频率矩形。第一类滤波器分别称为带阻滤波器或带通滤波器。第二类滤波器称为陷波滤波器。1、带阻滤波和带通滤波D(u,v)是距离频率矩形中心的距离,D0是带宽的径向中心,W是带宽。一个带同滤波器可以用从低通滤波器得到高通滤波器的相同的方法从带阻滤波器中得到halcon生成理想带阻带通和高斯带阻带通的代码read_image (Image, 'D...
2018-11-23 20:30:33
低频对应于图像变化缓慢的灰度分量,前面我们通过衰减高频成分来平滑图像。高频则对应于图像中变化快速的灰度变化。这些通常是物体的边缘及噪声。以下我们将通过高通滤波来实现图像的锐化。高通滤波会衰减傅立叶变换中的低频分量而不扰乱高频信息。理想高通滤波器halcon程序read_image (Image, 'D:/halcon work/fft/有票.bmp')
rgb1_to_gray...
2018-11-23 20:16:21
二维离散傅立叶(DFT)变化及其反傅立叶变换(IDFT)傅立叶变换通用形式对通用形式来讲,c=1,s=-1即为傅立叶变化(图像空间域转频域);c=1/MN,s=1即为逆变换(频域转空间域)halcon算子fft_generic(Image : ImageFFT : Direction, Exponent, Norm, Mode, ResultType : ) 通过参数设置可实现图像的频域和空间域的...
2018-11-23 20:08:31
如果不了解在图像滤波中如何应用傅里叶变换和频率域的基本知识,要彻底理解这一领域也是不太可能。二维离散傅里叶变换的一些性质1、空间和频率间隔的关系假设对连续函数f(t,z)取样生成了一副数字图像f(x,y),它由分别在t和z方向所取的MxN个样点组成。令△T和△Z表示样本间的间隔。那么相应离散频率域变量间的间隔分别由给出。频率域样本间的间隔与空间样本间的间距和样本数成反比。2、平移和旋转用指数项乘以...
2018-11-23 16:47:59
原文出处: 韩昊 12345678910作 者:韩 昊知 乎:Heinrich微 博:@花生油工人知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。 转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。 ——更新于2014.6.6,想直接看更新的同学可以直接跳到第四章————我保证这篇文章和你以前看过的所有文章都不同,这是...
2018-11-23 16:31:10
直方图处理灰度级范围(0,L-1)的数字图像的直方图是离散函数h(rk)=nk, rk表示第k级灰度值,nk是图像中灰度为rk的像素个数。在实践中常用MN表示的图像像素总数除它的每个分量来表示归一化直方图。归一化的直方图由p(rk)=nk/MN给出,p(rk)即灰度级rk在图像中出现的概率的一个估计。所有分量和为1。图像的直观感觉暗图像,直方图分量集中在灰度级的低端。亮图像,直方图分量集中在灰度...
2018-11-23 16:12:50
接触机器视觉的东西到现在有好长一段时间了,从以前折腾opencv到现在折腾halcon,这么浑浑噩噩的一年折腾,也没折腾出什么深刻的认识。回过头来想想,自己的学习过程完全是建造空中楼阁。提到的opencv及halcon的大部分资料都在介绍函数,算子等。因此决定,从基础做起,以数字图像处理这本书来理解halcon里的算子的想法的学习方式孕育而生。前提以8bit灰度图作为研究对象(L=256),输入图...
2018-11-22 17:33:27
如果你的照片看上去灰蒙蒙的,缺少生机,那么hsv拉伸也许可以帮你的忙。hsv拉伸是一种可以提高图像鲜艳程度的图像增强方法,它能够让图像的颜色更加鲜活、艳丽,而且它的处理结果看上去很自然,比如源图中较暗的红色会变的鲜红,而不会像拉伸对比度那样把图像弄的难看失真,暗红色变的发紫发黑。来个例子:其基本原理如下:1、 将源图像的(rgb)颜色空间映射到(hsv ),什么是HSV?2、 对图像的s和v通道进...
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:06:57
在我们编写halcon程序中可能常会用到图像相减算子sub_image,例如在做高斯高通滤波的时候,最后的结果是要用原图像减去滤波后的图像才能得到锐化图像。该算子的参数形式如下:sub_image(ImageMinuend , ImageSubtrahend : ImageSub : Mult , Add :)第一个参数是被减图像,第二个参数是减数图像,第三个参数是结果图像,第四个参数是乘数因子,...
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...