5.3 Anaylsing Image Dynamics
5.3.1 Starting simple: One frame
Lets calculate the total amount Red, Green and Blue in our first frame.
5.3.1.1 Version 1 (Lots of lines of code)
img = plt.imread('golgi-frame_01.tif') # Read the image in
img_no_noise = img.copy() # Make a copy
img_red = img_no_noise[:,:,0] # Get the RED layer
img_green = img_no_noise[:,:,1] # Get the GREEN layer
img_blue = img_no_noise[:,:,2] # Get the BLUE layer
#------------------ Remove noise ------------------ #
img_red[img_red < 25] = 0 # Remove noise in RED
img_green[img_green < 25] = 0 # Remove noise in GREEN
img_blue[img_blue < 25] = 0 # Remove noise in BLUE
#------------------ Get the TOTAL light ----------- #
total_red = img_red.sum() # Total in RED
total_green = img_green.sum() # Total in GREEN
total_blue = img_blue.sum() # Total in BLUE
#------------------ Lets plot as a bar chart ------ #
data = [total_red,total_green,total_blue] # Put all the data together
plt.bar(['Red','Green','Blue'],data,color=['r','g','b'])
## <BarContainer object of 3 artists>
plt.show()
5.3.1.2 Version 2 (Simpler with loops)
img = plt.imread('golgi-frame_01.tif') # Read the image in
img_no_noise = img.copy() # Make a copy
data = [] # Will will store our data here
for c in [0,1,2]:
x = img_no_noise[:,:,c] # Pick the layer for the colour and call it x
x[x < 25] = 0 # Remove noise
total = x.sum() # Get the sum
data.append(total) # Add the value to the list
plt.bar(['Red','Green','Blue'],data,color=['r','g','b'])
## <BarContainer object of 3 artists>
plt.show()
5.3.1.3 Version 3 (Lets use a function)
Lets define a function
def give_colours(filename):
img = plt.imread(filename) # Read the image
img_no_noise = img.copy() # Make a copy
data = [] # Will will store our data here
#---- Go through all the colour layers using the loop------ #
for c in [0,1,2]:
x = img_no_noise[:,:,c] # Pick the layer for the colour and call it x
x[x < 25] = 0 # Remove noise
data.append(x.sum()) # Add the value to the list
return data # Give back the R,G,B totals
Lets use the function
data = give_colours('golgi-frame_01.tif') # Apply out function to the file 'golgi-frame_1.tif'
plt.bar(['Red','Green','Blue'],data,color=['r','g','b']) # Plot!
## <BarContainer object of 3 artists>
plt.show()
5.3.2 All frames
file_list = [
'golgi-frame_01.tif','golgi-frame_02.tif','golgi-frame_03.tif','golgi-frame_04.tif',
'golgi-frame_05.tif','golgi-frame_06.tif','golgi-frame_07.tif','golgi-frame_08.tif',
'golgi-frame_09.tif','golgi-frame_10.tif','golgi-frame_11.tif','golgi-frame_12.tif',
'golgi-frame_13.tif','golgi-frame_14.tif','golgi-frame_15.tif','golgi-frame_16.tif',
'golgi-frame_17.tif']
all_data = [] # To store ALL the data
for f in file_list: # Apply our function to all the frames
x = give_colours(f)
all_data.append(x) # Store the informatoin
all_data = np.array(all_data) # Lets convert from a List to an Array. Why do we do this? Ask us :)
# Plot!
plt.plot(all_data[:,0],label='RED', color='r')
plt.plot(all_data[:,1],label='GREEN',color='g')
plt.plot(all_data[:,2],label='BLUE',color='b')
plt.grid()
plt.xlabel('Frame number (I.e. time)')
plt.ylabel('Intensity of colour')
plt.legend()
plt.show()