diff --git a/source/use_case/vww/include/VisualWakeWordProcessing.hpp b/source/use_case/vww/include/VisualWakeWordProcessing.hpp
index bef161f..f9f9d72 100644
--- a/source/use_case/vww/include/VisualWakeWordProcessing.hpp
+++ b/source/use_case/vww/include/VisualWakeWordProcessing.hpp
@@ -35,8 +35,9 @@
         /**
          * @brief       Constructor
          * @param[in]   inputTensor   Pointer to the TFLite Micro input Tensor.
+         * @param[in]   rgb2Gray      Convert image from 3 channel RGB to 1 channel grayscale.
          **/
-        explicit VisualWakeWordPreProcess(TfLiteTensor* inputTensor);
+        explicit VisualWakeWordPreProcess(TfLiteTensor* inputTensor, bool rgb2Gray=true);
 
         /**
          * @brief       Should perform pre-processing of 'raw' input image data and load it into
@@ -49,6 +50,7 @@
 
     private:
         TfLiteTensor* m_inputTensor;
+        bool m_rgb2Gray;
     };
 
     /**
diff --git a/source/use_case/vww/src/VisualWakeWordProcessing.cc b/source/use_case/vww/src/VisualWakeWordProcessing.cc
index a9863c0..4ae8a54 100644
--- a/source/use_case/vww/src/VisualWakeWordProcessing.cc
+++ b/source/use_case/vww/src/VisualWakeWordProcessing.cc
@@ -15,6 +15,7 @@
  * limitations under the License.
  */
 #include "VisualWakeWordProcessing.hpp"
+
 #include "ImageUtils.hpp"
 #include "VisualWakeWordModel.hpp"
 #include "log_macros.h"
@@ -22,8 +23,9 @@
 namespace arm {
 namespace app {
 
-    VisualWakeWordPreProcess::VisualWakeWordPreProcess(TfLiteTensor* inputTensor)
-    :m_inputTensor{inputTensor}
+    VisualWakeWordPreProcess::VisualWakeWordPreProcess(TfLiteTensor* inputTensor, bool rgb2Gray)
+    :m_inputTensor{inputTensor},
+     m_rgb2Gray{rgb2Gray}
     {}
 
     bool VisualWakeWordPreProcess::DoPreProcess(const void* data, size_t inputSize)
@@ -34,17 +36,19 @@
 
         auto input = static_cast<const uint8_t*>(data);
 
-        auto unsignedDstPtr = static_cast<uint8_t*>(this->m_inputTensor->data.data);
+        uint8_t* unsignedDstPtr = this->m_inputTensor->data.uint8;
 
-        /* VWW model has one channel input => Convert image to grayscale here.
-         * We expect images to always be RGB. */
-        image::RgbToGrayscale(input, unsignedDstPtr, inputSize);
+        if (this->m_rgb2Gray) {
+            image::RgbToGrayscale(input, unsignedDstPtr, inputSize);
+        } else {
+            std::memcpy(unsignedDstPtr, input, inputSize);
+        }
 
         /* VWW model pre-processing is image conversion from uint8 to [0,1] float values,
          * then quantize them with input quantization info. */
         QuantParams inQuantParams = GetTensorQuantParams(this->m_inputTensor);
 
-        auto signedDstPtr = static_cast<int8_t*>(this->m_inputTensor->data.data);
+        int8_t* signedDstPtr = this->m_inputTensor->data.int8;
         for (size_t i = 0; i < this->m_inputTensor->bytes; i++) {
             auto i_data_int8 = static_cast<int8_t>(
                     ((static_cast<float>(unsignedDstPtr[i]) / 255.0f) / inQuantParams.scale) + inQuantParams.offset
