About this memorandum
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.
- Image (pixel value) statistics: used for various image analysis
- Mean value
- Frequent value
- 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
- 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))
- 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))
Top comments (0)