本发明以图像去噪领域算法bm3d为切入点,实现bm3d在软件和硬件层面的双重优化,达到算法的最佳效果和最短耗时,首先关注到bm3d算法的缺点,即块匹配的耗时和精度问题,图片细节纹理的保存问题,对于图片纹理细节的保存,本发明提出了一种改良后的canny算子边缘检测作为输入图像的第一步实施,在原有的canny算子边缘检测的前提下,改良了它第一步的滤波手法,这里改成形态滤波,使亮暗更加明显,边缘得以突出,同时在第四步双值滤波部分改成以最小类内方差和最大类间方差确定的单阈值,更加准确地确定边缘的信息。同时在边缘检测之后,本发明采用sfcm算法对图片平坦区域进行类划分,方便之后的块匹配进行有效区域搜索,同时减少搜索块次数,有效减少耗时同时提高精度,算法改良后对整体进行硬件化,对耗时尤为严重的块匹配和协同滤波模块进行硬化,在硬件的角度对其延时进行严格把控,同时因为计算量巨大,本发明提出了一种并行计算的硬件结构去尽可能加快速度,同时在最后的三维正逆变换和硬阈值滤波处合理插入流水线,资源复用,达到面积和速度的最佳情况,在硬件的基本运算单元上,比如乘法器,加法器,除法器,开方等都做了不同程度的优化设计。
背景技术:
1、图像目前是我们生活中方方面面会接触的东西,在视觉感官上,一幅没有受过噪声污染的图片风能让人感到舒适,在科学实验上,没有污染的图片进行信息提取和再次处理加工更加准确,所以对图像去噪领域进行深入研究,现在除去ai去噪之外的公认的最优秀的图像去噪算法即bm3d算法,在某些没有npu加持或npu不致力于图像处理的设备上,bm3d算法的应用前景是非常明朗的。
2、bm3d的基本思想来自于自然图像中本身有很多相似的重复结构的观察结果,采用图像块匹配的方式对这些相似的结构进行收集聚合,然后对其正交变换,得到它们的一个稀疏表示,充分利用稀疏性和结构相似性,进行滤波处理,bm3d的去噪能够充分保留图像的结构和细节,得到很好的信噪比。
3、bm3d算法整体基本可以分为两步骤,即基本估计与最终估计。第一步即为基本估计,主要分为三部分:1.块匹配:充分借鉴nlm算法,在图片中设定一定大小的搜索窗,设定参考图像块,在搜索窗中根据相似条件找到匹配的相似块,然后将所有匹配的相似块堆叠为三维矩阵。2.协同硬阈值滤波:对上一步组成的三维矩阵进行变换域变换,得到图像群组的稀疏表示,然后对变换系数进行硬阈值滤波,最后对滤波后的数据进行变换域反变换,即返回到图像域。3.聚合:因为上一步是处理三维矩阵,所以返回的也是三维矩阵,即许多相似的二维图像块堆叠形成,然后根据块匹配给出的权重对整个群组进行加权平均后得到初始的去噪图像。第二步即最终估计,也主要分为三部分:1.块匹配:根据第一步初始估计得到的去噪图像,再次对其进行块匹配,堆叠成一个三维矩阵,以这个三维矩阵作为参考,根据它的位置在最开始输入的图像同样位置进行取块堆叠。2.协同维纳滤波:这一步主要对两组三维矩阵同进行三维的域变换,用初始估计的图像值作为维纳滤波的经验值,对最初的噪声图像形成域变换后形成的变换系数进行维纳滤波,然后同第一步中的步骤,域逆变换返回到图像域。3.聚合:同初始估计,根据权值进行加权平均返回最终去噪图像。
4、本发明充分研究bm3d算法的优缺点,创新性地提出sfcm算法和canny改良版边缘检测作为bm3d算法块匹配的前置算法的改进,同时提出用硬件设计减少块匹配和三维协同滤波的耗时的思想。实现了上述改进,最后在速度和效果上相对于原版算法有了不错的突破。
技术实现思路
1、本发明的技术目的是:
2、为了解决bm3d算法的资源占用和耗时,本发明提出了将其耗时大的部分进行硬件设计的方法,为了解决bm3d算法的速度和搜索量问题,提出了sfcm算法进行前置类分别的处理模式,为了解决bm3d算法最后处理的图像细节纹理保存不多的情况,提出了使用改良版的canny边缘检测算子进行图像平坦域和边缘域的划分,最后实现bm3d算法在软件和硬件上的整体优化。
3、本发明实现内容:
4、本发明整体的运算流程如图1,首先使用改良后的canny算子进行边缘检测,主要有五个步骤,分别是高斯滤波,像素梯度计算,非极大值抑制,滞后阈值处理和孤立弱边缘抑制。整体流程如图2所示。本发明对于第一步和第四步进行部分优化,在第一步将高斯滤波换成形态滤波,包括顶帽变换和黑帽变换,顶帽变换即是对原图进行开操作,然后用开操作的结果减原图像,开操作会删除图像灰度值相对周围高的亮点,相减后可以有效消除暗背景下的明亮噪声,黑帽变换与顶帽变换相反,对图像进行闭操作后会删除图像灰度值相对周围第的亮点,减去原图像后这样可以使暗区突出同时减少明亮背景下的暗噪声,而滤波后的结果为原图加上顶帽变换之差,减去黑帽变换之差,使亮暗更加明显,从而凸显边缘。
5、第二步像素梯度抑制,因为一阶的有限差分与图像梯度值基本相等,所以通过不同的模板进行边缘检测,即分别在x和y方向求偏导,得到每个像素点处的幅值和方向,从而组合成梯度图。
6、第三步非极大值抑制,目的在于消除边缘检测带来的杂散响应,起到将边缘“瘦身”的作用。其基本方法是将当前像素梯度强度与沿正负梯度方向上的相邻像素的梯度强度进行比较,若其最大(即为极值),则保留该像素为边缘点,若不是最大,则对其进行抑制,不将其作为边缘点。为了更精确计算,通常在跨越梯度方向的两个相邻像素之间使用线性插值来得到要参与比较的像素梯度。
7、第四步对双阈值进行优化,本发明只采用一值阈值,根据最小类内方差准则和最大类间方差法,首先将图像分为边缘和非边缘两类,进行迭代测试,两类共同的总方差最小的时候,定义当时的阈值为分辨边缘与非边缘的标准,类内方差公式如下:
8、
9、式中左项为类内方差,t为类内阈值,ω1(t)代表梯度幅值小于t的像素点个数,u1(t)代表这些像素点的平均梯度幅值,xi即小于t的像素点幅值,整体第一个求和则为非边缘点的类内方差,第二个为边缘点的类内方差,所以取得左项最小的t值即为类内阈值。
10、再根据最大类间方差法,公式如下:
11、g=w0(w0-u)2+w1(u1-u)2
12、式中g表示类间方差,u表示整个图像的灰度平均值,u0表示边缘类的平均灰度值,w0代表边缘类占据整个图像的比例,u1表示非边缘类的平均灰度值,w1代表非边缘类占据整个图像的比例,使g最大的则是边缘类和非边缘类区分最明显的即是类间阈值。
13、最后根据类内阈值和类间阈值进行平均得到最终的阈值。
14、第五步孤立弱边缘抑制,通常而言,由真实边缘引起的弱边缘像素点将连接到强边缘像素点。强边缘点进行连接,有时会形成非闭合边缘,为了使其形成闭合轮廓,则通过查看弱边缘像素及其8个邻域像素,可根据其与强边缘的连接情况来进行判断。一般可定义只要其中邻域像素其中一个为强边缘像素点,则该弱边缘就可以保留为强边缘,赋值1或255,即真实边缘点,进行连接,最后使边缘完全闭合。
15、之后根据canny改良边缘检测算法得到的平坦域和边缘域分开的图片,对平坦域进行sfcm聚类算法类划分,在图像中,相邻像素点是高度相关甚至相符的,所以有很多空间滤波的方式,所以可以知道每个像素点周围的像素点很有可能有着相同的隶属度,这样这些点可以归类于一种类,因此根据这种特性,一个像素点的隶属度定义为样本隶属度和空间隶属度的加权平均,sfcm算法主要实施过程如图3所示,即为1.输入样本集{x1,x2,x3...xn};2.确定要分类的类的个数即c的值,确定样本隶属度因子p和空间隶属度q和迭代的终止条件(这里可以为次数也可以为结束阈值):3.随机初始化隶属度矩阵,根据第二步判断是否符合迭代终止条件;4.固定类中心,将输入样本进行划分,分配给最近的类中心;5.固定整个隶属度矩阵,重新计算类中心位置;6.反复迭代类中心和隶属度矩阵,直到算法满足终止迭代条件终止。
16、这样得到的数据输入到块匹配模块中,这里对块匹配模块和后来的三维协同滤波模块,聚合模块进行硬件设计,如图4所示,display_timing主要进行参数配置和图像数据输入,输出数据给ref_gen,同时送出控制信号给blk_extract模块,ref_gen模块主要对输入数据进行帧判断,送出控制信号给后续的块匹配模块,block_extract模块主要进行将输入的数据进行储存,并且通过控制逻辑延迟输出,组成kernel,同时考虑边界情况,最后输出二维参考图像块和搜索窗内的搜索图像块,并送出当前二维参考图像块和搜索窗内的搜索图像块的位置给聚合模块,pe模块主要进行参考图像块和搜索图像块的相似度并行计算,同时进行排序打分,后续存在fifo里,将score送往聚合模块做最后的聚合权值参考,wht_top模块主要对输入的三维图像组进行三维正逆变换和硬阈值处理,包括正向的wht2维变换,正向的wht1维变换,硬阈值处理模块,逆向的wht2维变换,逆向的wht2维变换,最后输出数据和硬阈值模块后统计的权重到聚合模块,聚合模块主要对输入的数据和权重进行加权平均归一化,然后根据块匹配提供的图像块位置重新摆回,整体架构基本如上所述。
17、除去基本的存储ram和必须的fifo外,本发明在wht模块进行流水线设计,如图5所示。即在二维前向wht变换后,一维前向wht变换后,硬阈值滤波后,二维后向wht变换后,一维后向wht变换后增加寄存器,主要是因为本处为关键路径,且数据流单向,顺序执行,在确保每一级流水线处理的时间基本一样的情况下达到最佳的效果,将整体的变换过程分成几个步骤,提高最后的时钟最高频率,同时考虑到本处增加的寄存器面积其实在整体设计中占比很小,所以予以采用。在实施过程中因为实际上二维的wht变换和一维的wht变换用时不一样,所以在二维wht变换中加入了部分计数器进行扩展延时,达到最后基本的耗时一致从而实现正确的流水线划分。
18、与此同时,本发明提出了一种基于booth算法和华莱士树结构的低功耗乘法器和一种以4位超前进位加法器为核的超前进位架构的32位超前进位加法器,如图6所示,在开方结构中按照逐次逼近的算法进行硬件设计,如图7所示,整体运算模块进行不同程度的优化设计。
19、相比于现有的bm3d算法,本发明有以下优点:
20、1.处理速度更快,耗费资源更少
21、本发明使用的sfcm聚类算法可以有效地缩小搜索窗,同时减少搜索次数,有效节省时间,同时整体对于块匹配和三维协同滤波的硬件设计解决了bm3d算法在软件上这两个部分的耗时和资源耗用。
22、2.实现的图片去噪效果更好
23、首先在一开始对图片进行改良的canny边缘检测,有效地划分了平坦域和边缘域,和双边滤波原理类似,后来对边缘域按照边缘轮廓进行块匹配,对于平坦区域按照sfcm算法进行精准类划分块匹配,得到最后的结果效果更好,且细节和纹理保留程度相比原算法更高。
1.一种软硬件综合优化的bm3d图像去噪算法和硬件电路设计方法,包括算法层次的聚类分析和边缘检测、硬件电路的并行计算和3维正逆变换。其特征在于:
2.由权利要求1所述的选择sfcm算法优化原算法,其特征在于:
3.由权利要求1所述的选择canny算子进行边缘检测优化原算法,其特征在于:
4.由权利要求3所述的canny算子边缘检测进行部分优化,其特征在于:
5.由权利要求1所述的bm3d硬件电路,其特征在于:
6.由权利要求5所述的bm3d硬件电路中基本运算模块的优化,其特征在于: