当前位置: 首页 > 科技观察

电子学之路:从C语言到视觉识别

时间:2023-03-17 18:21:12 科技观察

模拟电路可以利用三极管的通断状态切换来实现数字逻辑。最简单的数字逻辑有三种:AND、OR、NOT。这种简单的数字电路称为门电路。最简单的非门使用晶体管和电阻器。最简单的与门使用两个二极管和一个电阻器。与门如上图所示,当两个二极管中只有一个(和电源负极)导通时,输出端电压为0.7v,为低电位。当两个二极管都截止时,输出端电压等于电源电压,为高电位。当只用三极管的b-e极时,三极管相当于二极管。这些简单的门电路可以用来处理一个二进制的位运算,即位运算。1.位运算位运算是比加、减、乘、除简单的运算。在位运算中,一个数的多个位是不相关的。因此,只要将上图中的32个电路并联起来,就可以进行32位的位运算。2、加减法由于加减法中有进位和借位,它们的多个二进制位是相关联的。因此,加减法的电路实现比较复杂,乘法和除法比较复杂。但是,加减乘除都可以用电路来实现。(这里就不展开了,不然得写一篇大文章了)3、C语言可以在位运算和加减乘除的基础上实现一种编程语言。逻辑运算(&&、||、!)是1个二进制位的位运算。比较运算(>、<、==、!=、>=、<=),实际比较的是运算结果和0的大小。2>1比较2-1>0,0可以用1二进制表示位,所以比较运算其实就是加减法+位运算。if/else是一个逻辑操作。while/for是一个复杂的if/else:会根据条件跳转到循环开头或结尾,而if/else则不会跳转到开头,这就是区别。位运算、加减乘除、逻辑、比较、ifelse、whilefor,这些是编程语言的主要操作。当然,从数字计算机出现到C语言诞生已经过去了20多年,经历了机器语言、汇编语言和古老的高级语言三个阶段。C语言从出现到现在已经使用了50年,依然不老。C语言之后的编程语言基本上都是在C语言的基础上鼓捣的。例如:C++增加了OOP机制;java在C++的基础上做了一些简化,将运行平台从CPU搬到了jvm虚拟机上,实现了跨平台;除了有点奇怪的语法外,go语言几乎是一样的。对C语言原有的设计,加了协程。现在,人们对编程语言的改进少之又少,更多的是为了顺应程序员的习惯。因此,一位编译大师几年前就说过:编程语言是程序员的一场“宗教战争”。因此,php是最好的编程语言4.unix系统C语言出现后,DennisRich和KenThompson立即用它重写了unix系统。这是发明C语言的主要目的,也是它的第一个应用。DennisRitchie在Unix系统中的设计模式成为后来操作系统的典范。Unix说,“一切皆文件”。包括Linux在内的泛Unix操作系统都遵循这个原则,它们的API高度一致。然而,API一词来自“异端”窗口。unix/linuxAPI的学名叫做系统调用(syscall),但是因为2000年前后微软的巨大影响,才叫API。而且,windows把文件的描述结构称为句柄,linux称之为文件描述符。现在很多linux程序员也把文件描述符称为句柄。毕竟,WindowsXP代表着一个时代!操作系统、数据库、编译器是传统的三大基础软件。1970年unix和C语言出现后,美国巨头迅速垄断了这三个领域。然而,人类科技的发展,一直想要推陈出新!自1980年以来,如何让计算机像人一样看东西一直是科学家们的研究重点。5.计算机视觉让计算机识别图像的技术称为计算机视觉。英文缩写CV.CV大致可以分为两个步骤:1)目标检测,即从背景图像中绘制目标位置,2)目标识别,识别绘制的物体是什么。人脸识别将人脸框出图片,也就是人脸检测:常用的算法是Haar小波分类器。识别框中的人脸是谁就是人脸识别:常用的算法是CNN,是深度学习的一种模型。在深度学习出现之前,人们往往使用传统算法的组合来识别图像。例如:高斯模糊,可以平滑图像中的一些斑点。拉普拉斯变换可以检测图像的边缘。形态学扩展可以将大面积的相邻点连接成一个区域:这种算法常用于文本识别。文字是一种边缘特别突出的图形,与自然界的物体有很大的区别,所以拉普拉斯变换后的文字区域非常明显。但是,在阈值分离之后,这个区域往往会形成一些密集的、不连续的点:经过形态学展开,这些点连在一起,可以找到它的外接矩形;外接矩形基本上可以框出文字所在的区域;然后,可以根据特征进行识别。对于人脸识别,也是先将其所在的区域框起来,再根据特征进行识别。传统算法往往采用特征点检测+分类器:SIFT算法用于检测特征点,SVM支持向量机用于特征点分类,SIFT+SVM曾经是深度学习出现之前使用最多的CV算法。当然,SIFT+SVM的效果是一样的。毕竟都是非常死板的固定算法,适用场景有限。在2006年Hinton提出深度学习之前,CV算法对复杂场景的识别率一直不高。虽然传统算法在数学上是可以解释的,但识别率存在缺陷。虽然深度学习的参数难以解释,但其识别率远高于传统算法。在过去十几年里,深度学习基本上统一了CV领域。深度学习入门不需要太多的数学知识,学过高等数学和线代数的人可以很快上手。