# Block-matching and 3D filtering

Left: original crop from raw image taken at ISO800, Middle: Denoised using bm3d-gpu (sigma=10, twostep), Right: Denoised using darktable 2.4.0 profiled denoise (non-local means and wavelets blend)

Block-matching and 3D filtering (BM3D) is a 3-D block-matching algorithm used primarily for noise reduction in images[1].

## Method

### Grouping

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 together to form 3D cylinder-like shapes.

### Collaborative filtering

Filtering is done on every fragments group. A ${\displaystyle d+1}$[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.

### Aggregation

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.

## Extensions

### Color images

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.

### Deblurring

The BM3D algorithm has been extended (IDD-BM3D) to perform decoupled deblurring and denoising using the Nash equilibrium balance of the two objective functions.[2]

### Convolutional neural network

An approach which integrates convolutional neural network has been proposed and shows better results (albeit with a slower runtime).[3] MATLAB code has been released for research purpose.[4]

## References

1. ^ 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.
2. ^ 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.
3. ^ 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].
4. ^ "BMCNN-ISPL". Seoul National University. Retrieved 3 January 2018.
5. ^ "LASIP - Legal Notice". Tampere University of Technology (TUT). Retrieved 2 January 2018.
6. ^ 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.