-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
daniel
committed
Nov 10, 2021
1 parent
4eaf601
commit ef116c2
Showing
62 changed files
with
1,846 additions
and
270 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
2021-04-17_Image_Processing_Made_Easy_Demos/ | ||
2021-08-17_contador_rayos_logica_difusa.m |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,23 @@ | ||
# Lightning-strike-counter | ||
# Contador de rayos | ||
Cuenta cuantos rayos hay en imagenes de tormentas eĺetricas usando dos tipos de algoritmos, redes neuronales convolucionales y un algoritmo de lógica difusa optimizado con tecnicas de algoritmos geneticos. | ||
|
||
## ¿Para que sirve? | ||
Las tormentas electricas son uno de los fenomenos naturales mas devastadores que existen, cada año se pieden millones de dolares en reparar los daños que causan los rayos en las zonas donde caen, ya sea por perdida de equipos, infraestructura o mismos daños a la naturaleza que se requieren mitigar, como es el caso de los incendios forestales. | ||
|
||
Este contador de rayos tiene como proposito ser implementado en un dispositivo IoT que capture fotos de tormentas electricas, para que sea capaz de determinar la cantidad de rayos que han caido en cierto momento, y de esta manera servir como complemento a las soluciones meteorologicas ya en uso. | ||
|
||
## ¿Que tipo de imagenes evalua? | ||
La entrada son imgenes binarias de 150x150 px de tamaño. Para obtener el conjunto de iomagenes se pasaron imagenes de internet por un procesamiento de imagenes que las volvía en formato binario y luego se recortaron segmentos del tamaño especificado para luego pasarlos por el algoritmo de lógica difusa o RNN. | ||
|
||
* Conjunto de imagenes originales en la carpeta `imgOriginal`. | ||
* Conjunto de imagenes binarias en la carpeta `imgOriginalBinary`. | ||
* Conjunto de imagenes binarias de 150x150 px en la carpeta `imgBinary`. | ||
|
||
## Procesamiento de imagenes | ||
El algoritmo de procesamiento de imagenes consiste en tomar como entrada alguna de las imagenes de la carpeta `imgOriginal`, cambiarla a escala de grises, luego a binaria y pasarla por dos llenados de agujeros. El código de esto se encuentra en el archivo `generateBinaryImage.m`. | ||
|
||
## Entrenamiento con redes neuronales convolucionales (RNC) | ||
El el archivo `contadorRNC.m` contiene el algoritmo para el entrenamiento de una red neuronal, que tiene como capa de entrada una imagen de la carpeta `imgBinary`, luego una capa convolucional que analiza una matriz de 5x5 px. La explicación a profundidad de este algoritmo se encuentra el el poster que está en la carpeta `documentacion`. | ||
|
||
## Alagoritmo de lógica difusa | ||
Este consiste en obtener unas estadisticas de las imagenes de la carpeta `imgBinary` (cuyo código está en `getImagesInformation`), luego pasar esta información por un sistema de lógica difusa (que se puede ver tanto en el archivo `FuzzyLogicIndividualCounter.m`, `FuzzyLogicCounter.m`, cualquiera de los archivos `fuzzySystemSaticConfX.m`, o `generaFisConfX.m` para el caso de la optimización con algoritmo genetico). Mas información se puede encontrar en el paper escrito que se encuentra en la carpeta `documentacion`. |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
Binary file added
BIN
+1.33 MB
documentacion/2021-08-17_presentacion_implementacion_logica_difusa_gr_3.zip
Binary file not shown.
Binary file not shown.
Binary file added
BIN
+341 KB
documentacion/2021-09-16_poster_sistema_int_comp_deteccion_rayos_imagenes_corregido.pdf
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
function CdifusoPD = generafisConf5(x) | ||
|
||
sistema=newfis('Lightning_strike_counter'); | ||
|
||
%Variable de entrada: Número de objetos | ||
sistema=addvar(sistema,'input','#Objetos',[0 50]); | ||
|
||
%{ | ||
% Configuración 1 | ||
sistema=addmf(sistema,'input',1,' entre_0_y_20','gaussmf', [35.4 20]); | ||
sistema=addmf(sistema,'input',1,' entre_20_y_100','gaussmf',[35.4 100]); | ||
sistema=addmf(sistema,'input',1,' mas_de_100','gaussmf',[35.37 200]); | ||
%plotmf(sistema,'input',1) | ||
%} | ||
% Configuración 2 | ||
sistema=addmf(sistema,'input',1, 'entre 0 y 4','gbellmf', [x(1) x(2) x(3)]); | ||
sistema=addmf(sistema,'input',1, 'entre 4 y 12','gbellmf',[x(4) x(5) x(6)]); | ||
sistema=addmf(sistema,'input',1, 'mas de 12','gbellmf',[x(7) x(8) x(9)]); | ||
|
||
|
||
%Variable de entrada: Area | ||
sistema=addvar(sistema,'input','Area', [0 1500]); | ||
%{ | ||
% Configuración 1 | ||
sistema=addmf(sistema,'input',2,'pequena','trapmf', [-1.64e+04 -6130 2800 4915]); | ||
sistema=addmf(sistema,'input',2,'media','gaussmf', [6677 1.534e+04]); | ||
sistema=addmf(sistema,'input',2,'grande','trapmf', [1.312e+04 2.977e+04 5.057e+04 5.067e+04]); | ||
%plotmf(sistema,'input',2) | ||
%} | ||
% Configuración 2 | ||
sistema=addmf(sistema,'input',2,'pequena','gbellmf', [x(10) x(11) x(12)]); | ||
sistema=addmf(sistema,'input',2,'media','gbellmf', [x(13) x(14) x(15)]); | ||
sistema=addmf(sistema,'input',2,'grande','gbellmf', [x(16) x(17) x(18)]); | ||
|
||
%Variable de entrada: excentricidad | ||
sistema=addvar(sistema,'input','excentricidad', [0 1]); | ||
|
||
%{ | ||
% Configuración 1 | ||
sistema=addmf(sistema,'input',3,'no_excentrico','gaussmf', [0.289 0.261]); | ||
sistema=addmf(sistema,'input',3,'si_excentrico','gaussmf', [0.177 0.9746]); | ||
%plotmf(sistema,'input',3) | ||
%} | ||
% Configuración 2 | ||
sistema=addmf(sistema,'input',3,'no excentrico','gbellmf', [x(19) x(20) x(21)]); | ||
sistema=addmf(sistema,'input',3,'si excentrico','gbellmf', [x(22) x(23) x(24)]); | ||
|
||
|
||
%Variable de salida: Numero rayos | ||
sistema=addvar(sistema,'output','numero_rayos',[0 2.5]); | ||
|
||
%Funciones de pertenencia | ||
sistema=addmf(sistema,'output',1, '0 rayos','gbellmf', [x(25) x(26) x(27)]); | ||
sistema=addmf(sistema,'output',1, '1 rayo','gbellmf', [x(28) x(29) x(30)]); | ||
sistema=addmf(sistema,'output',1, '2 rayos','gbellmf', [x(31) x(32) x(33)]); | ||
%plotmf(sistema,'output',1) | ||
|
||
%Reglas de inferencia | ||
ruleList=[ | ||
1 1 1 1 1 2 % 0 rayos | ||
1 1 2 1 1 2 % 0 rayos | ||
2 3 2 2 1 2 % 1 rayos | ||
3 2 2 3 1 2]; % 2 rayos | ||
|
||
sistema = addrule(sistema,ruleList); | ||
|
||
|
||
%fuzzy(sistema) | ||
%Actualizando la salida de la funci�n | ||
CdifusoPD=sistema; | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.