算法实现系统设计方案
扫描二维码
随时随地手机看文章
由前面所述可知,Sobel的滤波函数为
H=(Q0+2Q3+Q6)-(Q2+2Q5+Q8);V=(Q0+2Q1+Q2)—(Q6+2Q7+Q8)
DR=(Q1+2Q0+Q3)-(Q5+2QS+Q7);DL=(Q1+2Q2+Q5)—(Q3+2Q6+Q7)
Magnitude=Max(H,V, DR,DL)
为了减少设计的复杂度,上面式子中的乘法运算可以改写成加法运算:
H=(Q0+Q3+Q3+Q6)-(Q2+Q5十Q5+Q8);V=(Q0+Q1+Q1+Q2)_(Q6+Q7+Q7+Q8)
DR=(Q1+Q0+Q0+Q3)_(Q5+Q8+Q8+Q7);DL=(Q1+Q2+Q2+Q5)-(Q3+Q6+Q6+Q7)
对于以上数据的处理,我们先估算分别使用单片机、DSP、CPLD/FPGA所需的时间。
如果使用12 MB的单片机,加法运算需要执行2次,加法的中间结果寄存20次,大小比较三次,比较中间结果寄存2次,51单片机内的加法需要两个指令周期,比较需要两个指令周期。这样,完成一次Sobel滤波操作需要的时间至少为:(24×2+20+2×3+2)×1 us=72uS°对于一幅600×800像素的图像,总共的时间为:600×800×72uS=32s。
若使用40 MB六级流水的DSP,它们的处理时间大概为:32s/24=1.4s。
如果使用CPLD/FPGA设计,首先,H、V、DR、DL四个方向的滤波可以全部并行,同时,每一个方向的滤波函数可以采用一级四路并行加法器与一级双路并行加法器串连。这样一来,算上两级串行比较器,实际上整个系统只有四级串行结构,假设使用50 M的系统时钟,则处理完一个像素点的时间为4×1/(50 M)=80 ns,处理完一帧图像的时间为800×600×80 ns=38.4 ms,结果处理速度比DSP高了大约两个数量级。
从上可以看出,使用CPLD`FPGA设计有关图像处理模块,对整个系统速度的改善是非常明显的。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
来源:ks990次