Commit 4f6c7415 authored by Jennifer Lorena Ortega Aguilar's avatar Jennifer Lorena Ortega Aguilar 💬
Browse files

Avance

parent 5c3e02c7
......@@ -33,7 +33,7 @@
"### Imagen\n",
" \n",
"Las imágenes digitales en color están hechas de píxeles. Un pixel es la menor unidad homogénea con color de la imagen, el pixel esta formado por combinaciones de colores primarios como son el **rojo**, **verde** y **azul** conocidos como canales **RGB**.\n",
"La imagen puede ser representada por una matriz de dimensiones NxM, donde cada elemento de la matriz es un una matriz de 3 componentes, cada componente del elemento contiene los valores para los canales R, G y B de la imagen ([R G B]).\n",
"La imagen puede ser representada por una matriz de dimensiones NxM, donde cada elemento de la matriz es una matriz de 3 componentes, cada componente del elemento contiene los valores para los canales R, G y B de la imagen ([R G B]).\n",
" \n",
"--- \n",
"</font> "
......@@ -48,7 +48,7 @@
"- Para cargar la imagen utilizamos la biblioteca **PIL** de Python diseñada para el manejo y procesamiento de imágenes.\n",
"- La imagen es guardada en formato **numpy.ndarray**, que representa una matriz multidimensional. La matriz es de dimensión 1200 x 1648, donde cada elemento de la matriz es un array de 3 componentes. Cada componente del elemento contiene los valores para los canales R, G y B de la imagen.\n",
"\n",
"- La imagen se puede encontrar <a href=\"https://mars.nasa.gov/mars2020/multimedia/raw-images/ZL0_0072_0673337731_644EBY_N0032208ZCAM08032_1100LUJ\">aquí.</a> El rover Mars Perseverance de la NASA adquirió esta imagen usando su cámara Left Mastcam-Z., Mastcam-Z que son un par de cámaras ubicadas en lo alto del mástil del rover. Esta imagen fue adquirida en mayo. 4, 2021 (Sol 72) a la hora solar media local de 14:00:34.\n"
"- La imagen se puede encontrar <a href=\"https://mars.nasa.gov/mars2020/multimedia/raw-images/ZL0_0072_0673337731_644EBY_N0032208ZCAM08032_1100LUJ\">aquí.</a> El rover Mars Perseverance de la NASA adquirió esta imagen usando su cámara Left Mastcam-Z., Mastcam-Z que son un par de cámaras ubicadas en lo alto del mástil del rover. Esta imagen fue adquirida en mayo. 04, 2021 (Sol 72) a la hora solar media local de 14:00:34.\n"
]
},
{
......@@ -206,12 +206,12 @@
" \n",
"### Segmentación\n",
" \n",
"La segmentación de imágenes divide la imagen en sus partes o regiones, esta la técnica permite extraer información de los objetos. La división en partes se basa a menudo en las características de los píxeles de la imagen. \n",
"La segmentación de imágenes divide la imagen en sus partes o regiones, esta técnica permite extraer información de los objetos. La división en partes se basa a menudo en las características de los píxeles de la imagen. \n",
"\n",
"### Algoritmo Watershed \n",
" \n",
"Es una técnica de segmentación de imágenes basada en marcadores, el algoritmo de **Watershed** se fundamenta en el concepto de visualizar una imagen como una superficie topográfica donde los valores de alta intensidad denotan picos y colinas mientras que los de baja intensidad denotan valles (mínimos locales). Esto se puede obtener trazando las coordenadas de la imagen (x, y) en función de sus valores de intensidad.\n",
"El algoritmo comienza \"inundando de agua\" alrededor de la superficie topográfica de la imagen. Cuando el agua fusiona los picos, se construyen barreras para evitar esta fusión, hasta que todos los picos estén bajo el agua. Las barreras resultantes dan la segmentación de picos y valles en la imagen. Este enfoque produce una sobresegmentación debido al ruido o cualquier otra irregularidad en la imagen, por lo que algunos algoritmos han implementado marcadores basado en marcadores en el que especifica cuáles son todos los puntos de valle que se fusionarán y cuáles no.\n",
"El algoritmo comienza \"inundando de agua\" alrededor de la superficie topográfica de la imagen. Cuando el agua fusiona los picos, se construyen barreras para evitar esta fusión, hasta que todos los picos estén bajo el agua. Las barreras resultantes dan la segmentación de picos y valles en la imagen. Este enfoque produce una sobresegmentación debido al ruido o cualquier otra irregularidad en la imagen, por lo que algunos algoritmos han implementado marcadores que especifican cuáles son todos los puntos de valle que se fusionarán y cuáles no.\n",
" \n",
"<img src=\"imagenes/watershed.png\">\n",
" </font> \n",
......@@ -229,7 +229,7 @@
" \n",
"### Función Watershed de Open CV\n",
"Para realizar la segmentación se utilizará la función **cv2.watershed** de la biblioteca libre de visión artificial OpenCV (**cv2**), esta función implementa marcadores para evitar una segmentación excesiva.\n",
"Para establecer los marcadores tenemos que etiquetar la imagen en 3 regiones,la primera es la región que estamos seguros de ser fondo, la region que estamos seguros que es un objeto y finalmente la región que desconocemos que tipo de superficie sea, esta última región se la etiqueta con 0. El algoritmo retornará una matriz cuya región que sea etiquetada con -1 es la que corresponde a los límites del objeto.\n",
"Para establecer los marcadores tenemos que etiquetar la imagen en 3 regiones, la primera es la región que estamos seguros de ser fondo, la region que estamos seguros que es un objeto y finalmente la región que desconocemos que tipo de superficie sea, esta última región se la etiqueta con 0. El algoritmo retornará una matriz cuya región que sea etiquetada con -1 es la que corresponde a los límites del objeto.\n",
"\n",
"--- \n",
"</font> \n",
......@@ -241,7 +241,7 @@
"metadata": {},
"source": [
"### Establecer el umbral para la segmentación \n",
"Se establece un umbral en la imagen, esto se realiza para posteriormente determinar los marcadores, el umbral es el valor de píxel con el cual se realizara una división de la imagen en dos zonas, la primera corresponde a los píxeles menores a este umbral y la segunda los píxeles con valores superiores al umbral. Para determinar el umbral es necesario:\n",
"Se establece un umbral en la imagen, esto se realiza para posteriormente determinar los marcadores, el umbral es el valor de píxel con el cual se realizará una división de la imagen en dos zonas, la primera corresponde a los píxeles menores a este umbral y la segunda los píxeles con valores superiores al umbral. Para determinar el umbral es necesario:\n",
"- Recortar una sección de la imagen donde se encuentre el objeto que quiere que el algoritmo segmente (divida).\n",
"- Realizar una cuantificación de los píxeles presentes en la imagen recortada, para poder elegir un buen umbral, esto se lo puede hacer mediante un histograma."
]
......@@ -289,8 +289,8 @@
"metadata": {},
"source": [
"- El histograma de las intensidades de luminosidad de los píxeles de la imagen nos da una idea de cual es la cantidad de objetos presentes en la imagen y su distribución en la misma.\n",
"- Los valores que se encuentran entre los valores [100,250] podrían ser considerado como fondo ya que aquí se encuentra concentrado la mayor cantidad de valores de luminosidad, mientras que los valores que son menores o mayores a este valor podrían ser los objetos.\n",
"Ahora concentremonos en un objeto en específico que sería una roca, para eso recortamos la imagen y la analizamos, para determinar cual es el umbral."
"- Los valores que se encuentran entre los valores [100,250] podrían ser considerados como fondo ya que aquí se encuentra concentrada la mayor cantidad de valores de luminosidad, mientras que los valores que son menores o mayores a este valor podrían ser los objetos.\n",
"Ahora concentrémonos en un objeto en específico que sería una roca, para eso recortamos la imagen y la analizamos, para determinar cual es el umbral."
]
},
{
......@@ -364,7 +364,7 @@
"metadata": {},
"source": [
"### Cálculo de Marcadores\n",
"- Utilizaremos la función **cv2.threshold**, dependiendo del umbral ingresado la función genera una imagen de ceros y unos. Si el pixel de la image supera el umbral lo reescribe como 1 si el pixel no supera el umbral lo transforma en 0."
"- Utilizaremos la función **cv2.threshold**, dependiendo del umbral ingresado la función genera una imagen de ceros y unos. Si el píxel de la image supera el umbral lo reescribe como 1 si el píxel no supera el umbral lo transforma en 0."
]
},
{
......@@ -702,7 +702,8 @@
"source": [
"### Análisis\n",
"\n",
"Esta sección consiste en aplicar el algoritmo diseñado para diferentes imágenes y con diferentes parámetros para estudiar el funcionamiento y la validez del algoritmo para segmentar diferentes objetos en la imagen, el objetivo principal es intentar segmentar e identificar rocas u otros objetos como partes del rover en las imágenes.\n",
"Esta sección consiste en aplicar el algoritmo diseñado para diferentes imágenes descargadas del siguiente link\n",
"<a href=\"https://mars.nasa.gov/mars2020/multimedia/raw-images/\">(imágenes)</a> y con diferentes parámetros para estudiar el funcionamiento y la validez del algoritmo para segmentar diferentes objetos en la imagen, el objetivo principal es intentar segmentar e identificar rocas u otros objetos como partes del rover en las imágenes.\n",
"- Primero diseñaremos un código que permita redefinir algunos parámetros en el código para el análisis, que son los principales valores que determinan la región que se segmentará, tales como:\n",
" - El umbral \n",
" - El tipo de **threshold** que se utilizará.\n",
......@@ -712,7 +713,7 @@
},
{
"cell_type": "code",
"execution_count": 17,
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
......@@ -33,7 +33,7 @@
"### Imagen\n",
" \n",
"Las imágenes digitales en color están hechas de píxeles. Un pixel es la menor unidad homogénea con color de la imagen, el pixel esta formado por combinaciones de colores primarios como son el **rojo**, **verde** y **azul** conocidos como canales **RGB**.\n",
"La imagen puede ser representada por una matriz de dimensiones NxM, donde cada elemento de la matriz es un una matriz de 3 componentes, cada componente del elemento contiene los valores para los canales R, G y B de la imagen ([R G B]).\n",
"La imagen puede ser representada por una matriz de dimensiones NxM, donde cada elemento de la matriz es una matriz de 3 componentes, cada componente del elemento contiene los valores para los canales R, G y B de la imagen ([R G B]).\n",
" \n",
"--- \n",
"</font> "
......@@ -48,7 +48,7 @@
"- Para cargar la imagen utilizamos la biblioteca **PIL** de Python diseñada para el manejo y procesamiento de imágenes.\n",
"- La imagen es guardada en formato **numpy.ndarray**, que representa una matriz multidimensional. La matriz es de dimensión 1200 x 1648, donde cada elemento de la matriz es un array de 3 componentes. Cada componente del elemento contiene los valores para los canales R, G y B de la imagen.\n",
"\n",
"- La imagen se puede encontrar <a href=\"https://mars.nasa.gov/mars2020/multimedia/raw-images/ZL0_0072_0673337731_644EBY_N0032208ZCAM08032_1100LUJ\">aquí.</a> El rover Mars Perseverance de la NASA adquirió esta imagen usando su cámara Left Mastcam-Z., Mastcam-Z que son un par de cámaras ubicadas en lo alto del mástil del rover. Esta imagen fue adquirida en mayo. 4, 2021 (Sol 72) a la hora solar media local de 14:00:34.\n"
"- La imagen se puede encontrar <a href=\"https://mars.nasa.gov/mars2020/multimedia/raw-images/ZL0_0072_0673337731_644EBY_N0032208ZCAM08032_1100LUJ\">aquí.</a> El rover Mars Perseverance de la NASA adquirió esta imagen usando su cámara Left Mastcam-Z., Mastcam-Z que son un par de cámaras ubicadas en lo alto del mástil del rover. Esta imagen fue adquirida en mayo. 04, 2021 (Sol 72) a la hora solar media local de 14:00:34.\n"
]
},
{
......@@ -206,12 +206,12 @@
" \n",
"### Segmentación\n",
" \n",
"La segmentación de imágenes divide la imagen en sus partes o regiones, esta la técnica permite extraer información de los objetos. La división en partes se basa a menudo en las características de los píxeles de la imagen. \n",
"La segmentación de imágenes divide la imagen en sus partes o regiones, esta técnica permite extraer información de los objetos. La división en partes se basa a menudo en las características de los píxeles de la imagen. \n",
"\n",
"### Algoritmo Watershed \n",
" \n",
"Es una técnica de segmentación de imágenes basada en marcadores, el algoritmo de **Watershed** se fundamenta en el concepto de visualizar una imagen como una superficie topográfica donde los valores de alta intensidad denotan picos y colinas mientras que los de baja intensidad denotan valles (mínimos locales). Esto se puede obtener trazando las coordenadas de la imagen (x, y) en función de sus valores de intensidad.\n",
"El algoritmo comienza \"inundando de agua\" alrededor de la superficie topográfica de la imagen. Cuando el agua fusiona los picos, se construyen barreras para evitar esta fusión, hasta que todos los picos estén bajo el agua. Las barreras resultantes dan la segmentación de picos y valles en la imagen. Este enfoque produce una sobresegmentación debido al ruido o cualquier otra irregularidad en la imagen, por lo que algunos algoritmos han implementado marcadores basado en marcadores en el que especifica cuáles son todos los puntos de valle que se fusionarán y cuáles no.\n",
"El algoritmo comienza \"inundando de agua\" alrededor de la superficie topográfica de la imagen. Cuando el agua fusiona los picos, se construyen barreras para evitar esta fusión, hasta que todos los picos estén bajo el agua. Las barreras resultantes dan la segmentación de picos y valles en la imagen. Este enfoque produce una sobresegmentación debido al ruido o cualquier otra irregularidad en la imagen, por lo que algunos algoritmos han implementado marcadores que especifican cuáles son todos los puntos de valle que se fusionarán y cuáles no.\n",
" \n",
"<img src=\"imagenes/watershed.png\">\n",
" </font> \n",
......@@ -229,7 +229,7 @@
" \n",
"### Función Watershed de Open CV\n",
"Para realizar la segmentación se utilizará la función **cv2.watershed** de la biblioteca libre de visión artificial OpenCV (**cv2**), esta función implementa marcadores para evitar una segmentación excesiva.\n",
"Para establecer los marcadores tenemos que etiquetar la imagen en 3 regiones,la primera es la región que estamos seguros de ser fondo, la region que estamos seguros que es un objeto y finalmente la región que desconocemos que tipo de superficie sea, esta última región se la etiqueta con 0. El algoritmo retornará una matriz cuya región que sea etiquetada con -1 es la que corresponde a los límites del objeto.\n",
"Para establecer los marcadores tenemos que etiquetar la imagen en 3 regiones, la primera es la región que estamos seguros de ser fondo, la región que estamos seguros que es un objeto y finalmente la región que desconocemos que tipo de superficie sea, esta última región se la etiqueta con 0. El algoritmo retornará una matriz cuya región que sea etiquetada con -1 es la que corresponde a los límites del objeto.\n",
"\n",
"--- \n",
"</font> \n",
......@@ -241,7 +241,7 @@
"metadata": {},
"source": [
"### Establecer el umbral para la segmentación \n",
"Se establece un umbral en la imagen, esto se realiza para posteriormente determinar los marcadores, el umbral es el valor de píxel con el cual se realizara una división de la imagen en dos zonas, la primera corresponde a los píxeles menores a este umbral y la segunda los píxeles con valores superiores al umbral. Para determinar el umbral es necesario:\n",
"Se establece un umbral en la imagen, esto se realiza para posteriormente determinar los marcadores, el umbral es el valor de píxel con el cual se realizará una división de la imagen en dos zonas, la primera corresponde a los píxeles menores a este umbral y la segunda los píxeles con valores superiores al umbral. Para determinar el umbral es necesario:\n",
"- Recortar una sección de la imagen donde se encuentre el objeto que quiere que el algoritmo segmente (divida).\n",
"- Realizar una cuantificación de los píxeles presentes en la imagen recortada, para poder elegir un buen umbral, esto se lo puede hacer mediante un histograma."
]
......@@ -289,8 +289,8 @@
"metadata": {},
"source": [
"- El histograma de las intensidades de luminosidad de los píxeles de la imagen nos da una idea de cual es la cantidad de objetos presentes en la imagen y su distribución en la misma.\n",
"- Los valores que se encuentran entre los valores [100,250] podrían ser considerado como fondo ya que aquí se encuentra concentrado la mayor cantidad de valores de luminosidad, mientras que los valores que son menores o mayores a este valor podrían ser los objetos.\n",
"Ahora concentremonos en un objeto en específico que sería una roca, para eso recortamos la imagen y la analizamos, para determinar cual es el umbral."
"- Los valores que se encuentran entre los valores [100,250] podrían ser considerados como fondo ya que aquí se encuentra concentrada la mayor cantidad de valores de luminosidad, mientras que los valores que son menores o mayores a este valor podrían ser los objetos.\n",
"Ahora concentrémonos en un objeto en específico que sería una roca, para eso recortamos la imagen y la analizamos, para determinar cuál es el umbral."
]
},
{
......@@ -356,7 +356,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"- El histograma nos muestra para la imagen recortada que los píxeles se dividen en 2 zonas, los píxeles con valores mayores a 125 y menores a este mismo número, por lo que tomar este valor como umbral, sería un buen comienzo para esta imagen, entonces el **umbral = 100**, este umbral nos da una perspectiva de como se encuentran distribuidas las luminosidades en la imagen y cuales píxeles se podrían consiredar como fondo, y cuales no, además de lo que ya consideramos anteriormente en que valores se encontraba el fondo, lo ideal sería elegir a los píxeles correspondiente a rocas como objeto y la arena como fondo, pero en este caso no se puede tomar de esta forma ya que las rocas tienen casi el mismo valor de píxel y algunas zonas corespondientes a fondo podría el algoritmo considerar como objeto."
"- El histograma nos muestra para la imagen recortada que los píxeles se dividen en 2 zonas, los píxeles con valores mayores a 125 y menores a este mismo número, por lo que tomar este valor como umbral, sería un buen comienzo para esta imagen, entonces el **umbral = 100**, este umbral nos da una perspectiva de como se encuentran distribuidas las luminosidades en la imagen y cuales píxeles se podrían considerar como fondo, y cuales no, además de lo que ya consideramos anteriormente en qué valores se encontraba el fondo, lo ideal sería elegir a los píxeles correspondientes a rocas como objeto y la arena como fondo, pero en este caso no se puede tomar de esta forma ya que las rocas tienen casi el mismo valor de píxel y algunas zonas corespondientes a fondo podría el algoritmo considerar como objeto."
]
},
{
......@@ -364,7 +364,7 @@
"metadata": {},
"source": [
"### Cálculo de Marcadores\n",
"- Utilizaremos la función **cv2.threshold**, dependiendo del umbral ingresado la función genera una imagen de ceros y unos. Si el pixel de la image supera el umbral lo reescribe como 1 si el pixel no supera el umbral lo transforma en 0."
"- Utilizaremos la función **cv2.threshold**, dependiendo del umbral ingresado la función genera una imagen de ceros y unos. Si el píxel de la imagen supera el umbral lo reescribe como 1 si el píxel no supera el umbral lo transforma en 0."
]
},
{
......@@ -448,7 +448,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"- Aquí utilizamos la función **cv2.dilate**, aumenta el límite del objeto al fondo, el objeto se hace mas grande, de esta manera, podemos asegurarnos de que cualquier región de fondo en el resultado sea realmente un fondo, ya que se elimina la región de límite, que se encontro manualmente solamente determinando los valores de los píxeles. Este sera el primer marcador."
"- Aquí utilizamos la función **cv2.dilate**, aumenta el límite del objeto al fondo, el objeto se hace más grande, de esta manera, podemos asegurarnos de que cualquier región de fondo en el resultado sea realmente un fondo, ya que se elimina la región de límite, que se encontro manualmente solamente determinando los valores de los píxeles. Este sera el primer marcador."
]
},
{
......@@ -486,7 +486,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"- Ahora encontraremos el segundo marcador, para eso utilizaremos la función **distanceTransform**, en esta operación, las intensidades de nivel de gris de los puntos dentro de las regiones del objeto se cambian por las distancias entre estos y del valor 0 más cercano (límite), a continuación se muestra de una manera gráfica como opera esta función, por lo que la imagen se ve de una forma muy clara en el centro y va degradandose el color a medida que se acerca al límite.\n",
"- Ahora encontraremos el segundo marcador, para eso utilizaremos la función **distanceTransform**, en esta operación, las intensidades de nivel de gris de los puntos dentro de las regiones del objeto se cambian por las distancias entre estos y del valor 0 más cercano (límite), a continuación se muestra de una manera gráfica como opera esta función, por lo que la imagen se ve de una forma muy clara en el centro y va degradándose el color a medida que se acerca al límite.\n",
"\n",
"<img src=\"imagenes/distance.png\">\n"
]
......@@ -532,7 +532,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"- Para encontrar el segundo marcador, utilizamos la función threshold, por lo que todos los valores de píxeles que sobrepasen el umbral se identifica como objeto y todos los que no lo sobrepasen se considera como zonas desconocidad (no se sabe si es objeto o fondo)."
"- Para encontrar el segundo marcador, utilizamos la función threshold, por lo que todos los valores de píxeles que sobrepasen el umbral se identifican como objeto y todos los que no lo sobrepasen se consideran como zonas desconocidas (no se sabe si es objeto o fondo)."
]
},
{
......@@ -570,7 +570,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"- Calculamos la diferencia entre los dos marcadores, lo que nos dara como resultado una matriz que es cero en toda la imagen salvo la region donde el algoritmo de watershed va a definir que parte de la imagen representa fodo y que parte representa objeto (franja de algunos píxeles alrededor de los límites )."
"- Calculamos la diferencia entre los dos marcadores, lo que nos dará como resultado una matriz que es cero en toda la imagen salvo la region donde el algoritmo de watershed va a definir que parte de la imagen representa fodo y que parte representa objeto (franja de algunos píxeles alrededor de los límites )."
]
},
{
......@@ -608,7 +608,7 @@
"source": [
"### Aplicación del algoritmo Watershed\n",
"\n",
"- Finalmente aplicamos la función de **watershed** que encontrara los bordes dentro de la franja en donde no estamos seguros que parte representa fondo y cual parte representa el objeto. "
"- Finalmente aplicamos la función de **watershed** que encontrará los bordes dentro de la franja en donde no estamos seguros qué parte representa fondo y cual parte representa el objeto. "
]
},
{
......@@ -693,7 +693,7 @@
"metadata": {},
"source": [
"> **Comentario:** \n",
"El algoritmo logra segmentar la imagen, de acuerdo a los píxeles con menor luminosidad, que en este caso serían los que corresponden a sombras, todos los píxeles con una luminosidad mayor los considera fondo. El algoritmo depende del umbral y del tipo de threshold que se le asigne, además del parámetro que determina la anchura de la banda donde se aplicará el algortimo Watershed (**0.1 x dist_transform.max()**), estos parámetros pueden se modificados y asi se podrán segmentar otros objetos, como rocas, auque esto puede ser una tarea muy dificil ya que las rocas tienen casi el mismo todo de gris en las imágenes que el fondo (suelo), en la siguiente sección se discutirá mas a pronfundidad este hecho."
"El algoritmo logra segmentar la imagen, de acuerdo a los píxeles con menor luminosidad, que en este caso serían los que corresponden a sombras, todos los píxeles con una luminosidad mayor los considera fondo. El algoritmo depende del umbral y del tipo de threshold que se le asigne, además del parámetro que determina la anchura de la banda donde se aplicará el algortimo Watershed (**0.1 x dist_transform.max()**), estos parámetros pueden se modificados y asi se podrán segmentar otros objetos, como rocas, auque esto puede ser una tarea muy dificil ya que las rocas tienen casi el mismo todo de gris en las imágenes que el fondo (suelo), en la siguiente sección se discutirá más a pronfundidad este hecho."
]
},
{
......@@ -702,17 +702,18 @@
"source": [
"### Análisis\n",
"\n",
"Esta sección consiste en aplicar el algoritmo diseñado para diferentes imágenes y con diferentes parámetros para estudiar el funcionamiento y la validez del algoritmo para segmentar diferentes objetos en la imagen, el objetivo principal es intentar segmentar e identificar rocas u otros objetos como partes del rover en las imágenes.\n",
"Esta sección consiste en aplicar el algoritmo diseñado para diferentes imágenes descargadas del siguiente link\n",
"<a href=\"https://mars.nasa.gov/mars2020/multimedia/raw-images/\">(imágenes)</a> y con diferentes parámetros para estudiar el funcionamiento y la validez del algoritmo para segmentar diferentes objetos en la imagen, el objetivo principal es intentar segmentar e identificar rocas u otros objetos como partes del rover en las imágenes.\n",
"- Primero diseñaremos un código que permita redefinir algunos parámetros en el código para el análisis, que son los principales valores que determinan la región que se segmentará, tales como:\n",
" - El umbral \n",
" - El tipo de **threshold** que se utilizará.\n",
" - La distancia que es la amplitud de la banda donde se aplicara el algoritmo watershed.\n",
"- El código anterior fue escrito en un archivo segmentacion_fun.py en forma de funciones y parametros ajustables (umbral, tipo de threshold, y distancia de amplitud). El código es importado al notebook a continuación."
" - La distancia que es la amplitud de la banda donde se aplicará el algoritmo watershed.\n",
"- El código anterior fue escrito en un archivo segmentacion_fun.py en forma de funciones y parámetros ajustables (umbral, tipo de threshold, y distancia de amplitud). El código es importado al notebook a continuación."
]
},
{
"cell_type": "code",
"execution_count": 17,
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment