Commit 5bd6c411b1110e213255a33c76f40bff574508d7

Authored by David Mayerich
1 parent be1064b1

added contrast stretching to stim::image

Showing 1 changed file with 15 additions and 0 deletions   Show diff stats
stim/image/image.h
... ... @@ -384,6 +384,21 @@ public:
384 384  
385 385 }
386 386  
  387 + /// Stretch the contrast of the image such that the minimum and maximum intensity match the given values
  388 + image<T> stretch(T low, T high) {
  389 + T maxval = maxv();
  390 + T minval = minv();
  391 +
  392 + image<T> result = *this; //create a new image for output
  393 + size_t N = size(); //get the number of values in the image
  394 + double range = maxval - minval; //calculate the current range of the image
  395 + double desired_range = high - low; //calculate the desired range of the image
  396 + for (size_t n = 0; n < N; n++) { //for each element in the image
  397 + result.data()[n] = desired_range * (img[n] - minval) / range;
  398 + }
  399 + return result;
  400 + }
  401 +
387 402 /// Copy the given data to the specified channel
388 403  
389 404 /// @param c is the channel number that the data will be copied to
... ...