Block-matching and 3D filtering
Block-matching and 3D filtering (BM3D) is a 3-D block-matching algorithm used primarily for noise reduction in images. It is one of the expansions of the non-local means methodology. There are two cascades in BM3D: a hard-thresholding and a Wiener filter stage, both involving the following parts: grouping, collaborative filtering, and aggregation. This algorithm depends on an augmented representation in the transformation site.
Image fragments are grouped together based on similarity, but unlike standard k-means clustering and such cluster analysis methods, the image fragments are not necessarily disjoint. This block-matching algorithm is less computationally demanding and is useful later on in the aggregation step. Fragments do however have the same size. A fragment is grouped if its dissimilarity with a reference fragment falls below a specified threshold. This grouping technique is called block-matching, it is typically used to group similar groups across different frames of a digital video, BM3D on the other hand may group macroblocks within a single frame. All image fragments in a group are then stacked to form 3D cylinder-like shapes.
Filtering is done on every fragments group. A [clarification needed] dimensional linear transform is applied, followed by a transform-domain shrinkage such as Wiener filtering, then the linear transform is inverted to reproduce all (filtered) fragments.
The image is transformed back into its two-dimensional form. All overlapping image fragments are weight-averaged to ensures that they are filtered for noise yet retain their distinct signal.
RGB images can be processed much like grayscale ones. A luminance-chrominance transformation should be applied to the RGB image. The grouping is then completed on the luminance channel which contains most of the useful information and a higher SNR. This approach works because the noise in the chrominance channels is strongly correlated to that of the luminance channel, and it saves approximately one-third of the computing time because grouping takes up approximately half of the required computing time.
Convolutional neural network
- Reference implementation in MATLAB and Python released under an open-source proprietary license: BM3D
- Well documented C-based implementation released under the GPLv3: bm3d
- CUDA and C++ based implementation released under the GPLv3: bm3d-gpu
- Dabov, Kostadin; Foi, Alessandro; Katkovnik, Vladimir; Egiazarian, Karen (16 July 2007). "Image denoising by sparse 3D transform-domain collaborative filtering". IEEE Transactions on Image Processing. 16 (8): 2080–2095. Bibcode:2007ITIP...16.2080D. CiteSeerX 10.1.1.219.5398. doi:10.1109/TIP.2007.901238.
- Manjón, José V.; Carbonell-Caballero, José; Lull, Juan J.; García-Martí, Gracián; Martí-Bonmatí, Luís; Robles, Montserrat (2008-08-01). "MRI denoising using Non-Local Means". Medical Image Analysis. 12 (4): 514–523. doi:10.1016/j.media.2008.02.004. ISSN 1361-8415.
- Maggioni, M.; Katkovnik, V.; Egiazarian, K.; Foi, A. (January 2013). "Nonlocal Transform-Domain Filter for Volumetric Data Denoising and Reconstruction". IEEE Transactions on Image Processing. 22 (1): 119–133. doi:10.1109/TIP.2012.2210725. ISSN 1057-7149.
- Danielyan, Aram; Katkovnik, Vladimir; Egiazarian, Karen (30 June 2011). "BM3D Frames and Variational Image Deblurring". IEEE Transactions on Image Processing. 21 (4): 1715–28. arXiv:1106.6180. Bibcode:2012ITIP...21.1715D. doi:10.1109/TIP.2011.2176954. PMID 22128008.
- Ahn, Byeongyong; Ik Cho, Nam (3 April 2017). "Block-Matching Convolutional Neural Network for Image Denoising". arXiv:1704.00524 [Vision and Pattern Recognition Computer Vision and Pattern Recognition].
- "BMCNN-ISPL". Seoul National University. Retrieved 3 January 2018.
- "LASIP - Legal Notice". Tampere University of Technology (TUT). Retrieved 2 January 2018.
- Lebrun, Marc (8 August 2012). "An Analysis and Implementation of the BM3D Image Denoising Method". Image Processing on Line. 2: 175–213. doi:10.5201/ipol.2012.l-bm3d.