在实际的图像中,连续的像素点灰度值为相同值的情况非常常见,如果每来一个像素都对双口RAM进行一次寻址和写操作,显然降低了统计效率而提高了功耗。本文中给出一种优化的统计方式:采用一个相同灰度值计数器进行优化,
1.DPRAM:存放统计结果。分为A口和B口,A口负责统计结果写入,不输出。B口负责通国际结果读出和清零,无输入。
2.CNT:相同像素计数器。负责对连续相同恢复值的像素进行计数,服为止为1.
3.ADD+:统计值加法器。对当前统计值和新的统计值进行加法运算,重新写入RAM
4.B_ADDR MUX:B口地址mux,很明显,B口需要完成读出前一个统计值和清零的分时操作。因此一个MUX对读出地址和清零地址进行选通。
5.Reg:将输入数据打两排以确保读出的是当前统计值。
统计原理如下:
当前灰度值的统计值由B口读出,与相同灰度值计数器进行相加后重新写入RAM。CNT会不断检测当前像素和前一个像素是否一致,若不一致,则重置为1,实现统计值加1的目的;若一致,则将计数器加1,直到不一致之后将一致的总数写入RAM,并在每一行图像的最后一个像素统一执行写入操作,这样可大大减少读写RAM操作。
(1)inc_en
此信号负责递增计数器的递增功能。当前待统计数据din_r2有效,且与前一个已经统计完成的数据din_r相同时,将递增计数器加1.否则计数器会复位到1,如下图所示
(2)Rst_cnt
此信号为递增计数器的复位信号。除了当前待统计灰度值与上一个统计过的灰度值不相同的情况下会复位计数器,第一个有效数据到来时也会复位递增计数器,为新的一轮统计工作准备。
(3)We_a
此信号为DPRAM写入信号,也是分两种情况:若当前待统计灰度值与之前待统计值不同,则直接写入RAM。否则,就一直累加直到数据无效时统一写入RAM,如下图所示。
(4)Count_en
此信号为统计使能,很明显,在统计阶段此信号需要一直保持有效,统计完成后,在读出和清零阶段,需要将此信号失能。