Códigos Fuente de Python

Mostrando del 21 al 30 de 763 registros
Imágen de perfil

InceptionV3


Python

Publicado el 7 de Marzo del 2024 por Hilario (125 códigos)
303 visualizaciones desde el 7 de Marzo del 2024
IMAGEN A PREDECIR.
-------------------------------
predice

********************************************************************************************************************
Pretendemos evaluar el acierto de este ejercicio de red neuronal convolucional, CNN.
-----------------------------------------------------------------------------------------------------------------
Planteamos el sencillo código: Aula_28_inception_v3.py, utilizando una arquitectura de red neuronal convolucional (CNN), que se utiliza comúnmente para tareas de visión por computadora, como clasificación de imágenes.
Fue desarrollada por Google y es parte de la familia de modelos Inception.

La idea clave detrás de InceptionV3 es utilizar múltiples tamaños de filtros convolucionales
en paralelo para capturar patrones de diferentes escalas en una imagen. En lugar de elegir
un solo tamaño de filtro, InceptionV3 utiliza varios tamaños, desde pequeños hasta grandes,
y luego concatena las salidas de estos filtros para formar una representación más rica y completa de la imagen.

Además, InceptionV3 incorpora módulos llamados "módulos de Inception",
que son bloques de construcción que contienen diferentes operaciones convolucionales en paralelo.
Estos módulos permiten que la red aprenda representaciones más complejas y abstractas de las imágenes.

Sus principales características y funciones son las siguientes:

Extracción jerárquica de características: InceptionV3 utiliza capas convolucionales
para extraer características jerárquicas de las imágenes. Estas capas aprenden patrones
simples en las capas iniciales y patrones más complejos y abstractos a medida que se profundiza en la red.

Módulos de Inception: La arquitectura de InceptionV3 utiliza módulos llamados "módulos de Inception" o "bloques Inception".
Estos módulos incorporan múltiples operaciones convolucionales de diferentes tamaños de filtro en paralelo. Al hacerlo,
la red puede capturar patrones de información a diferentes escalas en una imagen.

Reducción de dimensionalidad: InceptionV3 incluye capas de reducción de dimensionalidad,
como capas de agrupación máxima y capas de convolución 1x1, para reducir la cantidad de
parámetros y operaciones, haciendo que la red sea más eficiente y manejable.

Regularización: La red incluye técnicas de regularización, como la normalización por lotes y la
regularización L2, para prevenir el sobreajuste y mejorar la generalización del modelo.

Arquitectura profunda: InceptionV3 es una red profunda con muchas capas, lo que le permite
aprender representaciones complejas y abstractas de las imágenes, lo que es beneficioso
para tareas de clasificación de imágenes en conjuntos de datos grandes y complejos.
**************************************************************************************
SALIDA DEL EJERCICIO, AL APORTAR LA IMAGEN DE MUESTRA.
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 1s 744ms/step
1: trailer_truck (0.70)
2: moving_van (0.08)
3: garbage_truck (0.05)
[Finished in 3.9s]
**************************************************************************************
Se debera modificar en el código, la ruta de la imagen de muestra desde tu ordenador.
*************************************************************************************

El ejercicio ha sido realizado bajo plataforma linux.
Ubuntu 20.04.6 LTS.
Editado con Sublime Text.
Ejecución bajo consola linux:
python3 Aula_28_inception_v3.py
---------------------------------------------------------------------------------------
Imágen de perfil

Comprobar eficacia, código CNN.


Python

Publicado el 6 de Marzo del 2024 por Hilario (125 códigos)
186 visualizaciones desde el 6 de Marzo del 2024
IMAGEN A PREDECIR.
-----------------------------

zapato

El codigo de estudio, fue recogido en la página oficial de Tensorflow, con el Copyright (c) 2017 de François Chollet.

Ver nota final de uso.
Lo que trato con este ejercicio, es añadirle un tramo de código, con el fin de probar su eficacia al añadirle la predicción de una imagen aportada por mí.
Por lo que pude apreciar, los resultados no son del todo halagueños.


# Copyright (c) 2017 François Chollet
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
Imágen de perfil
Val: 712
Bronce
Ha aumentado 1 puesto en Python (en relación al último mes)
Gráfica de Python

Colector de links


Python

Actualizado el 2 de Marzo del 2024 por Antonio (76 códigos) (Publicado el 6 de Marzo del 2022)
3.504 visualizaciones desde el 6 de Marzo del 2022
Aplicación para guardar accesos directos a internet (que se guardan en un archivo 'json' que se genera al ejecutar el programa por primera vez), mediante la introducción de la URL en la entrada superior (o su copia mediante el botón 'IMPORT NEW LINK'). El nuevo acceso se guarda mediante el botón "SAVE LINK AS:" que abrirá una ventana pidiendo el nombre del nuevo acceso. Una vez guardado el acceso, se podrá acceder a la correspondiente página seleccionando, en la lista, el elemento guardado y clicando en el botón 'ACCESS' (admite selección normal y múltiple). También permite la eliminación la totalidad de los link o solo los seleccionados. También permite la búsqueda por nombre entre los accesos guardados. El botón "SAVE LIST" generará un archivo de texto con los nombres de enlace y sus correspondientes URLs asociadas, que estén almacenados en el archivo JSON.
PARA CUALQUIER DUDA U OBSERVACIÓN, USEN LA SECCIÓN DE COMENTARIOS.
LNKC
Imágen de perfil

PyTorch


Python

Publicado el 29 de Febrero del 2024 por Hilario (125 códigos)
266 visualizaciones desde el 29 de Febrero del 2024
Imagen a predecir.

***********************************************************
perro

********************************************************************************************************************

Propongo el ejercicio: Aula_18_Ejercicio_torch.py
Este ejercicio fue realizado con PyTorch.
En mi caso lo he editado con Sublime text, y lo he ejecutado bajo consola
con Ubuntu 20.04.6 LTS.

Si se tuviera problemas para ejecutarlo bajo consola linux, por sosportación CUDA, al no tener GPU Nvidia, se podría optar
por su edición y ejecución bajo Google Colab, utilizando Drive de Google, como almacenamiento.
*******************************************************************************************************************
El ejercicio, muestra la opción más posible por porcentajes, y nos remite a una página web para comprobar el resultado.

Vease una salida tipo:

SALIDA POR CONSOLA LINUX.
West Highland white terrier 0.7944785952568054
Maltese dog 0.025748323649168015
Norwich terrier 0.013491143472492695
Scotch terrier 0.0073037706315517426
cairn 0.005692108068615198
Para ver imágenes de 'West Highland white terrier', visita: https://www.google.com/search?q=West+Highland+white+terrier&tbm=isch

****************************************************************************************************************************************************************************************************************************************
PyTorch, un marco de trabajo de aprendizaje profundo (deep learning) de código abierto desarrollado por Facebook. PyTorch es conocido por su flexibilidad y facilidad de uso, y es utilizado tanto en la investigación académica como en la producción industrial para desarrollar y entrenar modelos de aprendizaje profundo.

A continuación, se describen algunos aspectos clave de PyTorch:

Tensores:
PyTorch utiliza tensores como su estructura de datos fundamental. Los tensores son similares a los arreglos multidimensionales de NumPy y pueden representar datos numéricos para entrenar modelos de aprendizaje profundo.
Autograd:
PyTorch incorpora un sistema de diferenciación automática llamado Autograd. Este sistema permite calcular automáticamente gradientes para los tensores, facilitando la retropropagación y el entrenamiento de modelos.
Dinámica de gráficos computacionales:
A diferencia de algunos otros marcos de trabajo de aprendizaje profundo que utilizan gráficos computacionales estáticos, PyTorch utiliza gráficos computacionales dinámicos. Esto proporciona flexibilidad al construir y modificar dinámicamente la estructura del grafo durante la ejecución.
API amigable:
PyTorch ofrece una API amigable y fácil de usar que facilita el proceso de experimentación y desarrollo. Esto ha contribuido a su popularidad en la comunidad de investigación y desarrollo de aprendizaje profundo.
Módulos para visión, procesamiento de lenguaje natural, etc.:

PyTorch cuenta con diversos módulos y paquetes, como torchvision para visión por computadora, torchtext para procesamiento de lenguaje natural, y otros, que facilitan el desarrollo de modelos en diversas áreas de aplicación.
Compatibilidad con GPU:
PyTorch está diseñado para aprovechar el rendimiento de las GPU para acelerar el entrenamiento de modelos. Esto se logra mediante la ejecución de operaciones en tensores en GPU cuando sea posible.

Comunidad activa y soporte:

PyTorch cuenta con una comunidad activa de usuarios y desarrolladores, y hay una amplia variedad de recursos, tutoriales y documentación disponible.
En resumen, PyTorch (o simplemente torch en referencia a su nombre de paquete) es un marco de trabajo de aprendizaje profundo que ha ganado popularidad debido a su flexibilidad, facilidad de uso y la adopción en la comunidad de investigación y desarrollo de inteligencia artificial.


********************************************************************************************************************
Este script de Python utiliza PyTorch y la biblioteca de visión de torchvision para cargar un modelo de red neuronal preentrenado
(GoogleNet) y realizar inferencias sobre una imagen específica. Aquí está una descripción paso a paso del código:

Importación de bibliotecas:
import torch
from PIL import Image
from torchvision import transforms

torch: Librería principal de PyTorch.
Image: Clase de la biblioteca Python Imaging Library (PIL) para trabajar con imágenes.
transforms: Módulo de torchvision que proporciona funciones para realizar transformaciones en imágenes, como cambiar el tamaño, recortar, etc.

***********************************************************************
Carga del modelo preentrenado:

model = torch.hub.load('pytorch/vision:v0.10.0', 'googlenet', pretrained=True)
model.eval()

*******************************************************************************
Preprocesamiento de la imagen:

preprocess = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

Se define una serie de transformaciones para preprocesar la imagen, incluyendo el cambio de tamaño, recorte, conversión a tensor y normalización.
*******************************************************************************
Carga de la imagen y aplicación del preprocesamiento:

input_image = Image.open(image_path_drive)
input_tensor = preprocess(input_image)
input_batch = input_tensor.unsqueeze(0)

Se carga la imagen desde la ruta especificada y se aplica el preprocesamiento.
**************************************************************************************
Transferencia a GPU (si está disponible):
if torch.cuda.is_available():
input_batch = input_batch.to('cuda')
model.to('cuda')

Si la GPU está disponible, se mueve tanto la entrada como el modelo a la GPU.
**********************************************************************************************
Inferencia del modelo:
with torch.no_grad():
output = model(input_batch)
Se realiza la inferencia en el modelo preentrenado para obtener las puntuaciones de salida
**************************************************************************************************
Postprocesamiento y visualización de resultados:
probabilities = torch.nn.functional.softmax(output[0], dim=0)
top5_prob, top5_catid = torch.topk(probabilities, 5)

for i in range(top5_prob.size(0)):
print(categories[top5_catid[i]], top5_prob[i].item())

Se calculan las probabilidades utilizando softmax y se imprimen las cinco categorías principales junto con sus puntuaciones de confianza.
*********************************************************************************************************

Búsqueda en Google Imagenes:

top_category = categories[top5_catid[0]]
search_query = top_category.replace(" ", "+")
search_link = f"https://www.google.com/search?q={search_query}&tbm=isch"
print(f"Para ver imágenes de '{top_category}', visita: {search_link}")

Se selecciona la categoría principal (la de mayor puntuación) y se construye un enlace para buscar imágenes relacionadas en Google Images.
********************************************************************************************************************

En resumen, este programa demuestra cómo cargar un modelo preentrenado, realizar inferencias en una imagen,
y luego visualizar las categorías principales y realizar una búsqueda en Google Images basada en la categoría principal identificada por el modelo.

********************************************************************************************************************

EXIGENCIAS PARA SU DEBIDA EJECUCIÓN BAJO LINUX.
----------------------------------------------

Preparar la carga de librerías para un sistema Linux.
En concreto: Ubuntu 20.04.6 LTS. Se deberán cargar de
la siguiente forma, y en esta secuencia, en consola Linux:

sudo apt-get update
sudo apt-get install -y python3-pip python3-dev python3-venv
sudo apt-get install -y libopenblas-base libopenmpi-dev

-----------------------------------------------------
python3 -m venv myenv
source myenv/bin/activate

----------------------------------------------------
pip install torch torchvision torchaudio

----------------------------------------------
Comprobamos que todo ha ido bien:
import torch
print(torch.__version__)

----------------------------------------------------
También debemos descargar a nuestro directorio actual de ejecucion:imagenet_classes.txt
con este comando:
wget https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt

Debemos bajar la imagen de una raza de perro, y proporcionar la ruta para
que el programa haga la predicción. En mi caso sería:
image_path_drive = '/home/margarito/python/perro.jpg'

****************************************************************************
Como comenté en mi caso, el ejercicio fue realizado en una plataforma Linux.
Ubuntu 20.04.6 LTS.
Ejecución bajo consola con este comando:
python3 Aula_18_Ejercicio_torch.py

----------------------------------------------------------------------------------------------------------------------------------------
Imágen de perfil

Estructura de un Pixel.


Python

Publicado el 26 de Febrero del 2024 por Hilario (125 códigos)
236 visualizaciones desde el 26 de Febrero del 2024
1
2
3
4
5
6

***********************************************************************************************************************
Propongo este sencillo ejercicio:Aula_18_Pixel.py,
realizado en python, con el fin de ver la estructura de una imagen.
Permite aplicar zoom a una imagen, hasta llegar a ver la configuración y los valores,
en los diferentes canales de los pixels que la componen, pixel a pixel.
(Ver imágenes adjuntas)

Esta es una pequeña explicación del código que forma parte del ejercicio:

El código en Python utiliza la biblioteca OpenCV para cargar una imagen, mostrarla en una ventana, visualizar los valores de los píxeles y luego guardar la imagen resultante. Aquí tienes una descripción línea por línea:

import cv2: Importa la biblioteca OpenCV, que es utilizada para procesamiento de imágenes y visión por computadora.

import numpy as np: Importa la biblioteca NumPy y la asigna al alias 'np'. NumPy se utiliza para manipular matrices y arreglos, y se usa en conjunto con OpenCV en este código.

image_path = '/home/margarito/python/lorenzo.jpg': Asigna la ruta de la imagen de prueba a la variable image_path. Debes cambiar esta ruta por la ubicación de tu propia imagen.

image = cv2.imread(image_path): Lee la imagen desde la ruta especificada usando la función cv2.imread y guarda la imagen en la variable image.

cv2.imshow("Output Image", image): Muestra la imagen en una ventana con el título "Output Image" utilizando la función cv2.imshow.

cv2.waitKey(0): Espera hasta que se presione una tecla (código de tecla 0 indica que espera indefinidamente) antes de continuar la ejecución del programa.

cv2.destroyAllWindows(): Cierra todas las ventanas de visualización creadas por OpenCV.

cv2.imwrite("output_image.jpg", image): Guarda la imagen actual en el archivo "output_image.jpg" utilizando la función cv2.imwrite.

Este código es un muy ejemplo básico de cómo cargar, visualizar y guardar una imagen usando OpenCV en Python.
************************************************************************************************
El ejercicio fue ejecutado en una plataforma Linux, Ubuntu 20.04.6 LTS.
Editado con: Sublime text.
Se deberá tener caragdo en el sistema las librerías necesarias a importar:

import cv2
import numpy as np

Ejecutar bajo consola linux:python3 Aula_18_Pixel.py
Imágen de perfil

Zoom.


Python

Publicado el 23 de Febrero del 2024 por Hilario (125 códigos)
279 visualizaciones desde el 23 de Febrero del 2024
Figure_1
Figure_2
Figure_3

Este es un ejemplo sencillo, un ejemplo de cómo editar cualquier imagen de tres canales RGB, con ruta a tu ordenador . Para poder visualizar la imagen, y realizar zoon a la misma, hasta poder visualizar el valor de los pixeles en los tres canales RGB en la propia consola, con este tipo de salida:

Rectángulo seleccionado: (1564, 576) - (2400, 2239)
Rectángulo seleccionado: (1750, 956) - (2172, 1741)
Rectángulo seleccionado: (1066, 332) - (3362, 2374)
Rectángulo seleccionado: (1066, 323) - (3362, 2366)
Rectángulo seleccionado: (1539, 678) - (2307, 1843)
Rectángulo seleccionado: (914, 256) - (2704, 2273)
Rectángulo seleccionado: (914, 256) - (2704, 2273)
Rectángulo seleccionado: (1319, 796) - (1800, 1589)
Rectángulo seleccionado: (838, 534) - (2864, 2383)
Rectángulo seleccionado: (1176, 728) - (2307, 1615)
Rectángulo seleccionado: (1176, 1437) - (2307, 1615)
Rectángulo seleccionado: (787, 382) - (1724, 1995)
Rectángulo seleccionado: (1108, 1058) - (1108, 1058)
Rectángulo seleccionado: (1345, 737) - (3219, 2501)
Rectángulo seleccionado: (171, 154) - (4046, 2839)


