Impact of Image Flattening
Flattening is a technique that is used to convert multi-dimensional arrays into a 1-D array, it is generally used in Deep Learning while feeding the 1-D array information to the classification model.
What is the need for Flattening of an Image?
Multi-Dimensional arrays take more amount of memory while 1-D arrays take less memory, which is the most important reason why we flatten the Image Array before processing/feeding the information to our model. In most cases, we will be dealing with a dataset which contains a large amount of images thus flattening helps in decreasing the memory as well as reducing the time to train the model.
Step 1: Importing the necessary libraries
Python3
import numpy as np import pandas as pd import cv2 as cv from google.colab.patches import cv2_imshow from skimage import io from PIL import Image import matplotlib.pylab as plt from numpy import array from sys import getsizeof |
Step 2: Fetching a random image through web
Python3
#Fetching the url and showing the image using cv2_imshow for url in urls: image = io.imread(url) cv2_imshow(image) print ( '\n' ) |

Step 3: Transforming the image into a multi-dimensional array
Python3
#Getting the multi-dimensional array from the image array1 = array(image) #Memory occupied by the multi-dimensional array size1 = getsizeof(array1) print (array1) |
Step 4: Now Flattening the multi-dimensional array using flatten() function
Python3
#Using Flatten function on array 1 to convert the multi-dimensional # array to 1-D array array2 = array1.flatten() #Memory occupied by array 2 size2 = getsizeof(array2) #displaying the 1-D array print (array2) |
Step5: Results of Flattening
Python3
#Print's the two different size's of the array print (f "Size of Multidimensional Image : {size1}" ) print (f "Size of Flattened Image : {size2}" ) difference = size1 - size2 #Print's the difference of memory between the size of Multidimensional & 1-D array print ( "Size difference in the images: " , difference) |
Size of Multidimensional Image : 1324928 Size of Flattened Image : 1324896 Size difference in the images: 32
Step 6: Full Code
Python3
#importing libraries import numpy as np import pandas as pd import cv2 as cv from google.colab.patches import cv2_imshow from skimage import io from PIL import Image import matplotlib.pylab as plt from numpy import array from sys import getsizeof #Fetching the url and showing the image using cv2_imshow for url in urls: image = io.imread(url) cv2_imshow(image) print ( '\n' ) #Getting the multi-dimensional array from the image array1 = array(image) #Memory occupied by the multi-dimensional array size1 = getsizeof(array1) print (array1) #Using Flatten function on array 1 to convert the multi-dimensional # array to 1-D array array2 = array1.flatten() #Memory occupied by array 2 size2 = getsizeof(array2) #displaying the 1-D array print (array2) #Print's the two different size's of the array print (f "Size of Multidimensional Image : {size1}" ) print (f "Size of Flattened Image : {size2}" ) difference = size1 - size2 #Print's the difference of memory between the size of Multidimensional & 1-D array print (difference) |

Conclusion:
After running the whole code we see that there is not a major difference in memory used in the multi-dimensional image array and the flattened array. Then people may ask why we are doing the flattening when the effect is negligible. In a large datasets when we are dealing with thousands of images the net amount of the memory saved due to all the images accumulates to be pretty big.
Please Login to comment...