Sobel算法:
1、这是一种离散的卷积算法。由于数字图像是以离散的像素形式体现图像,故数字图像处理的实质就是离散数字的处理。
2、所谓卷积(convocation),是对所关心像素进行的离散处理,不仅根据卷积点原图像的数值,而且根据其周期像素的数值。平面卷积按照模板的大小和类型分类,典型的数字图像平面卷积模板采用3*3模板(即课程讨论的计算阵列)
3、采用卷积模板计算对应的图像处理结果(这里是sobel)时,将3*3模板在原数字图像上移动,每次一个像素(或横向,或纵向),以此得到全部图像像素的卷积计算结果,作为图像处理的结果。
4、采用3*3模板卷积时,必定有第1行,最后行,最左列和最右列的像素计算无法得到有效数值,称为卷积计算的边界处理,现代文献中,有将边界值填零,有将边界值填镜像,有将边界值做特定的逻辑运算的各种方案,至芯教材中采用填零的做法。
5、有了算法,如何将算法转变成电路,则是EDA的算法工程师的主要任务。在夏老师的代码中,采用了如下方式的结构以支持算法:
5.1、像素是8比特,数据总线是32比特。即一次存储器的读写访问一个字,可以访问四个像素。
5.2、采用了三个行的字寄存器分别进行前一行,当前行和后一行的一个取样列(字宽度,即4个字节/像素)
5.3、这样在600宽度的图像中,就有0~149个取样列
5.4、在每次取样后,进行对应的移位操作,在整个计算流水线上(含行寄存器移出,计算阵列移动,导数计算,绝对值计算,结果寄存器的移动)移动一个字