Programación de Gráficos - Problemas con imagenes

 
Vista:

Problemas con imagenes

Publicado por Ruben Maso (1 intervención) el 25/02/2002 11:53:01
Hola buenos dias,

Os planteo mi problema. Tengo una imagen de un pulmón en un archivo bmp. Esta imagen esta en blanco y negro (el pulmón en negro y el exterior en blanco). A mi solo me interesa el controrno del pulmón, entonces

- Como puedo hacer para que el interior del pulmón sea blanco?.

Además, despues se generara una recta al azar y debo de calcular el numero de intersecciones entre la recta y el contorno del pulmon.

- Como puedo hacer esto?.

Muchas gracias anticipadamente.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Procesamiento de imágenes y cálculo de intersecciones en contornos

Publicado por Alejandro (110 intervenciones) el 04/04/2024 16:44:35
Hola Rubén.

Para convertir el interior del pulmón en blanco en una imagen en blanco y negro, puedes utilizar técnicas de procesamiento de imágenes. Una opción es utilizar la técnica de umbralización, donde estableces un umbral y todos los píxeles por debajo de ese umbral se convierten en blanco, mientras que los píxeles por encima del umbral se mantienen en negro.

Aquí hay un ejemplo de cómo puedes hacerlo utilizando Python y la biblioteca OpenCV:

1
2
3
4
5
6
7
8
9
10
11
12
import cv2
 
# Cargar la imagen del pulmón en blanco y negro
imagen = cv2.imread("ruta_de_tu_imagen.bmp", 0)
 
# Aplicar umbralización
umbral, imagen_umbralizada = cv2.threshold(imagen, 0, 255, cv2.THRESH_BINARY)
 
# Mostrar la imagen umbralizada
cv2.imshow("Imagen umbralizada", imagen_umbralizada)
cv2.waitKey(0)
cv2.destroyAllWindows()

En cuanto a calcular el número de intersecciones entre una recta y el contorno del pulmón, puedes utilizar algoritmos de detección de contornos y geometría computacional. Una opción es utilizar la transformada de Hough para detectar líneas en la imagen y luego verificar si esas líneas intersectan con el contorno del pulmón.

Aquí hay un ejemplo de cómo puedes hacerlo utilizando Python y la biblioteca OpenCV:

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
import cv2
import numpy as np
 
# Cargar la imagen del pulmón en blanco y negro
imagen = cv2.imread("ruta_de_tu_imagen.bmp", 0)
 
# Aplicar umbralización
umbral, imagen_umbralizada = cv2.threshold(imagen, 0, 255, cv2.THRESH_BINARY)
 
# Encontrar contornos en la imagen umbralizada
contornos, jerarquia = cv2.findContours(imagen_umbralizada, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
 
# Dibujar los contornos en la imagen original
imagen_contornos = cv2.drawContours(imagen, contornos, -1, (0, 255, 0), 2)
 
# Generar una recta al azar (aquí se muestra un ejemplo)
punto1 = (100, 100)
punto2 = (200, 200)
 
# Calcular el número de intersecciones entre la recta y el contorno del pulmón
numero_intersecciones = 0
for contorno in contornos:
    for i in range(len(contorno) - 1):
        punto_interseccion = cv2.lineIntersect(contorno[i], contorno[i+1], punto1, punto2)
        if punto_interseccion[0]:
            numero_intersecciones += 1
 
# Mostrar la imagen con los contornos y el número de intersecciones
cv2.imshow("Imagen con contornos", imagen_contornos)
print("Número de intersecciones:", numero_intersecciones)
 
cv2.waitKey(0)
cv2.destroyAllWindows()

Espero que esta información te sea útil para resolver tu problema. Si tienes alguna otra pregunta, no dudes en hacerla. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar