BM3D (Block matching and 3D filtering) [1] is still today a reference algorithm for noise reduction. It is based on a splitting of the image into patches, a grouping of similar patches, a 2D filter in the patch domain, a 1D filter in the similarity domain, and then an inversion of these filters to reconstruct the final image. It is still a very studied filter with many recent articles and amelioration such as [2]. The calculation time of BM3D remains important. The C++ implementation used here is Quiang Hao's [3]. This implementation is not specifically optimized, and is proposed as an illustration of this type of filter.

[1] K. Dabov et al. Image denoising by sparse 3D transform-domain collaborative filtering, IEEE Trans. Image Process., vol. 16, no. 8, 2080-2095 (2007).
[2] A.A. Yahya et al. BM3D image denoising algorithm based on an adaptive filtering. Multimed Tools Appl, 79, 20391–20427 (2020).
[3] Qianghaoworl/BM3Ddenoising


You must be logged in to post a comment.

Developers, create your own plugin for plug im !