-
Notifications
You must be signed in to change notification settings - Fork 0
/
entropia.py
39 lines (32 loc) · 1.62 KB
/
entropia.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# -*- coding: utf-8 -*-
""" Determinar cómo varía el área plana de la imagen a lo largo del tiempo"""
import matplotlib.pyplot as plt
from skimage import io, restoration
from skimage.filters.rank import entropy
from skimage.filters import try_all_threshold, threshold_otsu
from skimage.morphology import disk
import numpy as np
img = io.imread("./Imagenes/entropia/Scratch0.jpg")
##############
## Entropía ##
##############
# La entropía se utiliza mucho en la detección de texturas
# Al hacer más grande el argumento de disk(), se va difuminando más la imagen
entropy_img = entropy(img, disk(3))
plt.imshow(entropy_img, cmap= "gray")
plt.show()
####################################################
## Determinar cuál threshold me conviene utilizar ##
####################################################
fig, ax = try_all_threshold(entropy_img, figsize=(10,8), verbose= False)
plt.show()
# Se concluye que se puede usar cualquiera: Minimum, Otsu, Mean o Isodata
th = threshold_otsu(entropy_img) # Devuelve un flotante a th -> Nos devuelve el mejor valor para separar las 2 áreas
binary = entropy_img <= th # Convertir la imagen a binario
plt.imshow(binary, cmap= "gray")
plt.show()
#############################################################################
## Determinar la cantidad de píxeles blancos -> Permite determinar el área ##
#############################################################################
# Como quiero porcentaje se hace (no._pixelesBlancos / (no._pixelesBlancos + no._pixelesNegros))*100
print("El porcentaje de píxeles blancos es: ", (np.sum(binary==1)/(np.sum(binary==1) + np.sum(binary==0)))*100)