Saltar navegación

As máquinas só entenden números

Codificación de datos

Como expresamos anteriormente, o ser humano foi creando máquinas para poder ir máis aló das súas limitacións tanto a nivel de captar datos que nós non podemos, como para procesar unha cantidade inxente deles.

Co tempo creamos máquinas de propósito xeral que procesan datos, e mesmo información, permitíndonos realizar cálculos complexos e manexar grandes volumes cunha eficiencia nunca antes vista.

Os computadores utilizan distintos tipos de sensores, como de temperatura, de movemento, de audio, de vídeo, de posición, entre outros, para recibir información do medio que lles rodea e construír unha representación da súa contorna. Estos datos poden ser numéricos, alfanuméricos, ou mesmo imaxes e sons. Pero os computadores só saben traballar con números, así que toda a información que reciben dos seus sensores almacénase como un conxunto de números.


É moi importante comprender a partir de agora que todos os datos, para ser procesados por unha máquina, han de ser previamente convertidos a números

En xeral, este proceso de codificación queda oculto ao usuario final.
Por exemplo, unha imaxe en branco e negro codifícase como unha matriz de números, onde cada valor indica o brillo de cada un dos pixels.

Codificación numérica dunha imaxe en branco e negro
Copilot&Colaboratory. Codificación numérica dunha imaxe en branco e negro (CC BY-SA)

A codificación da imaxe en formato numérico realízase asignando valores a cada píxel segundo a súa intensidade. Para a imaxe en branco e negro da esquerda que xerei con Copilot, este proceso implica traducir a tonalidade de cada píxel en valores que oscilan entre 0 (negro absoluto) e 255 (branco absoluto).

Lembras aqueles debuxos para colorear cun código de números? Pois as máquinas fan o mesmo, asociar un número a cada cor.

Cororear según un código
pikisuperstar. Colorear según un código (CC BY-SA)

Codificando imaxes en branco e negro

Duración:
20 min
  • Este é un programa en Python que podes executar en Google Colaboratory para cargar unha imaxe desde o teu equipo, procesala en escala de grises e sobrepoñer a codificación por píxeles sobre a imaxe.
  • O programa inclue explicacións detalladas nos comentarios para que comprendas cada paso.
  • Executandoo  en Colab, podes probar a codificación de imaxes en branco e negro (debes tela descargada no teu equipo).
  • Non te preocupes por comprender o programa totalmente, só de entender o que fai.
  • Podes xogar coa instrución plt.figure(figsize=(12, 6)) para cambiar o tamaño das imaxes e ver a codificación máis claramente.

Código Python: CODIFICACIÓN DE IMAXES EN BRANCO E NEGRO

# Importamos as librerías necesarias
import cv2  # Para procesar imáxenes
import numpy as np  # Para manexar arranxos numéricos
import matplotlib.pyplot as plt  # Para graficar a imaxe
from google.colab import files  # Para subir arquivos desde o equipo

# Paso 1: Subir a imaxe desde o equipo
print("Por favor, selecciona unha imaxe para cargar.")
uploaded = files.upload()  # Esto abrirá un cadro para cargar a imaxe

# Paso 2: Leer a imaxe cargada
# Obtemos o nome do arquivo cargado
image_name = list(uploaded.keys())[0]

# Cargamos a imaxe en cor (cv2.imread)
image = cv2.imread(image_name)

# Convertimos a imaxe a escala de grises
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Paso 3: Preparar para mostrar a codificación de píxeles
# Creamos unha copia da imaxe para superpoñer o texto
output_image = np.copy(gray_image)

# Definimos o tamaño do texto e a cor
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 0.4
font_color = (0,)  # Cor negro (xa que a imaxe é en escala de grises)
thickness = 1

# Paso 4: Superpoñer valores de cada píxel na imaxe
rows, cols = gray_image.shape
for i in range(0, rows, 20):  # Saltamos cada 20 filas para non sobrecargar
    for j in range(0, cols, 20):  # Saltamos cada 20 columnas
        pixel_value = gray_image[i, j]
        text = str(pixel_value)  # Convertimos o valor do píxel en texto
        # Escribimos o texto (valor do píxel) na posición correspondente
        cv2.putText(output_image, text, (j, i), font, font_scale, font_color, thickness)

