docs: def configure_threecolor_image(self):
          """
          configures the three color image according to the requested parameters
          :return: nothing, just updates self.image
          """
          order = {'red': 0, 'green': 1, 'blue': 2}
          self.image = np.zeros((self.shape[0], self.shape[1], 3))
          for color, var in self.multicolorvars.items():
              channel = var.get()  # determine which channel should be plotted as this color
              self.image[:, :, order[color]] = self.data[channel]
  
              # scale the image by the power
              self.image[:, :, order[color]] = np.power(self.image[:, :, order[color]],
                                                        self.multicolorpower[color].get())
  
              # adjust the percentile thresholds
              lower = np.nanpercentile(self.image[:, :, order[color]], self.multicolormin[color].get())
              upper = np.nanpercentile(self.image[:, :, order[color]], self.multicolormax[color].get())
              self.image[np.where(self.image[:, :, order[color]] < lower)] = lower
              self.image[np.where(self.image[:, :, order[color]] > upper)] = upper
  
          # image values must be between (0,1) so scale image
          for color, index in order.items():
              self.image[:, :, index] /= np.nanmax(self.image[:, :, index])