diff --git a/unit_tests/Test_Stimulus.cpp b/unit_tests/Test_Stimulus.cpp
index 7ad5613cdaece960c08ee2d4915bf1f97b6d65f5..bdfe453fe0ce606d1b895e998b408f0f9adf7274 100644
--- a/unit_tests/Test_Stimulus.cpp
+++ b/unit_tests/Test_Stimulus.cpp
@@ -19,17 +19,37 @@
 #include "aidge/backend/opencv/data/TensorImpl.hpp"
 #include "aidge/data/Tensor.hpp"
 
+#include "Tools.hpp"
 
 using namespace Aidge;
 
 TEST_CASE("Stimulus creation", "[Stimulus][OpenCV]") {
     SECTION("Instanciation & load an image") {
-        //  Load image with imread
-        cv::Mat true_mat = cv::imread("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm", cv::IMREAD_UNCHANGED);
-        REQUIRE(true_mat.empty()==false);
+        // //  Load image with imread
+        // cv::Mat true_mat = cv::imread("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm", cv::IMREAD_UNCHANGED);
+        // REQUIRE(true_mat.empty()==false);
+
+        // // Create Stimulus
+        // Stimulus stimg("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm", true);
+        // stimg.setBackend("opencv");
+        
+        //  Generate random matrix and save it
+        std::vector<cv::Mat> channels;
+        cv::Mat true_mat;
+
+        for (int c = 0; c < 3; ++c){
+            // Create a random matrix
+            cv::Mat randomMat = createRandomMat<unsigned char>(224, 224);
+            // Add each random matrix to the vector
+            channels.push_back(randomMat);
+        }
+        // Merge the vector of cv mat into one cv mat
+        cv::merge(channels, true_mat);
+
+        cv::imwrite("output_image.png", true_mat);
 
         // Create Stimulus
-        Stimulus stimg("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm", true);
+        Stimulus stimg("output_image.png", true);
         stimg.setBackend("opencv");
 
         // Load the image in a tensor & save it in memory
diff --git a/unit_tests/Test_StimulusImpl_opencv_imread.cpp b/unit_tests/Test_StimulusImpl_opencv_imread.cpp
index d84e65ee8a32d06067428ba76eb5eb0aaccb0296..b3b2b1999e39ab9512597ae932b72679029adc4d 100644
--- a/unit_tests/Test_StimulusImpl_opencv_imread.cpp
+++ b/unit_tests/Test_StimulusImpl_opencv_imread.cpp
@@ -19,19 +19,41 @@
 #include "aidge/backend/opencv/data/TensorImpl.hpp"
 #include "aidge/data/Tensor.hpp"
 
+#include "Tools.hpp"
 
 using namespace Aidge;
 
 TEST_CASE("StimulusImpl_opencv_imread creation", "[StimulusImpl_opencv_imread][OpenCV]") {
     SECTION("Instanciation & load an image") {
-        //  Load image with imread
-        // cv::Mat true_mat = cv::imread("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/Lenna.png");
-        cv::Mat true_mat = cv::imread("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm", cv::IMREAD_UNCHANGED);
-        REQUIRE(true_mat.empty()==false);
-
-        // Create StimulusImpl_opencv_imread
-        // StimulusImpl_opencv_imread stImpl("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/Lenna.png");
-        StimulusImpl_opencv_imread stImpl("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm");
+        // //  Load image with imread
+        // // cv::Mat true_mat = cv::imread("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/Lenna.png");
+        // cv::Mat true_mat = cv::imread("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm", cv::IMREAD_UNCHANGED);
+        // REQUIRE(true_mat.empty()==false);
+
+        // // Create StimulusImpl_opencv_imread
+        // // StimulusImpl_opencv_imread stImpl("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/Lenna.png");
+        // StimulusImpl_opencv_imread stImpl("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm");
+        
+         //  Generate random matrix and save it
+        std::vector<cv::Mat> channels;
+        cv::Mat true_mat;
+
+        for (int c = 0; c < 3; ++c){
+            // Create a random matrix
+            cv::Mat randomMat = createRandomMat<unsigned char>(224, 224);
+            // Add each random matrix to the vector
+            channels.push_back(randomMat);
+        }
+        // Merge the vector of cv mat into one cv mat
+        cv::merge(channels, true_mat);
+
+        // Save image into a png file
+        cv::imwrite("output_image_stimpl.png", true_mat);
+
+        // Instanciate timulusImpl_opencv_imread
+        StimulusImpl_opencv_imread stImpl("output_image_stimpl.png");
+
+        // Load the image as a tensor
         std::shared_ptr<Tensor> tensor_load;
         tensor_load = stImpl.load();
 
diff --git a/unit_tests/Tests_Utils.cpp b/unit_tests/Tests_Utils.cpp
index bd01df9b9f51c53e68135c554ab3497d3e5a19c1..91cd54f67cf0c96f977b5b87e92214faee7de2e4 100644
--- a/unit_tests/Tests_Utils.cpp
+++ b/unit_tests/Tests_Utils.cpp
@@ -21,18 +21,10 @@
 #include "aidge/backend/opencv/data/TensorImpl.hpp"
 #include "aidge/backend/cpu/data/TensorImpl.hpp"
 
+#include "Tools.hpp"
 
 using namespace Aidge;
 
-template <typename T>
-cv::Mat createRandomMat(int rows, int cols) {
-    cv::Mat randomMat(rows, cols, cv::DataType<T>::type);
-
-    cv::randu(randomMat, cv::Scalar::all(0), cv::Scalar::all(255));
-
-    return randomMat;
-}
-
 // TEMPLATE_TEST_CASE("Opencv Utils", "[Utils][OpenCV]", char, unsigned char, short, unsigned short, int, float, double) {
 // TODO : perform test for char and double
 TEMPLATE_TEST_CASE("Opencv Utils", "[Utils][OpenCV]", signed char, unsigned char, short, unsigned short, int, float, double) {
diff --git a/unit_tests/Tools.hpp b/unit_tests/Tools.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..0ade0c54c11ca35ce52fbe26491e77af80fa31c4
--- /dev/null
+++ b/unit_tests/Tools.hpp
@@ -0,0 +1,26 @@
+/********************************************************************************
+ * Copyright (c) 2023 CEA-List
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ ********************************************************************************/
+
+#ifndef AIDGE_OPENCV_TOOLS_H_
+#define AIDGE_OPENCV_TOOLS_H_
+
+#include "opencv2/core.hpp"
+
+template <typename T>
+cv::Mat createRandomMat(int rows, int cols) {
+    cv::Mat randomMat(rows, cols, cv::DataType<T>::type);
+
+    cv::randu(randomMat, cv::Scalar::all(0), cv::Scalar::all(255));
+
+    return randomMat;
+}
+
+#endif // AIDGE_OPENCV_TESTS_UTILS_H_
\ No newline at end of file