三维块匹配算法BM3D
三维块匹配算法定义
三维块匹配算法(英语:Block Matching 3D,缩写:BM3D)是一个效果比较好的图像去噪算法。通过与相邻图像块进行匹配,将若干相似的块整合为一个三维矩阵,在三维空间进行滤波处理,再将结果反变换融合到二维,形成降噪后的图像。该算法降噪效果显著,可以得到目前为止最高的峰值信噪比,但时间复杂度比较高。
三维块匹配算法步骤
BM3D算法分两个步骤,两个步骤算法类似,第一步通过原图匹配进行简单降噪形成基础估计,第二步通过原图和基础估计进行更细致的降噪,将PSNR进一步提高。
第一步(基础估计)
首先,在噪声图中以一个步长(通常为3个像素)设定若干个参照块(reference block),每个参照块在周围适当区域内进行搜索,寻找若干个差异最小的块(两个块的差异通常用SSD来量化),将这些块以任意顺序整合成一个三维矩阵。通常会设定一个阈值,只将距离小于这个阈值的块整合到矩阵中,同时也会设置相似块的最大数量。参照块自己也是自己的相似块且差异度为0。
形成若干个三维的矩阵之后,首先将每个三维矩阵中的二维的块(即噪声图中的某个块)进行二维变换编码,可采用小波变换或DCT变换等(通常BIOR1.5小波变换更为常用,效果也更好)。如果使用的是小波变换,为了更好的分离出低频信息,需要变换多次——即在每次变换的左上角1/4低频区继续进行二维变换,直到完成2×2的变换为止。二维变换结束后,在矩阵的第三个维度进行一维变换(通常为hadamard变换)。
此时的三维矩阵已经进行很好的处理。对三维矩阵进行硬阈值处理,将比较小的系数置0,然后通过在第三维的一维反变换和二维反变换得到处理后的图像块。每个二维块均是对降噪图像的估计,分别将这些块融合到原来的位置,每个像素的强度通过每个对应位置的块的值加权平均,权重取决于置0的个数和噪声强度(标准差sigma的值)。
通过如上步骤,便得到了基础估计,实践表明该结果已经是一个很好的降噪结果,通过第二步可以进一步提高降噪图的PSNR。
第二步(最终估计)
第二步与第一步类似。但在块匹配时是用第一步的结果图即基础估计进行匹配,块匹配的差异上限通常比第一步小一些。通过块匹配的结果,每个参考块形成两个三维矩阵:一个是通过基础估计形成的三维矩阵,另一个是通过这次匹配的坐标在噪声图上整合出的三维矩阵。
两个三维数组均进行二维、一维变换。通常最终估计的二维变换采用DCT变换以得到更好的效果。用维纳滤波将噪声图形成的三维矩阵进行系数放缩,该系数通过基础估计的三维矩阵的值以及噪声强度得出。滤波后再通过反变换将噪声图的三维矩阵变换回图像估计。最终通过与第一步类似的加权求和方式将三维矩阵的各个块复原成二维图像形成最终估计, 加权的权重取决于维纳滤波的系数和sigma的值。
经过最终估计之后,BM3D算法已经将原图的噪声显著地去除。
三维块匹配算法参数选取
不同的参数会导致不同的性能和运算复杂度,且不同参数的表现也与噪声的强度有关。根据测试,通常情况下块的大小为8×8,第一步在33×33像素的范围内选取16个最接近参照块的块,第二步在同样的范围内选取32个。第一步的硬阈值设为2.7。
NI视觉中无BM3D算法
在NI视觉中,好像没有BM3D这么高级的算法。也不知道是实现太复杂了,还是说算法是有专利要授权的还是怎么回事。NI视觉中只有一个块匹配算法Block Matching Algorithm:
Block Matching Algorithm块匹配算法
但是这个块匹配算法是用于立体视觉的匹配,而上面介绍的BM3D则是用于图像降噪的。完全是不同的领域。
NI视觉立体视觉函数介绍:
《LabVIEW Vision函数实例详解2020-2024》
到此这篇3dtiles(3DTiles原理)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/39696.html