gclvionX 功能介绍
gclvionXgclVionX是一种基于G语言免Coding完全自主开发可扩展机器视觉平台 功能介绍
“理想边缘产生方法的研究”的理解
参考:理想边缘产生的方法研究 在亚像素的检测中,如何验证自己算法的精度,此时需要一个标准的样本来检测算法的精度,在上诉论文中,关于dn的计算有一定的理解差异。 参数计算Dm计算设过B、C的直线方程为y=kx+b, AC=abs(b)/sqrt(1+k^2); AB=b; k=BD/0.5; b=0.5+BD=0.5*(1+k) AC=abs(0.5*(1+K))/sqrt(1+K^2) ##Dn计算 k=DE/DF=2*DE; DE=0.5k; k=EG/AG; AE=0.5-DE; AE^2=EG^2+AG^2; Dn=(1-k)*0.5/sqrt(1+k^2); 从上面的Dm和Dn的计算中可以看出,Dm的计算与原文一直,但是Dn的计算却不一致,文中公式计算的是点到直线L的距离,而不是Dn的值。 关于标准边缘坐标当直线穿过像素时,边缘点的坐标为(x,y)到直线y=kx+b的垂足 Code%% 理想边缘 clc;clear;close all p=[0.3, -50/3]; row=255; col=255; Pl=0; Pr=1; imag=(zeros(row,col)...
Hough变换检测直线
理论hough变换的代码写了很多遍,网络上也下载了很多,但是都是一知半解,没有具体去想原理,结果每次的代码存在的周期都很短,都没有很好的得到利用,分析原因还是自己一知半解,其实后来想想蛮简单的,可就是不明白当时就怎么蒙圈了,想想也只有自己了。 本文中的图片和理论都来源于参考,请尊重原有作者的版权。 直线的表示,在笛卡尔坐标系下,其方程可以用点斜式和两点式,但是在hough变换中,其表示方法是(r,theta),r表示为直线到原点的距离,theta表示该直线垂线与x轴夹角,如下图所示: 使用hough变换来检测直线的思想就是:为每一个点假设n个方向的直线,通常n=180,此时检测的直线的角度精度为1°,分别计算这n条直线的(r,theta)坐标,得到n个坐标点。如果要判断的点共有N个,最终得到的(r,theta)坐标有Nn个。有关这Nn个(r,theta)坐标,其中theta是离散的角度,共有180个取值。最重要的地方来了,如果多个点在一条直线上,那么必有这多个点在theta=某个值theta_i时,这多个点的r近似相等于r_i。也就是说这多个点都在直线(r_i,theta_i)上...
依据方向选择边缘点
在边缘提取时,往往在一个ROI中会同时存在多个边缘,但是往往我们需要的只是其中的一个,沿着一定的方向进行扫描,会有白到黑,黑到白的区别,本文中提到的算法就是按照一定的参考直线和参考点提取不同的边缘曲线,可以滤除掉一部分我们不需要的边缘点,后续再加以连通域的选取及特征选取就可以取得较好的效果,具体实现如下: code void PickPointByDirection(uchar *bw, double *edgeX, double *edgeY, uchar *bwOut, int height, int width, gclPoint refPoint, gclLseg lseg, int edgeDirection, double minDis, double maxDis, vector<gclPoint> &pointOut) { gclPoint *pt = new gclPoint[height * width]; memset(pt, 0, sizeof(gclPoint) * height * width); ...
C# 调用c++ dll file 堆栈不对称错误
在调用dll文件时,由于采用了不同的堆栈方式, 可能出现堆栈不对称的错误,此时,应该检查vs设置里面 c/c++ -> Advanced -> calling Conversion, c++ solution and the c# solution should be the same
pca确定图像主方向
继上篇所言,图像匹配设计旋转平移缩放,图像旋转是图像配准中较难的一个环节,继上节利用最小面积外接矩形求旋转方向后,再利用pca方法求图像主方向的方法求图像旋转角度。对于一个样本点pt=[x,y]’,现有点集PT={pt1,pt2,…ptk},其均值为me=(pt1+pt2+…+ptk)/k,协方差矩阵为segma={(pt1-me)(pt1-me)’+…+(ptk-me)(ptk-me)};对segma进行特征分解,按照从大到小排列,有特征向量V, 其每一行对应一个特征向量,解方程V*T=[1 0]’,向量T经过V的投影之后,在主方向上投影为1,在垂直方向上投影为0,故T既指明了主方向。 ###code void PcaDirection(vector<GCLPOINT > pt, double °ree) { int len = int(pt.size()); double *A = new double[4]; memset(A, 0, sizeof(double) * 4); for (int i = 0;...
图像匹配之最小面积矩形
图像匹配,设计到旋转平移及缩放,在目标轮廓清晰的情况下,可通过连通域的方法分割出每一个目标,然后可以依据pattern的几何特征过滤掉一大部分不满足要求的连通域,将满足要求的再旋转到一个特定的方向,即可解决旋转问题,继而采用多尺度方法就可解决最终的图像匹配问题,本节介绍的就是利用最小面积外接矩形的方法来解决旋转问题。最小面积外接矩形,其原理是首先提取图像的有效像素的凸包,求点云凸包算法可以参考我之间的博客-凸包求取算法,然后再求凸包的相邻点的梯度方向,将图像旋转对应方向,求旋转后有效像素的外接矩形的面积,在所有的凸包角度中,求最小面积对应的角度,既是旋转角度,但是这个算法也有不足,对图像的外部轮廓噪声十分敏感,当轮廓不够光滑时误差较大;无法正确区别0°、90°、180°、270°,之后需要添加另外的相关函数区分;精度不是很高,这也源于其对轮廓的高灵敏性,需要添加细分算法。 ###代码 bool MinAreaRect(GCLPOINT *pointsIn, int num, double *rectX, double *rectY, double &convexHull...
Linux Vps 搭建Vpn
最近因为一直在整理自己的bolg,申请了新的域名,如域名所说,开源通用计算库,有点大,但是自己一直都在努力,将自己学习到的、用到的一些知识分享给所有感兴趣的朋友,遇到问题,还请多提意见。出于爱好,最近又买了一个vps,很mini的,当然价格很便宜,一年9刀,玩玩足矣,一是搭建一个vpn,用于查资料,另一个目的就是把自己的博客也迁移过去,顺便迁移到wordpress上面,一直在用hexo,感觉到随着bolg的增容会越来越慢,更关键的是没有电脑无法更新博客,也许wordpress是个不错的选择。下面这多是在linux centos6.0 32位机器上搭建vpn的过程###代码 yum remove -y pptpd ppp /etc/init.d/iptables stop rm -rf /etc/pptpd.conf rm -rf /etc/ppp depmod -a service iptables start iptables -F iptables --flush POSTROUTING --table nat iptables --flush FORWARD wget h...
Jacobi 解特征值及特征向量
由于最近利用PCA统计图像主方向,用到了特征值求解算法,网上搜罗看普通解法是jacobi算法,也正好复习一下,在此做一分享,希望对有需要的人有所帮助:###原理jacobi算法用于求实对称矩阵的全部特征值及特征向量,利用平面旋转矩阵对矩阵A做相似变换,化A为对角阵,进而求出特征值及特征向量对于p!=q,下面定义n阶矩阵Uqp是平面旋转矩阵 变换过程在保证相似条件下,使主对角线外元素趋于0,jacobi算法是一种迭代过程,每一步迭代,需要求出旋转后的新的矩阵,其过程如下: ###算法过程 初始化特征向量Vec为对角阵 在A的非主对角线元素中,找到一个绝对值最大的元素A[p,q] 利用公式1.3计算theta值 利用公式1、2、3计算特征向量及特征值 当迭代前非对角元素最大值小于阈值或迭代次数小于给定次数、停止计算 对特征值及特征向量进行排序 ###code void Jacobi(double *A, int dims, double *eigenvalue, double *vec, int times, double errorValue) { // in...
warning:save the file in Unicoade format to prevent data loss
在调用opencv的代码中,编译include/opencv2/core warning warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss 解决方法:打开出现warning的文件,Ctrl+A全选,然后在文件菜单:file->advanced save options ,在弹出的选项中选择新的编码方式为:UNICODE codepage 1200 ,点击确定,问题解决
