Skip to content

Instantly share code, notes, and snippets.

@Nastaliss
Created September 17, 2019 09:58
Show Gist options
  • Save Nastaliss/046ad88c7a627f436b0ab7581f4b58b1 to your computer and use it in GitHub Desktop.
Save Nastaliss/046ad88c7a627f436b0ab7581f4b58b1 to your computer and use it in GitHub Desktop.
Image analysis
# -*- coding: utf-8 -*-
import copy
from copy import deepcopy
from functools import reduce
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('.\Meduse_degrade.jpg',cv2.IMREAD_GRAYSCALE)
img_minmax = copy.deepcopy(img)
img_egalization = copy.deepcopy(img)
img_inversion = copy.deepcopy(img)
# ─── TRAITEMENT MINMAX ──────────────────────────────────────────────────────────
min_value = np.min(img_minmax)
max_value = np.max(img_minmax)
for row_index, row in enumerate(img_minmax):
for pixel_index, pixel in enumerate(row):
img_minmax[row_index][pixel_index] = (255 / (max_value - min_value)) * (pixel - min_value)
# ─── TRAITEMENT ÉGALISATION ─────────────────────────────────────────────────────
by_intensity = [np.count_nonzero(img == intensity) for intensity in range(0,255)]
cumulated = []
for index, intensity_count in enumerate(list(by_intensity)):
if index == 0:
cumulated.append(intensity_count)
else:
cumulated.append(intensity_count + cumulated[-1])
total_pixel = img_egalization.size
for row_index, row in enumerate(img_egalization):
for pixel_index, pixel in enumerate(row):
img_egalization[row_index][pixel_index] = 254 / total_pixel * cumulated[pixel]
# ─── TRAITEMENT INVERSION ───────────────────────────────────────────────────────
for row_index, row in enumerate(img_inversion):
for pixel_index, pixel in enumerate(row):
img_inversion[row_index][pixel_index] = 255 - pixel
#-----------------------------
# Histogramme de l'image
plt.subplot(421),plt.imshow(img, cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(422),plt.hist(img.ravel(), bins=256)
plt.title('Histogram, min: {} max:{}'.format(np.min(img), np.max(img))), plt.yticks([])
plt.subplot(423),plt.imshow(img_minmax, cmap = 'gray')
plt.title('MinMax Image'), plt.xticks([]), plt.yticks([])
plt.subplot(424),plt.hist(img_minmax.ravel(), bins=256)
plt.title('Histogram, min: {} max:{}'.format(np.min(img_minmax), np.max(img_minmax))), plt.xticks([]), plt.yticks([])
plt.subplot(425),plt.imshow(img_egalization, cmap = 'gray')
plt.title('Egalisataion d\'histogramme'), plt.xticks([]), plt.yticks([])
plt.subplot(426),plt.hist(img_egalization.ravel(), bins=256)
plt.title('Histogram, min: {} max:{}'.format(np.min(img_egalization), np.max(img_egalization))), plt.xticks([]), plt.yticks([])
plt.subplot(427),plt.imshow(img_inversion, cmap = 'gray')
plt.title('Inversion d\'histogramme'), plt.xticks([]), plt.yticks([])
plt.subplot(428),plt.hist(img_inversion.ravel(), bins=256)
plt.title('Histogram, min: {} max:{}'.format(np.min(img_inversion), np.max(img_inversion))), plt.xticks([]), plt.yticks([])
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment