机器视觉和计算机视觉有什么不同?
很多人认为机器视觉和计算机视觉是一个概念,其实还是不一样的。
一般来说,机器视觉就是用机器代替人眼进行测量和判断,侧重于工程实用性,实时性,高精度等。计算机视觉是一个通过技术帮助计算机“看到”并理解数字图像内容的研究领域,例如理解照片和视频的内容。侧重于理论和算法。
这么说好像有点不好理解,那我从其他方面讲一下。
机器视觉要考虑的很多问题,其实还不是算法问题,算法是很重要,但对于很多机器视觉任务来说,其实最重要的是整个系统如何组织和运行。比如在什么平台上?在什么环境下?需要达到什么精度和速度?类似于光源、镜头、相机、相机-计算机接口这种问题,在计算机视觉里,都是基本上不怎么考虑的问题。但实际上,这种问题恰恰是机器视觉系统中很重要的问题。
至于题主说到的OpenCV,其实机器视觉领域用得最多的软件应该不是OpenCV,而是Halcon。虽然知道OpenCV的人比知道Halcon的人多多了,但实际上,Halcon才是最适合做机器视觉的软件,这是由它的定位决定的。
在机器视觉行业,从易用性来说,Halcon比OpenCV好用多了。当然OpenCV有很多自己的优势,比如开源,比如丰富的算法,但体现在机器视觉领域会比较少一些。
所以如果你真的想学习机器视觉,我觉得从Halcon开始是比较合适的。当然最好是以项目驱动的方式来学习,这样一个流程走完后,应该就会对机器视觉有所了解了。
如果是想快速解决某个问题,用Halcon做好算法以后,可以生成各种所需语言的代码,比如C,C++,C#,然后也很方便地集成到目标系统中。
至于选择集成到用什么语言的软件,如果是Windows平台的话,C#可能是最容易学的,而且不容易出错,对新手非常友好。C++的话,建议选Qt而不是VC++。
1. 机器视觉相关的基础知识
1.1 机器视觉的概念机器视觉并不是简单的使用卷积神经网络对图片分类,虽然刚学习深度学习的适合我就是那么认为,哈哈。机器视觉,顾名思义,就是通过程序让机器具有像人类视觉一样的功能。
硬件构成简单来讲,主要有 储存器 处理器 摄像头 电源 等。储存器 用来储存算法与保存的图片,处理器用来运行算法,摄像头 用于图像信息的采集。机器视觉的应用场景。机器视觉应用的场景广泛,主要有工业、医疗、交通、农业、机器人、智能家居、军事、遥感等。
1.2 图像基础知识
机器视觉主要内容包括图像处理、图像分析、图像理解等。第一期内容主要是在图像处理与图像分析这块。预计过年后,第二期 对深度学习在图像理解方面进行讲解。
在计算机内部,所有的信息都表示为一连串的0/1码,8个2进制位可以组合出256种可能(28)。标准的数字图像数据采用的就是一个字节256个状态来进行表示(先不考虑通道,其中一个像素值的大小)。
计算机等电子设备采用的图像都是数字图像,所以在拍摄图片时,将连续的模拟信号经过采样和量化两个步骤,转化为数字信号。
(1)采样
采样( sampling)是把空间上的连续的图像分割成离散像素的集合。采样越细,像素越小,越能精细地表现图像(例如深度学习中 池化层 就是一个下采样的过程 比较粗略的表示图像)。采样的精度有许多不同的设定,例如,采用水平256像素X垂直256像素、水平512像素×垂直512像素、水平640像素×垂直480像素的图像等,目前智能手机相机1200万像素(水平4001像素×垂直3000像素)已经很普遍。
(2) 量化量化( quantization)是把像素的亮度(灰度)变换成离散的整数值的操作。最简单是用黑(0)和白(1)的2个数值即1比特(bit)(2级)来量化称为二值图像( binary image)。量化比特数越大与图像质量越高,灰度级数表现越丰富,对于6比特(64级)以上的图像,人眼几乎看不出有什么区别。计算机中的图像亮度值一般采用8比特(28=256级),也就是一个字节,这表明着像素的亮度是0~255之间的数值0表示最黑,255表示最白。
彩色图像,所有颜色都是由三原色调配而成的RGB,根据上文所讲,通过RGB的组合,电脑可以表示256*256*256=16777216种颜色。如果图像不经过压缩,一个像素点对应3个字节,则一张普通图片640*480*3=921600 字节(约0.88MB)。彩色图像可以根据国际电讯联盟提供的公式转换为灰色图像:
Y = 0.299R+0.587G+0.114B
对于一些问题,不需要使用彩色图像,通过转换为灰色图像,可以减小图片储存空间,提高后续算法速度。其实这就是一种相当简单的图像处理方式了,后面介绍的各种图像变换都是为了,提高算法实时性,准确率等性能。
图像处理算法主要包括: 图像增强,去噪声处理、图像分割、边缘检测、几何变换、Hough变换、傅里叶变换、小波变换等。后面讲解这些算法时,都会给出 代码与数据 文件,避免“留图不留种”的现象。
1.3 学习环境搭建
目前我是用的环境时 win10,下载安装anconda,然后安装 opencv-python。