imclearborder
Suprimir estructuras de línea conectadas al borde de una imagen
Descripción
suprime estructuras en la imagen J
= imclearborder(I
)I
que son más claras que los entornos y que están conectadas con el borde de la imagen. Utilice esta función para aclarar el borde de la imagen o seleccionar los bordes de la imagen. Para las imágenes en escala de grises, imclearborder
tiende a reducir el nivel de intensidad general, además de suprimir las estructuras de los bordes. La imagen de salida J
es binaria o en escala de grises, dependiendo de la entrada.
especifica opciones para la selección de la estructura de los bordes usando uno o más argumentos nombre-valor. Por ejemplo, J
= imclearborder(___,Name=Value
)imclearborder(I,Borders=["left" "right"])
elimina únicamente las estructuras que tocan el borde izquierdo o derecho de una imagen.
Ejemplos
Eliminar objetos conectados al borde de una imagen
Lea una imagen binaria (una imagen posprocesada de granos columnares microscópicos de cuarzo [2]) en el área de trabajo y muéstrela.
originalBW = imread("quartz_columns.png");
imshow(originalBW)
Borre todos los objetos de línea de la imagen que estén conectados al borde de la imagen y muestre la imagen ajustada.
BWclearB = imclearborder(originalBW); imshow(BWclearB)
Eliminar un borde oscuro de una imagen
Lea una imagen en escala de grises que contenga un objeto con un borde oscuro en el área de trabajo y muéstrela.
I = imread("logo.png");
imshow(I)
Complemente la imagen y elimine el borde. Muestre la imagen.
J = imcomplement(I); JNoBorder = imclearborder(J); imshow(JNoBorder)
Complemente la imagen de nuevo para devolverle el contraste original de la imagen de entrada.
INoBorder = imcomplement(JNoBorder); imshow(INoBorder)
Eliminar objetos conectados para seleccionar los bordes de una imagen
Lea una imagen binaria (una imagen posprocesada de granos columnares microscópicos de cuarzo [2]) en el área de trabajo y muéstrela.
originalBW = imread("quartz_columns.png");
imshow(originalBW)
Elimine solo los objetos que estén conectados al borde superior o inferior de la imagen.
BWclear2B = imclearborder(originalBW, Borders=["top" "bottom"]); imshow(BWclear2B)
El impacto de la conectividad para el borrado del borde
Cree una imagen binaria sencilla.
BW = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
Borre los píxeles del borde de la imagen usando la conectividad de 4. Tenga en cuenta que imclearborder
no borra el píxel en (5,2) porque, con la conectividad de 4, no se considera conectado al píxel del borde en (4,1).
BWc1 = imclearborder(BW,Connectivity=4)
BWc1 = 9×9
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0
0 1 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
Ahora borre los píxeles del borde de la imagen usando la conectividad de 8. imclearborder
borra el píxel en (5,2) porque, con la conectividad de 8, no se considera conectado al píxel del borde en (4,1).
BWc2 = imclearborder(BW,Connectivity=8)
BWc2 = 9×9
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
Argumentos de entrada
I
— Imagen binaria o en escala de grises
Arreglo numérico | arreglo lógico
Imagen binaria o en escala de grises, especificada como un arreglo numérico o lógico.
Ejemplo: I = imread('pout.tif');
Tipos de datos: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
conn
— Conectividad de píxeles
4
| 8
| 6
| 18
| 26
| Matriz de 3 por 3 por ... por 3 con valores 0
y 1
Conectividad de píxeles, especificada como uno de los siguientes valores de la tabla o como una matriz de 3 por 3 por ... por 3 con valores 0
y 1
. La conectividad por defecto es 8
para imágenes 2D y 26
para imágenes 3D.
Valor | Significado | |
---|---|---|
Conectividades bidimensionales | ||
| Los píxeles se consideran conectados si comparten bordes. El entorno de un píxel son los píxeles adyacentes en las direcciones horizontal y vertical. |
El píxel actual se muestra en gris. |
| Los píxeles se consideran conectados si comparten bordes o vértices. El entorno de un píxel son los píxeles adyacentes en las direcciones horizontal, vertical y diagonal. |
El píxel actual se muestra en gris. |
Conectividades tridimensionales | ||
| Los píxeles se consideran conectados si comparten caras. El entorno de un píxel son los píxeles adyacentes en:
|
El píxel actual se muestra en gris. |
| Los píxeles se consideran conectados si sus caras o bordes se tocan. El entorno de un píxel son los píxeles adyacentes en:
|
El píxel actual es el centro del cubo. |
| Los píxeles se consideran conectados si sus caras, bordes o vértices se tocan. El entorno de un píxel son los píxeles adyacentes en:
|
El píxel actual es el centro del cubo. |
En el caso de dimensiones más grandes, imclearborder
utiliza el valor por defecto
.conndef
(ndims(I),'maximal')
La conectividad puede definirse de una forma más general para cualquier dimensión especificando una matriz de 3 por 3 por ... por 3 con valores 0
y 1
. Los elementos con el valor 1
definen los entornos relativos al elemento central de conn
. Tenga en cuenta que conn
debe ser simétrica respecto de su elemento central. Para obtener más información, consulte Especificar conectividades personalizadas.
Nota
Es posible que un píxel del borde de la imagen de salida no se considere un píxel del borde si se especifica una conectividad no predeterminada. Por ejemplo, si conn = [0 0 0; 1 1 1; 0 0 0]
, los elementos de la primera y la última fila no se consideran píxeles de borde porque, según esa definición de conectividad, no están conectados a la región exterior de la imagen.
Nota
Si especifica tanto el argumento conn
como el argumento nombre-valor Connectivity
, imclearborder
establece la conectividad según Connectivity
e ignora el valor de conn
.
Tipos de datos: double
| logical
Argumentos de par nombre-valor
Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN
, donde Name
es el nombre del argumento y Value
es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.
Ejemplo: imclearborder(I,Borders=["left" "right"])
elimina las estructuras de línea que tocan el borde izquierdo o derecho de una imagen.
Borders
— Bordes de imagen de los que se desea eliminar las estructuras
vector de cadenas | Matriz de N por 2 con valores 0
y 1
Desde R2023b
Bordes de imagen de los que se desea eliminar las estructuras, especificados como un vector de cadenas o una matriz de N por 2 con valores 0
y 1
:
Vector de cadenas: especifica de qué bordes de una imagen 2D eliminar estructuras como cualquier combinación de
"left"
,"right"
,"top"
y"bottom"
. Cuando especificaI
como una imagen 2D, el valor predeterminado deBorders
es["left" "right" "top" "bottom"]
.Matriz de N por 2 con valores
0
y1
: especifica de qué bordes de una imagen de N dimensiones eliminar estructuras, donde el primer elemento de cada fila representa el primer borde en la dimensión correspondiente y el segundo elemento representa el segundo borde en esa dimensión. Por ejemplo, siBorders(k,1)
es1
, se seleccionan las estructuras que tocan el primer borde en la k-ésima dimensión. SiBorders(k,2)
es1
, se seleccionan las estructuras que tocan el segundo borde en la k-ésima dimensión. Por ejemplo, especificarBorders = [0 0; 1 1; 0 0]
es equivalente a especificarBorders = ["left" "right"]
. El valor predeterminado deBorders
para imágenes de N dimensiones esones(ndims(I),2)
, que especifica que se deben eliminar las estructuras que tocan todos los bordes de la imagen.
Connectivity
— Conectividad de píxeles
4
| 8
| 6
| 18
| 26
| Matriz de 3 por 3 por ... por 3 con valores 0
y 1
Desde R2023b
Conectividad de píxeles, especificada como 4
, 8
, 6
, 18
, 26
o como una matriz de 3 por 3 por ... por 3 con valores 0
y 1
. Para obtener más información, consulte conn
.
Tipos de datos: double
| logical
Argumentos de salida
J
— Imagen procesada
Arreglo numérico | arreglo lógico
Imagen binaria o en escala de grises procesada, devuelta como un arreglo lógico o numérico, dependiendo de la imagen de entrada que se especifique.
Algoritmos
imclearborder
utiliza una reconstrucción morfológica cuando:
La imagen de máscara es la imagen de entrada.
La imagen de marcador es 0 en todas partes excepto por el borde, donde es igual a la imagen de máscara.
Referencias
[1] Soille, Pierre. Morphological Image Analysis: Principles and Applications Berlin ; New York: Springer, 1999, 164–165.
[2] Molnar, Ian. Uniform quartz - Silver nanoparticle injection experiment, Digital Rocks Portal (April 2016). Accessed March 10, 2023. https://www.digitalrocksportal.org/projects/44, made available for documentation use under the ODC-BY 1.0 Attribution License.
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Notas y limitaciones de uso:
imclearborder
es compatible con la generación de código C (requiere MATLAB® Coder™). Tenga en cuenta que, si selecciona la plataforma objetivo genéricaMATLAB Host Computer
,imclearborder
genera código que utiliza una biblioteca compartida precompilada específica de la plataforma. El uso de una biblioteca compartida mantiene las optimizaciones de rendimiento, pero limita las plataformas objetivo para las que se puede generar código. Para obtener más información, consulte Types of Code Generation Support in Image Processing Toolbox.Solo es compatible con entradas hasta 3D.
El argumento nombre-valor
Connectivity
debe ser una constante en tiempo de compilación.Si el valor
Borders
no tiene forma de matriz numérica, deberá especificarlo como un arreglo de celdas.
Historial de versiones
Introducido antes de R2006aR2023b: Rendimiento mejorado
La función imclearborder
muestra un rendimiento mejorado. Por ejemplo, en el código que se cronometra a continuación, la llamada a imclearborder
es 1,7 veces más rápida que la de la versión anterior.
function t = imclearborderTimingTest A = imbinarize(imread("rice.png")); f = @() imclearborder(A); t = timeit(f); end
Los tiempos de ejecución aproximados son:
R2023a: 0,85 ms
R2023b: 0,51 ms
El código se ha cronometrado en un sistema de prueba macOS 12.5.1, Intel® Core i9 CPU a 3,6 GHz.
R2023b: Opción para especificar en qué bordes eliminar las estructuras
Especifique los bordes en los que eliminar las estructuras conectadas usando el argumento nombre-valor Borders
. Por ejemplo, imclearborder(I,Borders=["left" "right"])
elimina las estructuras de línea que tocan únicamente el borde izquierdo o derecho de una imagen.
Consulte también
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)