- 博客(54)
- 资源 (1)
- 收藏
- 关注
原创 halcon的bug记录
在多个find_shape_model并行执行不同的模型匹配时候,如果其中有个find_shape_model里设置金字塔层数不是本身模型的层数,可以是模型金字塔层数减一,这个匹配有一定概率匹配失败。发现halcon20版本的find_shape_model有个bug。halcon22版本未测试出此问题,可能修复了。
2024-08-28 13:13:25 121
原创 protobuf学习
新建两个文件夹src 和gen,将proto文件放到src文件夹中, 用protoc.exe编译它。学习了下protobuf这个工具,可以用来序列化数据结构,而且效率很高,数据可以压缩的更小。里的protoc.exe 这是一个编译器,用来编译proto文件,可以用它来生成对应数据结构的源代码。例如:编写一个test.proto文件,里面定义了一个TestContact的数据结构。项目中添加该cs文件,就可以对TestConcat此数据结构序列化和反序列化了。从本地文件读出并反序列化。
2024-05-23 13:38:40 312
原创 vector_to_aniso各项异性相似变换
之前这个里面写错了,vector_to_aniso不是仿射变换,只有5个自由度,所以假设6个自由度那种方式求得的结果是对不上的。如下图,e是等于-ab/d 的。而仿射变换有六个自由度,六个数是独立的,那个文章中得解矩阵计算结果和vector_to_hom_mat2d 这个算子的结果是一样的。用vector_to_aniso算子得到的变换矩阵为。测试了两组数据,由点x变换到点y。这里面的e是等于-ab/d的。即[a,b,c,d,e,f]
2024-05-17 14:56:21 360
原创 制作频谱灯
电路部分,主要使用Esp32板子,加上声音传感器模块Max4466,还有灯条ws2812B,用了128个灯,每列16个,共八列。最近研究了下傅里叶变换,用它可以通过采集声音信号由时域转换到频域内,从而得到声音的频谱信息,可以做个频谱灯。在Arduino里写的代码如下: 需要先加载两个库,一个是FFT,如下图第二个。总体架子是木头设计的,高度60cm,如果用3d打印,这么大会挺费钱。为了可以带出去露营,我把它做的很大,这样露营的时候效果会更好!频谱灯源码如下,4口输入声音电压信号,22口输出控制led信号。
2023-09-24 16:09:50 1461
原创 不添加端口号访问非80网站
自己用树莓派搭了个网站,由于某些原因,不能使用80端口,但又想访问网站时候不要添加端口号。这时候可以更换下DNS器,如使用cloudflare,替换成以下两个。在cloudflare里配置自己的页面转发规则就可以添加相应的端口了。
2023-09-24 15:57:36 1314
原创 Activiz快速显示大量球体
但现在我需要显示大量球体,不想通过循环上面的代码或者搞很多个Actor来显示。之前学习了下activiz,可以通过以下方式显示球体。用以下方法更快显示出来,同时还能设置颜色和大小。我测试了100个球体的显示。
2023-09-22 11:35:54 328
原创 卡尔曼滤波(Kalman Filter)C#测试
即为滤波后的值,t=2时刻,再把第二步在t=1时刻的Correct的那些值,代入到第一步Predict里在计算,再Correct,以此往复,得到所有t时刻的值。试着用C#编写代码实现了下,实际值用了50个数,大致分布是x的平方加一个(0-100)的随机数,如下图黄色线条。从t=1时刻开始,通过第一步,计算得到的值,给到第二步Correct里,第二步的第二个公式得到t=1时刻的。是滤波之后的值,其他一些有些是需要给定的,有些是中间值。分为两步,第一步Predict,以下两个公式。是我们要处理的数据,
2023-09-20 16:21:05 954
原创 C#获取声音信号并通过FFT得到声音频谱
这样可以实时得到了一段声音信号,可以加个汉明窗处理下,再FFT下,就得到声音的频谱信息了。后续计划,可以通过这种方式,控制led灯,展示音乐的频谱跳动。
2023-09-19 16:16:20 3119 6
原创 C#里Bitmap转Halcon的HObject
因为Bitmap4字节对齐,非4的整数倍宽度的图像,后面会补0来达到4的倍数。如图像width=810,每行810个字节,实际内存每行后面会补两个字节,宽度变为812个字节。如果按照上面的方法得到的图像如下图所示。一般情况下,图像的width是4的倍数的话,用以下代码便可将彩色bitmap转出halcon里的HObject。要避免这种情况,得重新搞好对应关系,我写了以下方法,可以得到正确的图像。
2023-08-30 10:34:50 1678
原创 C# 区分键盘和扫码枪输入
最近有个项目客户有个要求有个界面只准扫码枪输入,不准用键盘输入,我研究了一下,找了找网上的代码,实现了一下,主要原理是提前知道输入信息的来源,判断哪个设备的,然后如果是键盘的,不往后面传递信息好了。
2023-07-14 10:06:09 1635
原创 C# winform界面显示3D点云图像(halcon+VTK)
前一段时间研究了下halcon里的3d算法,想着把3d图像显示在C#编写的软件界面上,试了下halcon的控件,没成功。后来学习了一点VTK的知识,实现了3d图像的显示,可旋转,平移,缩放观察,当然也能按照自己喜欢的风格进行渲染。我在halcon里处理完点云数据,halcon里的3d模型是hv_ObjectModel3D,在此模型里获取各个点的时候,可以顺带把各个点的渲染参数也加上,获取的点转换的vtk里的数据格式。
2023-07-10 15:14:18 6453 6
原创 Halcon中的一些3D算子
SampleDistance:这个采样距离,隔多少距离采集一个点,可以先求出3d模型的最大直径乘以一个比例系数来得到这个采样距离,如Diameter*0.003 最大直径的0.003倍,及最大直径上取333个采样点,乘的系数越小,点越多。这样上面find的姿态,是预先做的模型通过变换匹配到场景中的位置,反转这个姿态,可以将场景变换回模型的位置,用于后期分析处理。在3d点云匹配创建3d匹配模型的时候,需要模型带表面法线信息才可以用来创建。3、4、5的操作可以用来去除噪点,如下图,去除噪点之后的3d模型。
2023-05-29 16:30:10 6121
原创 用SVD方式实现halcon里的vector_to_rigid算子
halcon里vector_to_rigid是计算两组二维点之间的刚体变换关系(旋转加平移),得到变换矩阵HomMat2D。使用SVD方法求解最优化问题。
2023-05-25 13:07:47 495
原创 SVD求解两组多维点之间的欧式变换矩阵,及halcon代码实现
学习了下SVD,看到可以用SVD求解两组多维点之间的变换矩阵,当然也是个最优化问题。研究了二维点的仿射变换,用解矩阵的方式求解了两组二维点之间的变换矩阵。一般没有完美解,需要找到最优解R和t,使得P'变换后的点和P误差最小。现在有两组点(2d,3d,或者多维都可以),证明过程内容有点多,晚点整理整理再写。需要找到R和t,使得。1,,求两组点质心位置。,得到两组点去质心坐标。3,对W进行奇异值分解。举例测试两组点P和Q。
2023-05-25 11:11:25 1082 2
原创 用SVD压缩图片,python实现
取前r个大的特征值,可以获取图像大部分的特征信息,从而对图像进行压缩。在python测试了svd,并用一张图像测试了效果,如下图原图。学习了svd,了解到矩阵可以拆分成三个特定矩阵的相乘。python代码如下。
2023-05-24 09:46:45 517
原创 Halcon中从两组点的对应关系生成仿射矩阵,及思考原理和代码实现
vector_to_similarity 这个是相似变换。vector_to_rigid 这个是刚性变换,vector_to_aniso 仿射变换。有几个算子有点类似,看了下区别。旋转和平移,加各方向等比例缩放。旋转、平移、各方向不同比例缩放。
2023-05-23 14:40:10 3039 10
原创 C++实现二维快速傅里叶变换(FFT)
上一篇文章里,我根据DFT公式用C++实现了二维离散傅里叶变换。但跑一张300*300的图片都要好几分钟,速度实在太慢了。我研究了下快速傅里叶变换,在网上找了一些资料,然后用C++实现了二维快速傅里叶变换,速度超级快,512*512的图片在0.1秒内就能处理完。我们知道一维离散傅里叶变换公式如下其中。用矩阵表示即为:...
2021-12-31 16:36:43 10892 6
原创 C++实现二维离散傅里叶变换(DFT)
根据二维离散傅里叶变换公式(DFT),可以将图片从空间域转换到频率域内,对其进行一些处理,再通过离散傅里叶反变换(IDFT),转换回原空间域,达到一些特殊处理效果。处理如下原图经过二维离散傅里叶变换(DFT),得到下图再经过反变换,得到下图这边我用C++重新实现下这个DFT和IDFT这两个算法。根据定义照着着两个公式编写程序即可,注意的是,e可用下面公式展开由于安照此方式编写的程序套了4层循环,运行过于缓慢,我对原图进行了缩放,之前62...
2021-12-22 15:01:52 4066 3
原创 dll注入
记录下可实现注入的程序,还没怎么研究注入程序:#include <windows.h>#include <iostream>#include <tlhelp32.h>using namespace std;DWORD GetPidByName(LPCWSTR lpName){ HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (!hSnap) { cout
2021-12-17 16:53:20 324
原创 C++实现sobel算子
上一篇自动对焦里文章里用的评价函数,有用到opencv里的sobel算子。我这边用C++实现下opencv里的这个算子sobel算子的两个内核分别是{-1,0,1;-2,0,2;-1,0,1} {-1,-2,-1;0,0,0;1,2,1}先实现下opencv里图像彩色转灰色的算子Mat BGR2GRAY(Mat img){ int width = img.cols; int height = img.rows; Mat grayImg(height, width, ...
2021-12-16 15:57:58 4346
原创 一个用OpenCV调用摄像头带界面的C++程序(wxWidgets+OpenCV )
最近在学习C++ 和wxWidgets,摸索了下做了一个小程序。#include<wx/wx.h>#include<opencv2/opencv.hpp>#include<thread>using namespace cv;class MyFrame :public wxFrame{public: MyFrame(const wxString&title); ~MyFrame(); void showImage();priva...
2021-08-04 15:07:20 1079 2
原创 C#调用C++ dll
记录下C++#include "pch.h"#include<math.h>extern"C" __declspec(dllexport)int Add(int x,int y){ return x+y;}extern"C" __declspec(dllexport)void Pow(int*x, double y){ *x = pow(*x, y);}
2021-06-08 17:22:09 3367 7
原创 Tiny Yolo v3检测缺陷
最近研究了下怎么用深度学习做缺陷检测。学习参考了一篇博客的方法,自己重现了下,效果还不错博客地址https://blog.csdn.net/qq_27871973/article/details/85009026我的测试效果这里我使用数据集的是德国DAGM 2007的数据集官方网址:https://hci.iwr.uni-heidelberg.de/node/3616网盘地址:链接:https://pan.baidu.com/s/1idj4OeAybYLdz3Ghv0..
2020-09-17 09:07:56 1414 2
原创 暴力破解zip文件密码
先是用python写了一个,原理网上都有,我加了个界面,方便使用,同目录下放个pwd.txt,里面是密码列表,可以网上下载一些,或自己生成一个。import zipfilefrom threading import Threadfrom tkinter import *from tkinter import filedialogfrom tkinter import ttkdef extractfile(zFile,password): # noinspection PyBro
2020-09-10 14:10:24 11499 8
原创 C++ C# python下的中值滤波
C++ 中值滤波#include <iostream>#include <opencv2/core.hpp>#include <opencv2/highgui.hpp>#include <math.h>#include <time.h>using namespace cv;Mat Median_filter(Mat img, int kernel_size) { int height = img.rows; int wid
2020-08-20 11:05:33 484
原创 (Tensorflow学习)药品的缺陷分类应用 tensorflow实现
在17版本的halcon中有深度学习的例子,关于分类的。如下面三类,脏污,裂纹,和好的。这边可以用tensorflow重现下,因为在笔记本上跑的,显卡不行,把原来300*300 resize到150*150网络搭建个简单的,两层卷积就行,用keras实现。读取图像用keras里的那个flow_from_directory,非常方便,最后保存h5模型,方便使用训练源码f...
2020-01-06 16:16:32 583
原创 (tensorflow学习) DCGAN 动漫头像生成
训练过程数据收集训练DCGAN生成动漫头像,首先需要大量的训练数据可以用python写个爬虫去https://konachan.net/爬动漫图片,然后用https://github.com/nagadomi/lbpcascade_animeface这个程序截取动漫人物头像然后手动清洗数据,把不符合的删掉,我总共获得了14000+的头像,这里分辨率已经都压缩成128*128...
2020-01-04 17:59:09 3162 4
原创 (tensorflow学习) Deep Dream原理及实现
Deep Dream生成的图像算法原理 卷积神经网络,我们输入一张图像后经过各种卷积池化等操作,最后分类出图片属于哪个类别。 可见卷积网络能提取图像中的相应特征。如图各个卷积层,如Conv1提取edge和blob,Conv3提取纹理,后面的提取Object Parts了 当然,这是已经训练好的网络,参数已经固定了才能做到以上分类。给一张...
2019-12-31 14:48:15 1804
原创 (tensorflow学习) Python图像处理库 skimage
skimage安装方式 pip install scikit-imagescikit-image是基于scipy的一款图像处理包,将图像作为numpy数组进行处理skimage读出来的是(height,width,channel)from skimage import io,colorimg=io.imread("d:/dva.jpg") #读取图像print(type(img)...
2019-12-30 16:01:27 709
原创 (Tensorflow学习)MNIST手写体识别 Keras实现
用原生的tensorflow搭建网络有点繁琐,这边用keras就方便了很多实现一个全连接网络 隐藏层节点500个from keras.models import Sequentialfrom keras.layers import Dense,Activationfrom keras.losses import categorical_crossentropyfrom keras....
2019-12-30 11:16:33 460
原创 (Tensorflow学习)MNIST手写体识别 卷积神经网络LeNet-5模型实现
何为深度学习?一类通过多层非线性变换对高复杂性数据建模算法的合集上一篇文章,我用单隐藏层的全连接神经网络,实现对MNIST手写体的识别,测试集上只能达到98%正确率。如果用卷积神经网络,可以达到更好的效果。卷积神经网络主要是在全连接网络前加上了卷积层、池化层,个数不定使用全连接神经网络最大的问题是全连接层的参数太多,而用上卷积网络可以大大的减小参数量,并且卷积层可以更好的...
2019-12-27 11:55:35 558 1
原创 (Tensorflow学习) MNIST手写体识别
首先下载MNIST数据集http://yann.lecun.com/exdb/mnist/4个东西训练部分,搭了一个简单的全连接网络,一层隐藏层,输入节点784 隐藏节点500 输出节点10 激活函数relu 损失函数是交叉熵import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_d...
2019-12-26 17:28:47 247
原创 (Tensorflow学习) Win10+mx250 tensorflow gpu版安装
我在笔记本上一开始跑cpu版本的tensorflow,感觉太慢了,跑个posenet卡成狗,就换成gpu版的。记录下安装步骤我的笔记本win10系统64位,mx250显卡。IDE是用的是pycharmhttps://www.jetbrains.com/pycharm/ 自己下python3.6.8 cuda 9.1 cudnn7.1 tensorflow版本是1.8.0...
2019-12-19 10:41:09 7966 14
原创 Halcon中的3D技术
对于检测一些产品的3d信息,我们通过3d相机能获取其点云数据或一张带有高度信息的图像。这边我们用SmartRay相机,获取到一张16位的png图像。实际上就是一张高度信息图。这边X、Y缩放比例为0.019,Z方向为0.0016,意思就是你xyz乘这系数就是相对距离。在那个相机软件中能看到如上的3d图。我们获取到的是一张16位的PNG图,如下Halcon中建立一个3d模型...
2019-07-04 10:34:12 17882 10
Cross-Platform GUI Programming with wxWidgets
2021-07-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人