## DEV Community

haratena9

Posted on • Updated on

# Image Processing #3 Statistics

Recently, I had a chance to experience deep learning and image/video processing at work, but there were many things I didn't understand about how to touch parameters and amplify data, so I decided to study video processing from scratch.

## Statistics

• Image (pixel value) statistics: used for various image analysis
• Mean value
• Median
• Frequent value
• Variance
• Contrast
• Some can be calculated from histograms

The right image shows a white whiteboard with a black metamon on it.
max:1 (white), min:0.0 (black), and we can see that the contrast is 1.0.
There are many ways to calculate contrast.(see code below)

Statistics calculation code

``````im_files =[file_path_A, file_path_B, file_path_C]

for file in im_files:
im = imread(file)[:,:,:3]  # For RGBA, extract only RGB
im = rgb2gray(im)
imshow(im)
plt.show()

print('mean: ', im.mean())
print('std: ', im.std())
print('median: ', np.median(im))
print('max: ', im.max())
print('min: ', im.min())
print('contrast1: ', (im.max() - im.min()) / (im.max() + im.min()) ) # Michelson contrast
print('contrast2: ', im.max() / im.min() if im.min() > 0 else np.nan ) # contrast ratio
print('contrast3: ', im.max() - im.min() ) # contrast difference
print()

``````

## Calculate the mean and variance

### Unsuggested code

• Keep the definition formula
• Large computational complexity: 2 double loops
``````im = rgb2gray(imread('file_path'))
h, w = im.shape

mean = 0
for y in range(h):
for x in range(w):
mean += im[y, x]
mean /= h * w
print('mean: ', mean)

var = 0
for y in range(h):
for x in range(w):
var += (im[y, x] - mean)**2
var /= h * w
print('variance: ', var)
print('std: ', np.sqrt(var))
``````

### Suggested code

• Transformed formula
• Half the computation: one loop.
``````im = rgb2gray(imread('file_path'))
h, w = im.shape

mean = 0
var = 0
for y in range(h):
for x in range(w):
mean += im[y, x]
var  += im[y, x]**2

mean /= h * w
print('mean: ', mean)

var /= h * w
var -= mean**2
print('variance: ', var)
print('std: ', np.sqrt(var))
``````