Miropython - OpenMV to_grayscale function not working as intended

What I am trying to accomplish:
Make a grayscaled image by getting the smallest pixel value of the 3 channels available in the tuple. For Loops for this purpose are too junky hence was trying to use this function.

Sample code:

import sensor, image, time

sensor.reset()                      # Reset and initialize the sensor.
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA)   # Set frame size to QVGA (320x240)
sensor.skip_frames(time = 2000)     # Wait for settings take effect.
clock = time.clock()                # Create a clock object to track the FPS.
i=0

while(i<5):
    clock.tick()                    # Update the FPS clock.
    img = sensor.snapshot()         # Take a picture and return the image.
    print("Before: " + str(img.get_pixel(20,20)))

    img_r = img.to_grayscale(rgb_channel=0, copy=True)
    print("During: " + str(img.get_pixel(20,20)))
    img_g = img.to_grayscale(rgb_channel=1, copy=True)
    #img_b = img.to_grayscale(rgb_channel=2, copy = True)

    print("red = " + str(img_r.get_pixel(20,20)))
    print("green = " + str(img_r.get_pixel(20,20)))

    img = img_r.min(img_g)
    print("After: " + str(img.get_pixel(20,20)))
    i+=1
    #print(clock.fps())              # Note: OpenMV Cam runs about half as fast when connected
                                    # to the IDE. The FPS should increase once disconnected.

Output Received:
Before: (132, 142, 132)
During: 132
red = 132
green = 132
After: 132
Before: (132, 142, 140)
During: 132
red = 132
green = 132
After: 132
Before: (132, 142, 140)
During: 132
red = 132
green = 132
After: 132
Before: (132, 142, 140)
During: 132
red = 132
green = 132
After: 132
Before: (140, 146, 140)
During: 140
red = 140
green = 140
After: 140

Expected Output:

Before: (132, 142, 140)
During: (132, 142, 140) # As the img object is being copied and not being changed
red = 132
green = 142 # This output would be 132 for the main program output because the img object changes to grayscale.
After = 132

Documentation reference:
image.to_grayscale function

Converts an image to a grayscale image (8-bits per pixel). If copy is False this method will try to modify the image in-place. If copy is True then this method will return a new image copy allocated on the heap.

copy may also be another image object, which in this case this method will try to re-use that image objects storage space and will return a new image object that uses the previous image objects storage space. After doing this do not use any references to the old image object anymore as they will be stale.

The first para is what made me reach the Expected Output. The second para is a bit confusing and shedding some light on it might allow me to understand the function better.

Also, the formatting of the to_grayscale function shown in the documentation, I believe is outdated as square brackets are not used while passing function variables, got me a little confused there.