Lo construimos aplicando las librerías usuales de Python

Otra forma de hacerlo podría ser importando OpenCV para manejar imágenes, visualizarlas y realizar operaciones como el zoom. Puedes adaptar el código según tu preferencia de biblioteca, y adaptarlo a esta otra librería.

********************************************************************************************************************
A continuación resumimos los pasos esenciales de este sencillo ejercicio:

Importación de Bibliotecas:
--------------------------
Se importan las bibliotecas necesarias, que incluyen matplotlib.pyplot, matplotlib.widgets.RectangleSelector, y matplotlib.image.

Carga de la Imagen:
--------------------------
Se especifica la ruta de la imagen en el ordenador.
La imagen se carga utilizando la función mpimg.imread de matplotlib.image.

Creación de la Figura:
----------------------------
Se crea una figura y un conjunto de ejes utilizando plt.subplots().
La imagen se muestra en los ejes con ax.imshow().

Definición de Funciones:
----------------------------------------
Se define una función onselect que se ejecutará cuando se seleccione un rectángulo.
Dentro de esta función, se calculan las coordenadas del rectángulo seleccionado y se imprimen en la consola.

Lista de Coordenadas de Rectángulos:
--------------------------------------------------
Se crea una lista rect_coords para almacenar las coordenadas de los rectángulos seleccionados.

Selector de Rectángulos:
------------------------------------
Se crea un objeto RectangleSelector que está asociado a los ejes (ax) y la función onselect.
Se especifica el botón del ratón permitido para la interacción (button=[1]), y otras configuraciones como la mínima separación horizontal y vertical (minspanx y minspany), y las coordenadas en las que se mide el ancho y el alto (spancoords).
Visualización y Interacción:

La imagen y los ejes se muestran con plt.show().
Se imprime un mensaje indicando que se puede hacer clic y arrastrar para seleccionar un rectángulo.
En resumen, este código crea una interfaz interactiva que te permite hacer clic y arrastrar para seleccionar rectángulos en una imagen. Las coordenadas de los rectángulos seleccionados se imprimen en la consola. Puedes ajustar las configuraciones según tus necesidades, como el botón del ratón permitido, la sensibilidad de la selección, entre otros.

------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
Realizado en platafroam Linux.
Ubuntu 20.04.6 LTS
Editado con:Sublime Text.

Ejecución bajo consola de linux.
python3 Aula_28_Zoom_Pixel.py
Imágen de perfil

Salidas entre Convolución CNN.


Python

Publicado el 21 de Febrero del 2024 por Hilario (125 códigos)
244 visualizaciones desde el 21 de Febrero del 2024
Figure_1
Figure_2
Figure_3
Figure_4
Figure_5
Figure_6
Figure_7
Figure_8
Figure_9

********************************************************************************************************************
Propongo el ejercicio: Aula_18_Feb_24.py, realizado en python. En el mismo trato de formular una red convolucional, lo más sencilla posible, con el fin ver el desarrollo de nueve capas convolucionales. Tratando de indagar y visualizar la salida después de cada capa utilizando un bucle. Por cada salto de bucle iremos viendo los valores correspondientes de la activación, al mismo tiempo que visualizaremos el resultado de la imagen, que será un tanto incongruente ya que sólo se trata de ver su funcionamiento.

A continuación describo las particularidades de este corto código:
*************************************************************************
Como se aprecia en las llamadas iniciales de importación de módulos, utiliza TensorFlow y Keras para crear un modelo de red neuronal convolucional (CNN) y visualiza las salidas de cada capa convolucional para una imagen de entrada aleatoria. Aquí está la descripción del código:

Importar bibliotecas:
------------------------------
numpy: Para trabajar con matrices y generar imágenes aleatorias.
matplotlib.pyplot: Para visualizar las salidas de cada capa convolucional.
tensorflow.keras.models.Sequential y tensorflow.keras.layers.Conv2D: Para construir la arquitectura del modelo CNN.

Crear el modelo:
---------------------
Se crea un modelo secuencial (Sequential) que representa la arquitectura de la red.

Agregar capas convolucionales:
------------------------------------------------
Se agregan varias capas convolucionales al modelo con diferentes números de filtros y funciones de activación ReLU.

Obtener las salidas de cada capa convolucional:
-----------------------------------------------------------------------
Se crea un modelo de visualización (visualization_model) que toma la entrada del modelo original y produce las salidas de cada capa convolucional.

Generar una imagen de entrada aleatoria:
-----------------------------------------------------------
Se crea una imagen de entrada ficticia con dimensiones (1, 600, 506, 3).
Si se quiere se podría hacer con carácter fijo en vez de aleatorio.

Obtener las activaciones de cada capa:
--------------------------------------------------------
Se obtienen las activaciones de cada capa convolucional para la imagen de entrada utilizando el modelo de visualización.

Visualizar las salidas de cada capa:
----------------------------------------------
Se itera sobre las activaciones y se muestra la salida de cada capa convolucional. Si la salida tiene cuatro dimensiones, se aplanan y visualizan las activaciones en escala de grises.
Como indiqué, este código es útil para entender cómo evoluciona la representación de la imagen a medida que pasa a través de las capas convolucionales de la red. Cada visualización muestra las activaciones de una capa particular, lo que puede ayudar a interpretar cómo la red extrae características en diferentes niveles de abstracción.

******************************************************************************************************************
Este código fue realizado bajo plataforma linux, con Ubuntu 20.04.6 LTS.
Fue editado con Sublime text.
Se deberá tener en cuenta que el sistema tendrá que tener cargado para las importaciones
los siguientes módulos:

import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Conv2D

La Versión de Python en mi ordenador es: Python 3.8.10.
****************************************************************************************
#Ejecución:python3 Aula_18_Feb_24.py
Imágen de perfil

Red-CNN Detección de bordes


Python

Publicado el 19 de Febrero del 2024 por Hilario (125 códigos)
249 visualizaciones desde el 19 de Febrero del 2024
Figure_1
Figure_2

Los kernels Sobel son filtros utilizados comúnmente en procesamiento de imágenes para realizar operaciones de convolución, especialmente en el contexto de detección de bordes. Estos filtros están diseñados para resaltar cambios rápidos en la intensidad de los píxeles en una imagen, lo que generalmente indica la presencia de bordes.

El operador Sobel consiste en dos kernels, uno para la detección de cambios horizontales y otro para cambios verticales. Estos kernels son matrices pequeñas que se aplican a la imagen mediante la operación de convolución. Los kernels Sobel comúnmente utilizados son los siguientes:

Kernel Sobel para detección de bordes horizontales (kernel_sobel_x):

[ -1, 0, 1]
[ -2, 0, 2]
[ -1, 0, 1]

Kernel Sobel para detección de bordes verticales (kernel_sobel_y):

[ 1, 2, 1]
[ 0, 0, 0]
[-1, -2, -1]

La operación de convolución implica deslizar estos kernels sobre la imagen original, multiplicando los valores de los píxeles en la región correspondiente del kernel y sumándolos para obtener un nuevo valor en la posición central. Este proceso se repite para cada píxel en la imagen, generando así dos nuevas imágenes filtradas: una resaltando cambios horizontales y otra resaltando cambios verticales.

La magnitud de los bordes se calcula combinando las respuestas horizontales y verticales mediante una fórmula de magnitud Euclidiana.

Este resultado proporciona una representación de la intensidad de los bordes en la imagen original, lo cual es útil para tareas como detección de contornos. En el código que compartiste anteriormente, estos kernels Sobel se utilizan para realizar la detección de bordes en la imagen cargada.


Este programa en Python: python3 Aula_28_bordes_CNN.py, realiza la detección de bordes en una imagen utilizando el operador Sobel. Aquí tienes una explicación paso a paso:

Cargar la imagen:
Utiliza la biblioteca OpenCV (cv2) para cargar una imagen desde la ruta "/home/margarito/python/tulipanes.jpeg".
Verifica si la carga de la imagen fue exitosa.

