作者:做但不能忘思考

0.

概述

做FPGA开发或者是嵌入式开发,数字图像处理是一个很大的领域,回顾下大学里学的模电、数电、单片机原理、数字图像处理、通信理论、MATLAB,目前比较前沿的Python等知识联系起来,能更好的指明人生规划的方向。

1.

模拟电路

都记得我们大学学习的一门课程,模拟电路吗?难,枯燥,又感觉没有鬼用。但其实它是模拟世界到数字世界的一道桥梁,模拟信号到数字信号01。我们现在想想,数字图像是怎么通过模拟转为数字的?

Python 处理锂电池 python 电力_单片机

光有强有弱,呈现在我们眼睛里就是一副灰度图像(红外图像),再加上颜色区分就是彩色图像(RGB图像),再加上多个截面的图像就是3D图像(人脸识别的图像)。光信号的强度大小需要经过量化后变为数字信号,即ADC转换。对,就是模拟电路里面的模数转换,例如用8位ADC将光信号量化位0~255的数字量就是灰度值,同时ADC转化时需要配合一些运放组成的模拟电路,ADC和运放就是模拟电路。

光信号通过一路ADC和运放组成的模拟电路将光信号转化为数字电信号得到矩阵灰度值就是灰度图像;那彩色图像怎么来的了?我们知道任何颜色都是有RGB三色组合而来,那我们可以用R的滤光片将R色过滤出来给一路ADC和运放组成的模拟电路转化为R矩阵值,同样得到G矩阵值和B矩阵值;最后得到的就是RGB的彩色图像;采集多个截面的图像对应的RGB值就得到3D图像了。

下面是通过python获取一幅RGB图片的信息,是一个矩阵9664*1728*3*8bits数据,其中第一个像素的值就是(227,232,236),它正是由3路ADC采集加运放处理得到的数字量。

Python 处理锂电池 python 电力_模拟电路_02

Python 处理锂电池 python 电力_模拟电路_03

2.

数字电路和单片机原理

还记得数字电路上对应的实验都是VHDL的实验吗?数字电路告诉我们各种数字逻辑:非或与异。这些逻辑让我们能够通过底层的逻辑来实现各种复杂的处理逻辑。还记得当时的数字电路实验吗?先是通过最简单的各种门电路芯片(7系列数字芯片)来搭建数字交通灯等,接着是通过FPGA来搭建数字交通灯,还有用单片机来搭建数字交通灯,为什么同样的实验要来来回回做了?老师从来没有告诉过我们,我们也从来没有想过为什么:

门电路搭建交通灯,是为了让我们深刻理解数字电路的底层逻辑,这也是为什么很多做了很久FPGA的人还入不了门,搞不清FPGA的编程思想,把HDL当成C来使用,有点我们从事FPGA开发的要明白,FPGA里面的最小单元是LUT+REG,而不是大学学的各种门 ;

Python 处理锂电池 python 电力_python在电力系统中的应用_04

FPGA来搭建交通灯,书本中用的是VHDL而不是Verilog,因为VHDL更接近底层,通过HDL编程来让我们明白硬件描述语言这个强大的工具,能不能弄透HDL决定你是否完全入门FPGA;

接着是使用单片机来实现交通灯,这个时候我们用的是汇编或者C来实现的,其实最好的过程还是先汇编后C来实现,因为这门课程是单片机原理,目的是让大家学习后懂了单片机原理。

而现在的FPGA应用中不光是HDL的开发,而是HDL+CPU开发,已经越来越是嵌入式的集合体,所以我们思路更需要打开:

Python 处理锂电池 python 电力_python在电力系统中的应用_05

现在回想起来,大学里面学的数字电路都是重要的基础理论知识,懂得数字电路和单片机原理,才能更好的用来学习FPGA、单片机、DSP等。但是从来没有老师告诉我们交叉学习这些理论的重要性,而只是玩玩混混实验。

3.

数字信号处理、通信理论等

还记得数字信号处理一开始接介绍了ADC,接着就是各种看不懂而没意思的公式,卷积、傅里叶等等。那时候,唯一的有点实践的操作就是MATLAB上机实验,但大多是抄抄抄。更不用说通信理论了,那东西更是空空空,感觉一辈子也不会用上。

但是,我们发现随着工作年限和能力的提升,我们也后悔当初没学好这些理论知识,工程实践没了这些理论知识,身价掉好多,FPGA做算法的待遇你懂的,但是要做好需要很强的数学等理论功底。

比如:下面的FFT的IP核使用,IP核例化使用没什么难的,但是对应的原理和如何进行信号处理的话,就需要我们去补补相关的理论:

Python 处理锂电池 python 电力_python在电力系统中的应用_06

同样,H.264视频压缩相关的概念也和信息论理论有很大的关系,虽然说我会用就行了,不一定要懂的理论知识,但是玩的转的大牛都是对理论理解很彻底的。

4.

MATLAB和PYTHON

MATLAB是之前我们做嵌入式常用的高级语言验证工具,用来学习理解线性函数等数学原理,验证算法,生成ROM的参数表等。现在比较火的Python也是一个不错的选择,而且还非常容易上手,可以用它做一些简单的操作来加速工程开发,下面是通过Python的PIL库做的一些简单图像处理的效果图,有兴趣的话,大家可以去做更深入的研究:

RGB转灰度图效果:

Python 处理锂电池 python 电力_单片机_07

边缘检测效果:

Python 处理锂电池 python 电力_单片机_08

直方图均衡效果:

Python 处理锂电池 python 电力_单片机_09

5.

个人感触

回顾大学数模电,觉得以前没用的东西,现在很有用而不得不得去重弄。所以,不管你现在在做什么,做的并不是感觉上的毫无用处,指不定未来就靠它来改变你的命运,为了以后的自己,做最好的现在。