# Paso 5: Visualizar as imáxes orixinais e procesadas
# Mostramos a imaxe orixinal en escala de grises e a imaxe coa codificación
plt.figure(figsize=(12, 6))

# imaxe orixinal en escala de grises
plt.subplot(1, 2, 1)
plt.imshow(gray_image, cmap='gray')
plt.title("Imaxe Orixinal en Escala de Grises")
plt.axis("off")

# imaxe cos valores dos píxeles superpostos
plt.subplot(1, 2, 2)
plt.imshow(output_image, cmap='gray')
plt.title("Imaxe con Codificación de Píxeles")
plt.axis("off")    

... máis codificación de datos

Se a imaxe é en cor, de cada pixel almacénanse tres números, que representan o brillo dos compoñentes vermello, verde e azul( RGB-Red ,Green, Blue) . Os sons tamén se codifican como unha serie de números, que indican os valores da forma de onda en diferentes momentos (tomando centos ou miles de mostras en cada segundo).

Codificación numérica dunha imaxe en cor
Copilot&Colaboratory. Codificación numérica dunha imaxe en cor (CC BY-SA)

Así, unha imaxe convértese nunha matriz de números.

Codificando imaxes en cor

Duración:
15 min
  • Este é un programa en Python que podes executar en Google Colaboratory para cargar unha imaxe desde o teu equipo, procesala en e sobrepoñer a codificación por píxeles sobre a imaxe.
  • O programa inclue explicacións detalladas nos comentarios para que comprendas cada paso.
  • Executandoo  en Colab, podes probar a codificación de imaxes en cor (debes tela descargada no teu equipo).
  • Non te preocupes por comprender o programa totalmente, só de entender o que fai.
  • Podes xogar coa instrución plt.figure(figsize=(24, 12)) para cambiar o tamaño das imaxes e ver a codificación máis claramente.

Código Python: CODIFICACIÓN DE IMAXES EN COR

# Importamos as librerías necesarias
import cv2  # Para manipulación de imaxes
import numpy as np  # Para traballar con matrices de datos
import matplotlib.pyplot as plt  # Para mostrar as imaxes
from google.colab import files  # Para subir arquivos desde o equipo

# Paso 1: Subir a imaxe desde o equipo
print("Por favor, selecciona unha imaxe para cargar.")
uploaded = files.upload()  # Esto abre un cadro para seleccionar un arquivo

# Obtemos o nome do arquivo cargado
image_name = list(uploaded.keys())[0]

# Paso 2: Leer a imaxe en formato a cor
image = cv2.imread(image_name)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)  # Convertir o formato de cor de BGR a RGB

# Paso 3: Crear unha copia da imaxe para superpoñer os valores RGB dos píxeles
output_image = np.copy(image)

# Definir o estilo do texto (fonte, tamaño, cor e grosor)
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 0.4
font_color = (255, 255, 255)  # cor blanco para que sexa visible na imaxe
thickness = 1

# Paso 4: Iterar sobre os píxeles para superpoñer os valores RGB na imaxe
rows, cols, _ = image.shape
for i in range(0, rows, 30):  # Saltamos filas para evitar sobrecarga visual
    for j in range(0, cols, 30):  # Saltamos columnas pola mesma razón
        # Obtemos o valor RGB do píxel
        r, g, b = image[i, j]
        text = f"({r},{g},{b})"  # Convertimos os valores en texto
        # Superpoñer o texto sobre a imaxe
        cv2.putText(output_image, text, (j, i), font, font_scale, font_color, thickness)

# Paso 5: Visualizar a imaxe orixinal e a procesada con valores RGB
plt.figure(figsize=(24, 12))

# imaxe orixinal a cor
plt.subplot(1, 2, 1)
plt.imshow(image)
plt.title("Imaxe Orixinal a Cor")
plt.axis("off")

# imaxe cos valores RGB superpostos
plt.subplot(1, 2, 2)
plt.imshow(output_image)
plt.title("Imaxe con Codificación de Píxeles RGB")
plt.axis("off")

# Mostrar as imaxes
plt.show()    

Reflexión

Lista de Cotexo

As máquinas só entenden números


Tarefas da sección realizadas e rexistradas no portafolio

Esta lista axúdache a organizar e verificar o progreso no teu portafolio.