文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-13 16:28

关注

最简单的数字逻辑有3种:与、或、非。

这种简单的数字电路叫门电路。

非门

最简单的非门,就是使用一个三极管和一个电阻。

最简单的与门,是使用两个二极管和一个电阻。

与门

如上图,2个二极管只要有一个(与电源负极)导通时,输出端的电压就是0.7v,为低电位。

2个二极管都截止时,输出端的电压等于电源电压,为高电位。

只使用三极管的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不会跳转到开头,就这么点区别。

位运算、加减乘除、逻辑、比较、if else、while for,一门编程语言的主要运算也就这些。

当然,从数字计算机的出现到C语言的诞生,中间还隔了20多年的时间,经历了机器语言、汇编语言,上古高级语言3个阶段。

C语言从出现到现在,已经用了50年了,依然宝刀未老​

C语言之后的编程语言,基本都是在C语言的基础上修修补补。

例如:C++添加了OOP机制;

java又在C++的基础上做了一些简化,并且把运行平台从CPU搬到了jvm虚拟机,实现了跨平台;

go语言除了有点古怪的语法之外,又差不多回到了C语言的最初设计,并且添加了协程。

现在,人们在编程语言上能够做的改进已经比较少了,更多的是顺应程序员的习惯。

所以,有个编译器大牛好几年前就说过:编程语言是程序员的“宗教战争”。

所以,php是最好的编程语言​

4.unix系统

C语言出现之后,丹尼斯-里奇和肯-汤普森马上就用它重写了unix系统。

这是C语言被发明的主要目的,和第一个应用。

丹尼斯-里奇在unix系统的设计模式,成了后来操作系统的典范。

unix说,“一切皆是文件”。

包括Linux在内的泛unix系的操作系统,都遵循了这一原则,而且API高度相同。

但是,API这个词是从“异端”windows那里来的。

unix / linux 的API学名叫系统调用(syscall),但因为2000年前后微软巨大的影响了,都被叫成了API。

并且,windows把文件的描述结构叫句柄,linux叫文件描述符,现在很多linux程序员也把文件描述符叫句柄。

毕竟,windows XP在代表了一个时代!

操作系统、数据库、编译器,是传统的三大基础软件。

在1970年,unix和C语言出现之后,美国巨头们就迅速垄断了这三大领域。

不过,人类的科技发展,从来都是想重新发明自己!

怎么让电脑像人一样的看东西,是科学家们从1980年之后的研究重点。

5.计算机视觉

让电脑去识别图像的技术,叫计算机视觉,英文缩写CV.

CV的大概可以分为两步:

1)目标检测,即把目标位置从背景图片里画出来,

2)目标识别,识别画出来的目标是什么。

人脸识别

把人的面部从图片中框出来,就是人脸检测:常用的算法是Haar小波分类器。

识别框出来的人脸是谁,就是人脸识别:常用的算法是CNN,它是深度学习的一种模型。

在深度学习出现之前,人们经常使用传统算法的组合去识别图像。

例如:

高斯模糊,可以平滑掉图像中的一些斑点。

拉普拉斯变换,可以检测图像的边缘。

形态学膨胀,可以把一大片邻近的点连成一块区域:在文字识别中常用这个算法。

文字是一种边缘特别突出的图形,与自然物体的差异很大,所以拉普拉斯变化之后文字区域非常的明显。

但是在阀值分隔之后,这个区域往往形成一些密集而不连续的点:

经过形态学膨胀之后,这些点就连成了一块,可以求它的外接矩形了;

外接矩形,基本上就可以框出文字所在的区域;

然后,就可以根据特征去识别了。

对人脸的识别,也是先框出所在的区域,然后根据特征去识别。

传统算法经常使用的是特征点检测+分类器:

SIFT算法用来检测特征点,SVM支持向量机用来对特征点分类,SIFT+SVM曾经是深度学习出现之前使用最多的CV算法。

当然,SIFT+SVM的效果也就那样,毕竟它们都是非常死板的固定算法,适用场景有限。

在2006年,辛顿提出深度学习之前,CV算法对复杂场景的识别率一直不高。

虽然传统算法在数学上都是可解释的,但识别率是硬伤。

深度学习的参数虽然难以解释,但它的识别率比传统算法高得多。

这十几年来,深度学习基本一统了CV领域。

深度学习的入门,所需要的数学知识并不多,学过高数和线代的都能很快入门。

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