## 2 Frequency Domain Filtering of Overlapping Patches
### Organization of the Learning Process
Using pairs of ideal and noisy images, the validation dataset was constructed in the following way:  
\[V=\left\{\Big{(}V_{i}^{\text{in}},V_{i}^{\text{out}}\Big{)}\ \Big{|}\ i= \overline{1,g},\ V_{i}^{\text{in}}\in S_{v}^{\text{noisy}},\ V_{i}^{\text{ out}}\in S_{v}\right\}\]  
In our work, MLMVN training was performed using the batch learning algorithm proposed in [60; 61]. This algorithm is based on a derivative-free approach and enables the correction of neuron weights across multiple learning samples simultaneously (that is, across an entire batch). As noted above, correction of the network weights was performed using samples from the training dataset \(L\). During our experiments, we used a training dataset with 60,000 learning samples created from 300 grayscale images (as 200 patches were randomly selected from each of the 300 images). To employ the batch learning algorithm, learning samples were grouped into batches containing \(b\) samples each. We employed a batch size of 20,000 learning samples. The justification for this choice is provided in Section 3.2. Our learning process is based on the maximization of the mean value of the validation PSNR evaluated over the images from the validation set. During our experiments, we employed a validation set, which consists of five pairs of noisy and clean grayscale images. After each batch learning step was completed, a validation step was performed. During the validation, image pairs from the validation dataset \(V\) were processed using the algorithm described in the previous section of this article (see Algorithm 3). The PSNR of the filtered image relative to the clean image was computed for each pair of images from \(V\). The average PSNR value across all elements from \(V\) was compared with the threshold PSNR value, and the learning process either was stopped if the current average validation PSNR reached or exceeded a pre-determined threshold value or continued if it was below it. The algorithm for the learning process is outlined here (Algorithm 4)  
The final performance evaluation of the proposed filtering approach was performed using the images from the \(S_{f}\) set. It is important to note again that these images were not used in the design of either the training set or the validation set. ```
1:Input:
2:\(L\): A training set
3:\(V\): A validation set
4:PSNR\({}_{b}\): The desired PSNR on the validation set
5:PSNR\({}_{b}\): The besired PSNR on a batch
6:\(n\): Tha size of a batch
7: iterations_limit: The maximum number of iterations per batch
8:Output:
9: A trained MLMVN
10:Procedure:
11: Build a set of batches \(B\): \(B\leftarrow\{b_{1},\ldots,b_{k}\mid b_{i}\subseteq L\), \(b_{i}\cap b_{j}=\emptyset\) when \(i\
eq j,|b_{i}|=n\}\)
12:PSNR\({}_{b}^{cur}\gets 0\)
13:repeat
14:for\(b\in B\)do
15:PSNR\({}_{b}^{cur}\gets 0\)
16:iteration \(\gets 0\)
17:whilePSNR\({}_{b}^{cur}<\)PSNR\({}_{b}\) and iteration \(<\) iteration_limit do
18: Update the MLMVN weights
19: Process the samples from \(b\) with the MLMVN: \(\bar{b}\leftarrow\{\)MLMVN\((s_{i})\mid s_{i}\in b\}\)
20:PSNR\({}_{b}^{cur}\leftarrow\) mean\((\{\)PSNR\((\bar{s}_{i},s_{i})\mid\bar{s}_{i}\in\bar{b},s_{i}\in b\})\)
21:iteration \(\leftarrow\) iteration \(+1\)
22:endwhile
23: Process the images from \(V\) with the MLMVN: \(\bar{V}\leftarrow\{\)MLMVN\((v_{i})\mid v_{i}\in V\}\)
24:PSNR\({}_{b}^{cur}\leftarrow\) mean\((\{\)PSNR\((\bar{v}_{i},v_{i})\mid\bar{v}_{i}\in\bar{V},v_{i}\in V\})\)
25:ifPSNR\({}_{b}^{cur}>\)\(=\)PSNR\({}_{b}\)then
26:break
27:endif
28:endfor
29:untilPSNR\({}_{b}^{cur}>\)\(=\)PSNR\({}_{b}\)
30:return A trained MLMVN
```  
**Algorithm 4** The MLMVN learning process