lcytms
发表于 2017-5-2 16:21:28
1152
然后是CR。
然后是NR。
lcytms
发表于 2017-5-2 16:23:55
1153
最终是要送到计算阵列。
先送到右路,然后再送到中路,然后再送到左路。
lcytms
发表于 2017-5-2 16:24:29
1154
总线宽度改了以后,还有这个问题。
流水作业仍然存在。
再说总线宽度改了也要消耗资源。
我们先用32位来做。
做了以后再来讨论。
lcytms
发表于 2017-5-2 16:27:24
1155
你无论如何不可能一次把整个一张图像读进来,这是不可能的。
无论字节多宽,都要分开来做。
这样的话,用4个字节做成一个字,是比较合理的。
lcytms
发表于 2017-5-2 16:28:28
1156
先做4位的,4个像素一个字。
可不可以做8个像素一个字?
也可以。
再往后面,我们做什么呢?
进计算阵列。
我们原来夏老师的代码里面,他用Origin,用O字母。
lcytms
发表于 2017-5-2 16:29:16
1157
O,第一个坐标x为0,表示当前行,-1为前一行,1为下一行。
第二个坐标为1,表明是右路。
右路、中路、左路。O表明是中路。
O表明是左路。
这是一个3*3的阵列。
lcytms
发表于 2017-5-2 16:31:04
1158
一拍一拍地移过去。
先移到右路,再移到中路,再移到左路。
这个呢,就跟PPT一致了。
这张PPT上面得到的是图像处理的一般的方法。
就是3*3的像素,Z1那一点是放在左上角的。
它是先进右路,再进中路,再进左路。
怎么进去呢?
移位寄存器。所以说这些模块都要有移位信号。
lcytms
发表于 2017-5-2 16:32:22
1159
这是移位控制信号。
对于这三个行寄存器,三个行寄存器我们可以写一个模块,分别例化。
都写成行寄存器row_reg,分别例化成PR、CR、NR。
lcytms
发表于 2017-5-2 16:35:42
1200
这个行寄存器,它有两个控制信号,一个是load控制信号,一个是移位控制信号。
这个时候,肯定是load优先。
当load为真的时候,可以装入。
当load为假,shift_en为真的时候,就移位,同样计算阵列也是移位。
这样的话呢,就像我们的PPT那样,它能够先load,先把三行装进来,然后呢再开始移,一步一步地移过去。
移过去,填满3*3的阵列以后,做运算。
这样,后面做什么呢?
三路信号,左路、中路、右路,计算它的偏导数。
lcytms
发表于 2017-5-2 16:39:12
1201
这样的话,它的输出就会得到偏导数。
就是x和y方向的偏导数。
还记不记得黑板上是怎么算的?
把卷积的系数代进去。
已经有了3*3的亮度值,乘上它的系数,就会得到Dx、Dy。
所以说输出就会得到Dx、Dy。