Convertir la imagen a formato RGB:
Utiliza la función cv2.cvtColor para convertir la imagen cargada (en formato BGR) a formato RGB.
Muestra la imagen original utilizando la biblioteca matplotlib.

Definir los kernels Sobel:
Define dos kernels Sobel, uno para la detección de bordes horizontales (kernel_sobel_x) y otro para la detección de bordes verticales (kernel_sobel_y).

Aplicar los filtros Sobel:
Utiliza la función cv2.filter2D para aplicar los filtros Sobel a la imagen original, obteniendo dos imágenes resultantes (imagen_bordes_x e imagen_bordes_y), que representan los bordes horizontales y verticales, respectivamente.

Calcular la magnitud de los bordes:
Calcula la magnitud de los bordes combinando las imágenes resultantes de los filtros Sobel mediante la fórmula de la magnitud Euclidiana.

Verificar si hay datos válidos en la matriz antes de normalizar:
Antes de normalizar la magnitud de los bordes, verifica si hay datos válidos en la matriz utilizando np.any.

Convertir a tipo de datos float32 antes de normalizar:
Convierte la matriz de magnitud de bordes a tipo de datos float32. Esto es necesario para evitar problemas de normalización con tipos de datos no compatibles.

Normalizar la imagen:
Utiliza el método de normalización para escalar los valores de la magnitud de los bordes al rango [0, 1]. Esto es importante para visualizar correctamente la imagen de bordes.

Mostrar la imagen con bordes:
Utiliza plt.imshow para mostrar la imagen resultante de la detección de bordes en escala de grises.
Muestra un título indicando que se ha aplicado el operador Sobel para la detección de bordes.

Manejar casos donde la matriz de magnitud de bordes está vacía:
Si la matriz de magnitud de bordes está vacía (todos los elementos son cero), imprime un mensaje indicando que la matriz está vacía o no contiene datos válidos.

En resumen, este programa carga una imagen, aplica el operador Sobel para detectar bordes y muestra la imagen resultante de la detección de bordes. Además, maneja casos donde la matriz de magnitud de bordes no contiene datos válidos.
Imágen de perfil
Val: 712
Bronce
Ha aumentado 1 puesto en Python (en relación al último mes)
Gráfica de Python

Aplicación para ocultar información de texto en imágenes o fotografías (nueva versión).


Python

estrellaestrellaestrellaestrellaestrella(1)
Actualizado el 30 de Enero del 2024 por Antonio (76 códigos) (Publicado el 26 de Marzo del 2021)
12.500 visualizaciones desde el 26 de Marzo del 2021
Aplicación para codificar y decodificar mensajes de texto en imágenes.

La imagen se selecciona mediante el botón "SEARCH".
En el modo "Encode" el texto a ocultar se introduce en el espacio superior. (el programa generará un nuevo archivo de imagen cuyo nombre tendrá el prefijo "encoded_" delante del título del archivo original.
En el modo "Decode" el texto oculto se muestra en el espacio superior.

PARA CUALQUIER DUDA U OBSERVACIÓN USEN LA SECCIÓN DE COMENTARIOS.
stgp

Repositorio en GitHub:
https://github.com/antonioam82/Steganography
Imágen de perfil
Val: 712
Bronce
Ha aumentado 1 puesto en Python (en relación al último mes)
Gráfica de Python

Generador de contraseñas.


Python

estrellaestrellaestrellaestrellaestrella(3)
Actualizado el 30 de Enero del 2024 por Antonio (76 códigos) (Publicado el 2 de Agosto del 2021)
9.101 visualizaciones desde el 2 de Agosto del 2021
Programa para generar contraseñas de forma aleatoria, de hasta 50 caracteres. Cuenta con un campo "LENGTH" para especificar la longitud de la contraseña, un campo "MIN LOWERCASE" para especificar el número mínimo de caracteres en minúsculas, un campo "MIN UPPERCASE" para el número mínimo de caracteres en mayúsculas y un campo "MIN NUMBERS" para especificar el número mínimo de caracteres numéricos.
PARA CUALQUIER DUDA U OBSERVACIÓN USEN LA SECCIÓN DE COMENTARIOS.
pg