- 博客(199)
- 资源 (3)
- 收藏
- 关注
原创 光学镜头参数之——畸变
有畸变的光学系统,若对等间距的同心圆物面成像,其像将是非等间距的同心圆。当系统具有正畸变时,实际像高随视场的增大比理想像高增大得快,即放大倍率随视场的增大而增大,则同心圆的间距自内向外逐渐增大;普通工业镜头的畸变一般在1%~2%,这样的畸变通常会影响检测精度(例如实际长度为100mm的物体,使用这种镜头测得的尺寸可能是101mm~102mm;而我们BTOS远心光学的双远心镜头,畸变一般都小于0.1%,畸变系数为普通镜头的1/20,大大提高了检测精度和稳定性,达到了目前最高标准光学测试仪器的测量极限。
2022-09-19 15:40:49
4965
原创 高分辨率相机成像效果就越好吗?
相同像素数的影像传感器有面积大小的区别,面积越大,单个像素尺寸越大,能接受的光强信息越多,高光位溢出、产生噪点的机率降低,通常生成的照片就会越接近真实,像质会更优良。在相同的视场下,分辨率越高就意味着显示的信息越多,能识别的精度越高,也就越能看清图像的细节,所以分辨率是个非常重要的性能指标之一。4、高像素是否能带来高画质,关键在于单个像素点的面积在常用最小光圈值下成像是否依然有足够高的清晰度,在保证成像清晰度的情况下,像素越高,相片的细节就越丰富,层次更鲜明,画质也就越高。那么其他因素又会包含哪些呢?
2022-09-19 15:40:17
2179
原创 如何挑选工业镜头?
随着人类生活需求的不断提高和科学技术的探索和追求,机器视觉在工业测试、药物测试、全过程监测和安全监测、高精度测量、识别和定位等工业自动化领域实现了应用。工业镜头与工业相机的结合,大大提高了工业制造的效率和效果。工业镜头是机器视觉领域的眼睛。从检测对象开始,就一直扮演着眼睛的角色,工业镜头是一种高性能、高分辨率的镜头,超低失真设计技术降低了失真率,能够更真实地反映图像效果,因为失真技术可以有效地减少镜头的反射损耗,减少眩光,增加对比度,有效地提高色彩还原性,提高图像的清晰度。
2022-09-19 15:39:52
2768
原创 工业相机的触发模式
不同的工业相机提供不同的编程接口(SDK),尽管不同接口不同相机间编程接口各不相同,他们实际的API结构和编程模型很相似,了解了这些再对工业相机编程就很简单了。触发:被动的输出模式,实时性要求高,比如抓拍运动的物体。触发信号可以由软件产生,也可以由传感器/机械开关产生,叫软/硬触发。3)硬件触发模式:对高速动态检测可选择,产品连续高速运动能给触发信号的可选择。1)连续采集模式:对静态检测可选择,产品连续运动不能给触发信号的可选择;2)软件触发模式:对动态检测可选择,产品连续运动能给触发信号的可选择;
2022-09-19 15:39:28
2853
原创 工业相机的镜头接口知识介绍
C接口和CS接口的区别C与CS接口的区别在于镜头与摄像机接触面至镜头焦平面(摄像机CCD光电感应器应处的位置)的距离不同,C型接口此距离为17.5mm., CS型接口此距离为12.5mm.。C型镜头与C型摄像机,CS型镜头与CS型摄像机可以配合使用。C型镜头与CS型摄像机之间增加一个 5mm的C/CS转接环可以配合使用。CS型镜头与C型摄像机无法配合使用。
2022-09-16 00:37:45
4487
转载 工业相机的数据传输接口
在了解数据接口之前,我们先了解下什么是工业相机?工业相机的定义是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成有序的电信号。选择合适的相机也是机器视觉系统设计中的重要环节,相机的选择不仅直接决定所采集到的图像分辨率、图像质量等,同时也与整个系统的运行模式直接相关。而将相机采集图像进行传输,就需要通过相机的接口来实现,将图像数据传输到我们的设备上。
2022-09-16 00:37:14
2601
原创 如何提高工业相机图像质量
在每个像素旁,建立溢出过多的光电荷沟道,消除像素光晕,避免满阱以上的电荷溢出到相信像素中,凸高图像清晰度。在机器视觉系统中,工业相机用来采集图像,有时候采集的图像质量没有那么高,这时应该如何提高工业相机的图像质量呢?白平衡:利用对标准拍板、在标准光源下成像,修正三基色通道RGB的加权系数,消除颜色失真,提高图像颜色逼真度。多模式输出:设置专用的电路或软件,以实现多模式输出:线形模式、双斜率模式、对数模式或者Y校正模式等。数字变焦:利用内插对图像进行放大,实现类似光学变焦的效果,图像质量明显提升。
2022-09-16 00:36:47
1352
原创 相机光圈知识介绍
照相机的镜头有一个控制透光量的装置,就叫光圈.光圈开的大,透光量便大;开的小,透光量便小.但只靠光圈还不能完全描述作用于软片上的光线强度,镜头与软片间的距离也有关系,也就是和镜头的焦距有关系.焦距小光圈离软片较近,光线的作用便较强.有一个名词--光圈系数,光圈系数是将镜头焦距除以光圈的直径所得的值,用f表示.例如有甲乙丙三镜头,甲镜头的焦距为50mm,最大光圈直径为25mm,则光圈系数是50/25=2,我们说它是f2的镜头;
2022-09-16 00:36:15
1798
原创 工业镜头光圈f/#如何影响景深
最后,f/#增加太多会由于达到工业镜头的衍射极限而造成较小的细节变得模糊,因为镜头的极限分辨率与f/#成反比。锥形分布得越宽,该距离处来自工业镜头的信息与其周围的所有其他信息的界限越模糊。在图2b中,光束扩展要慢许多,细节大于所显示的所有距离的光束直径,使其成为主要的信息贡献因素,因此更容易区分。通过改变孔的大小来控制进入工业镜头的光线量。图3显示了与图2相同类型的图解,但前者具有代表景深中多点的锥形,实际上是代表线对的断续信息。更改工业镜头的f/#会更改景深,f/#越低,黑色虚线扩展得越快,景深越低。
2022-09-16 00:35:35
1170
原创 视觉工程师必须知道选型知识与计算方法
分辨率是相机最基本的参数,由相机所采用的芯片分辨率决定,是芯片靶面排列的像元数量。通常面阵相机的分辨率用水平和垂直分辨率两个数字表示,如:1920(H)x 1080(V),前面的数字表示每行的像元数量,即共有1920个像元,后面的数字表示像元的行数,即1080 行。现在相机的分辨率通常表示多少K,如1K(1024),2K(2048),3K(4096)等。在采集图像时,相机的分辨率对图像质量有很大的影响。在对同样大的视场(景物范围)成像时,分辨率越高,对细节的展示越明显。
2022-09-16 00:35:11
3693
原创 机器视觉系统中工业相机如何选择接口?
在了解数据接口之前,我们先来认识下什么是工业相机,工业相机的定义是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成有序的电信号。选择合适的相机也是机器视觉系统设计中的重要环节,相机的选择不仅直接决定所采集到的图像分辨率、图像质量等,同时也与整个系统的运行模式直接相关。而将相机采集图像进行传输,就需要通过相机的接口来实现,将图像数据传输到我们的设备上。工业相机的接口分为:USB2.0/3.0、1394a/1394b、CamerLink、Gige、CoaXPress等类型的接口。
2022-09-16 00:34:46
646
原创 光学镜头参数之—分辨率
在实际工业应用中,系统使用面阵或线阵传感器作为成像器件,因此系统的分辨率通常也会受到成像传感器中像元分辨率的限制。像元分辨率定义为单位毫米内像素单元数的一半,即=1/2P,其中p为像素单元的尺寸大小。例如一个CCD的像元尺寸大小为5×5微米,则像元分辨率则为:=1/(2*0.005)=100(lp/mm)。传感器的像元分辨率限制了系统的最高分辨率,即使镜头的分辨率再高,系统也不可能分辨高于像元分辨率的细节。在实际使用中,普通镜头分辨率低,即使搭配高像素的相机,最后也只能生成模糊的影像。
2022-09-16 00:34:20
6812
原创 光学知识宝典之专业术语解读
当物件的入射光瞳时半角是u,而折射率是n,n*sin u是物体方数值孔径N.A.;当物件的出射光瞳时半角是u’,而折射率是n’,n’*sin u’是物体方数值孔径N.A.;数值孔径是一个度量镜头分辨率及光亮度的重要指标,N.A.数值越高,分辨率及光亮度越高。
2022-09-16 00:33:44
5462
原创 如何选择合适的工业相机
工业相机是机器视觉系统中的一个关键组件,其最基础功能就是将光信号转变成为有序的电信 号。选择合适的工业相机也是机器视觉系统设计中的重要环节,工业相机不仅是直接决定所采集到的 图像分辨率、图像质量等,同时也与整个系统的运行模式直接相关。国内知名的工业相机生产销售商陕西维视数字图像技术有限公司,生产多种型号的工业相机,其产品质量好,价格优,是各个企业首要之选。
2022-09-16 00:32:51
2958
原创 conda的一些常用命令
conda的一些常用命令简略:详细:conda info :conda createconda installconda removeconda listconda searchconda updateconda config简略:我们可以在命令行中或者anaconda prompt中执行命令进行操作。conda info 可以用来查看相关信息,其格式如下:使用如下命令,可以创建一个新的环境:conda create -n Python27 python=2.7其中Python27是自定义的一
2022-08-30 10:30:39
592
原创 python学习
python高级用法之命名元组namedtuplePython namedtuplerepr() 方法可以将读取到字符的格式字符,比如换行表符,转换为相应的转义字符。译文:# 编码=UTF-8s = "物品\t单价\t数量\n包子\t1\t2" print ( s ) print ( repr ( s ))运行结果:物品单价数量包子1 2 '物品\t
2022-08-29 17:45:51
153
原创 apt 常用命令
apt 常用命令apt的常用使用方法更新软件源: apt update更新软件列表: apt-get update更新安装的软件: apt-get upgrade搜索软件: apt-cache search package_name软件列表: apt list已安装软件: apt list --installed安装软件: apt install package_name安装软件包的时候指定安装具体的版本: apt install nginx=1.14.0-0ubuntu1.6修复软件依
2022-08-29 17:36:24
5885
原创 PP-OCRV3使用教程
PP-OCRV3使用教程PP-OCRV3 ARM端部署预准备代码拷贝 or 远程传导远程传导的方式:在PC的终端中输入scp -r <PC端文件路径> <ARM端用户名>@<ARMIP>:<ARM保存路径>例如:scp -r G:/opencv ubuntu@192.168.233.1.3:/home/ubuntu/(加一个-r是因为远程上传的是含有多级目录的文件夹)环境变量ARM端的环境变量需要添加我们的代码文件路径(因为用到了某些包在
2022-08-25 14:34:01
2011
原创 chorm截屏
chorm截屏方式1应用商店 Nimbus Screenshot方式2方式3快捷键 Ctrl+Shift+I (大写的i)。快捷键 Ctrl+Shift+P 调出查找界面。输入命令 full 回车即可,截图成功并自动下载。本文由 mdnice 多平台发布
2022-08-24 14:44:47
275
原创 __file__
_file_print(__file__)__fiel__在代码执行时生成,其为代码「执行路径」例如:❝输入:python path_problem.py输出:path_problem.py❞❝输入:python 3/path_problem.py输出:3/path_problem.py❞本文由 mdnice 多平台发布
2022-08-24 10:21:47
186
原创 ARM端部署PP-OCR_V3
ARM端部署PP-OCR_V3(系统环境)PaddleOCR 的 Jetson 部署-官方文档一、预准备下载对应的whl:下载安装Linux预测库 根据系统(win和linux),语言(C++,C,Python),语言版本,CUDA版本,Jetson版本,硬件系统(nano,NX,TX,AGX)等等,一定要选对了升级 pip如果您到 pip 默认源的网络连接较差,临时使用本镜像站来升级 pip:python3.7 -m pip install -i https://pypi.tuna.tsin
2022-08-23 14:37:21
1849
原创 NX配置记录
进入烧录模式:短接USB线接PC与NXPC拔掉其他无关的USB线插入电源打开SDK Manager不要选CUDA等工具,单独只选择一个镜像jetson即可Flash进程时可以拔掉短接线了。
2022-08-23 09:00:03
422
原创 Nvidia Jetson Xavier的配置记录
从网上下载安装包1-原文件2-安装教程3-使用教程下载好后按照命令安装sdkmanger登录将Type-C转USB的线链接到PC与Xavier按中间的Recovery键(不用开机)选择设备选择安装版本,记得选择生产版本4.6.1以下。
2022-08-22 17:13:24
924
原创 【Intel® RealSense™ SDK 2.0 】在【Linux】环境配置记录
以上两行将部署 librealsense2 udev 规则,构建和激活内核模块,运行时库和可执行演示和工具。如果仍然无法检索到公钥,请检查并指定代理设置:export http_proxy=“http://:”,然后重新运行该命令。请参阅以下链接中的其他方法。可选择安装开发人员和调试包:安装包后,您可以。
2022-08-22 10:02:15
1269
原创 【Bug记录】pycharm 运行OpenCV没有函数提示
是一个智障问题安装完成后,版本是: 4.6.0.66。似乎是因为版本太高了,它这个路径下的文件有些奇怪这样是正确的。
2022-08-19 14:44:19
1137
原创 linux存储器的备份
linux存储器的备份本文记录在Ubuntu18.04版本下的两个外接存储器,源存储器(O),备份到目标存储器(T)。插入两个外接存储器首先执行命令fidsk -l查看外接存储器的绝对路径如下图可以看到绝对路径是/dev/sdb和/dev/sdb先介绍一下dd命令:dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。本文的需求是直接备份一份数据,无需转换格式所以执行命令dd if=/dev/sdd of=/dev/sdb bs=5
2022-07-26 09:08:34
200
原创 在ubuntu系统中搭建笔记文档(typora+Picgo+Gitee)(全程记录)
在ubuntu系统中搭建笔记文档(typora+Picgo+Gitee)(全程记录)系统配置:ubuntu18.041、安装typoratypora官网Typora常用快捷键(翻译)命令行中依次执行以下命令:# or run:# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAEwget -qO - https://typora.io/linux/public-key.asc
2021-11-05 13:32:55
594
2
原创 【队栈】leetcode_225_用队列实现栈
【队栈】leetcode_225_用队列实现栈class MyStack {public: /** Initialize your data structure here. */ MyStack() { } /** Push element x onto stack. */ void push(int x) { qun1.push(x); } /** Removes the element on top of
2021-05-12 21:18:20
165
原创 【树】leetcode_106_从后序与中序遍历序列构造二叉树
【树】leetcode_106_从后序与中序遍历序列构造二叉树/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left
2021-05-09 16:56:45
143
原创 【树】leetcode_105_从前序与中序遍历序列构造二叉树
【树】leetcode_105_从前序与中序遍历序列构造二叉树/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left
2021-05-09 16:55:47
146
原创 【树】【回溯】leetcode_113_路径总和II
【树】【回溯】leetcode_113_路径总和II/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(null
2021-05-08 11:38:45
132
原创 【树】【回溯】leetcode_112_路径总和
【树】【回溯】leetcode_112_路径总和/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullpt
2021-05-08 10:26:15
133
原创 【树】leetcode_404_左叶子之和
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} *
2021-05-07 10:07:53
134
原创 【树】leetcode_100_相同的树
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} *
2021-05-07 10:07:13
104
原创 【树】leetcode_513_找树左下角的值
【树】leetcode_513_找树左下角的值/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr
2021-05-07 10:06:58
113
原创 【树】leetcode_572_另一个树的子树
【树】leetcode_572_另一个树的子树/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr
2021-05-05 16:17:39
104
原创 【树】【回溯】 leetcode_257 _ 二叉树的所有路径
【树】【回溯】 leetcode_257 _ 二叉树的所有路径/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left
2021-05-04 21:37:01
109
vulkansdk-linux-x86_64-1.1.114.0.tar.gz
2020-07-02
yolov4_and_tiny-ncnn-(.bin)+(param).tar.xz
2020-07-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