imdilate
Dilatar una imagen
Descripción
Ejemplos
Dilatar una imagen con un elemento estructurante de líneas verticales
Lea una imagen binaria en el espacio de trabajo.
BW = imread('text.png');
Cree un elemento estructurante en forma de línea vertical.
se = strel('line',11,90);
Dilate la imagen con un elemento estructurante de líneas verticales y compare los resultados.
BW2 = imdilate(BW,se);
imshow(BW), title('Original')
figure, imshow(BW2), title('Dilated')
Dilatar una imagen en escala de grises con el ratón de bola
Lea una imagen en escala de grises en el espacio de trabajo.
originalI = imread('cameraman.tif');
Cree un elemento estructurante no plano, con forma de esfera.
se = offsetstrel('ball',5,5);
Dilate la imagen.
dilatedI = imdilate(originalI,se);
Muestre la imagen original y la dilatada.
imshowpair(originalI,dilatedI,'montage')
Determinar el dominio de composición de elementos estructurantes
Cree dos elementos estructurantes planos con forma de línea, uno a 0 grados y otro a 90 grados.
se1 = strel('line',3,0)
se1 = strel is a line shaped structuring element with properties: Neighborhood: [1 1 1] Dimensionality: 2
se2 = strel('line',3,90)
se2 = strel is a line shaped structuring element with properties: Neighborhood: [3x1 logical] Dimensionality: 2
Dilate el valor escalar 1 con los dos elementos estructurantes en secuencia, utilizando la opción 'full'
.
composition = imdilate(1,[se1 se2],'full')
composition = 3×3
1 1 1
1 1 1
1 1 1
Dilatar puntos en un espacio 3D mediante elementos estructurantes esféricos
Cree un volumen 3D lógico con dos puntos.
BW = false(100,100,100); BW(25,25,25) = true; BW(75,75,75) = true;
Dilate el volumen 3D utilizando un elemento estructurante esférico.
se = strel('sphere',25);
dilatedBW = imdilate(BW,se);
Muestre el volumen de la imagen dilatada.
figure isosurface(dilatedBW, 0.5)
Argumentos de entrada
I
— Imagen de entrada
Imagen en escala de grises | Imagen binaria | imagen binaria empaquetada
Imagen de entrada, especificada como imagen en escala de grises o imagen binaria empaquetada de cualquier dimensión.
Tipos de datos: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
SE
— Elemento estructurante
objeto strel
| objeto offsetstrel
| arreglo de objetos strel
| arreglo de objetos offsetstrel
Elemento estructurante, especificado como un objeto escalar strel
o un objeto offsetstrel
. SE
también puede ser un arreglo de objetos strel
o de objetos offsetstrel
, en cuyo caso imdilate
realiza múltiples dilataciones de la imagen de entrada, utilizando cada elemento estructurante sucesivamente.
imdilate
realiza la dilatación de escala de grises para todas las imágenes, excepto las de tipo logical
. En este caso, el elemento estructurante debe ser plano y imdilate
realiza la dilatación binaria.
nhood
— Entorno del elemento estructurante
Matriz con valores 0
y 1
Entorno del elemento estructurante, especificado como matriz con valores 0
y 1
.
Ejemplo: [0 1 0; 1 1 1; 0 1 0]
packopt
— Indicador de imagen binaria empaquetada
'notpacked'
(predeterminado) | 'packed'
Indicador de imagen binaria empaquetada, especificado como uno de los siguientes:
Valor | Descripción |
---|---|
|
|
|
|
Tipos de datos: char
| string
shape
— Tamaño de la imagen de salida
'same'
(predeterminado) | 'full'
Tamaño de la imagen de salida, especificado como uno de los siguientes.
Valor | Descripción |
---|---|
| La imagen de salida tiene el mismo tamaño que la imagen de entrada. Si el valor de |
| Calcula la dilatación completa. |
Tipos de datos: char
| string
Argumentos de salida
J
— Imagen dilatada
Imagen en escala de grises | Imagen binaria | imagen binaria empaquetada
Imagen dilatada, devuelta como imagen en escala de grises, imagen binaria o imagen binaria empaquetada. Si la imagen de entrada I
es binaria empaquetada, J
también es binaria empaquetada. J
tiene el mismo tipo de datos que I
.
Más acerca de
Dilatación binaria
La dilatación binaria de A por B, con la denotación A ⨁ B, se define como la operación de conjuntos:
donde es el reflejo del elemento estructurante B. En otras palabras, es el conjunto de ubicaciones de los píxeles z donde el elemento estructurante reflejado se solapa con los píxeles del primer plano en A cuando se traslada a z. Tenga en cuenta que algunas aplicaciones utilizan una definición de dilatación en la que no se refleja el elemento estructurante.
Para obtener más información sobre la dilatación binaria, consulte [1].
Dilatación de escala de grises
En la forma general de dilatación de escala de grises, el elemento estructurante tiene una altura. La dilatación de escala de grises de A(x, y) por B(x, y) se define como
donde DB es el dominio del elemento estructurante B y A(x, y) se supone que está -∞ fuera del dominio de la imagen. Tenga en cuenta que algunas aplicaciones definen la dilatación de escala de grises utilizando una ecuación con A(x + x′, y + y′) en lugar de A(x – x′, y – y′).
Para crear un elemento estructurante con valores de altura distintos de cero, utilice la sintaxis strel(nhood,height)
, donde height
da los valores de altura y nhood
corresponde al dominio del elemento estructurante, DB.
Lo más habitual es que la dilatación de escala de grises se realice con un elemento estructurante plano (B(x,y) = 0). La dilatación de escala de grises mediante un elemento estructurante de este tipo equivale a un operador de máximo local
Todas las sintaxis strel
excepto strel(nhood,height)
, strel('arbitrary',nhood,height)
, y strel('ball',___)
producen elementos estructurantes planos.
Sugerencias
Si la dimensionalidad de la imagen
I
es mayor que la dimensionalidad del elemento estructurante, la funciónimdilate
aplica la misma dilatación morfológica a todos los planos en las dimensiones más altas.Puede utilizar este comportamiento para realizar la dilatación morfológica de imágenes RGB. Especifique un elemento estructurante 2D en el caso de las imágenes RGB para que el cierre se ejecute en cada canal de color por separado.
Cuando se especifica un entorno del elemento estructurante,
imdilate
determina el elemento central denhood
porfloor((size(nhood)+1)/2)
.imdilate
aprovecha automáticamente la descomposición de un objeto de elemento estructurante (si existe). Además, al realizar la dilatación binaria con un objeto de elemento estructurante que tenga una descomposición,imdilate
utiliza automáticamente el empaquetamiento de imágenes binarias para acelerar la dilatación [3].
Referencias
[1] Gonzalez, Rafael C., Richard E. Woods, and Steven L. Eddins. Digital Image Processing Using MATLAB. Third edition. Knoxville: Gatesmark Publishing, 2020.
[2] Haralick, Robert M., and Linda G. Shapiro. Computer and Robot Vision. 1st ed. USA: Addison-Wesley Longman Publishing Co., Inc., 1992, pp. 158-205.
[3] Boomgaard, Rein van den, and Richard van Balen. “Methods for Fast Morphological Image Transforms Using Bitmapped Binary Images.” CVGIP: Graphical Models and Image Processing 54, no. 3 (May 1, 1992): 252–58. https://doi.org/10.1016/1049-9652(92)90055-3.
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Notas y limitaciones de uso:
imdilate
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
,imdilate
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.La imagen de entrada
I
debe ser 2D o 3D.El elemento estructurante
SE
debe ser un único elemento; no se admiten los arreglos de elementos estructurantes. Para obtener el mismo resultado que con un arreglo de elementos estructurantes, llame a la función secuencialmente.Cuando el objetivo es
MATLAB Host Computer
, los argumentospackopt
yshape
deben ser constantes en tiempo de compilación. Cuando el objetivo es cualquier otra plataforma, la sintaxispackopt
no es compatible.
Generación de código de GPU
Genere código CUDA® para GPU NVIDIA® mediante GPU Coder™.
Notas y limitaciones de uso:
La imagen de entrada
I
debe ser 2D o 3D.Las imágenes de entrada binarias empaquetadas (sintaxis
packopt
) no son compatibles.Para las imágenes de entrada en 3D con más de tres canales, solo se genera código C/C++.
El elemento estructurante
SE
debe ser una constante en tiempo de compilación. El código CUDA® solo se genera para los elementos estructurantes 1D o 2D. Si el elemento estructurante es 3D, se genera código C/C++. La generación de código no es compatible con los elementos estructurantes con más de tres dimensiones.Para los elementos estructurantes no planos, solo se genera código C/C++.
Entorno basado en subprocesos
Ejecute código en segundo plano con MATLAB® backgroundPool
o acelere código con Parallel Computing Toolbox™ ThreadPool
.
Esta función es totalmente compatible con los entornos basados en hilos. Para obtener más información, consulte Ejecutar funciones de MATLAB en un entorno basado en subprocesos.
Arreglos GPU
Acelere código mediante la ejecución en una unidad de procesamiento gráfico (GPU) mediante Parallel Computing Toolbox™.
Notas y limitaciones de uso:
La entrada
gpuArray
debe ser del tipouint8
ological
.El elemento estructurante
SE
debe ser plano y 2D.El argumento
packopt
no es compatible con la GPU.
Para obtener más información, consulte Procesamiento de imágenes en una GPU.
Historial de versiones
Introducido antes de R2006aR2022b: Compatibilidad con entornos basados en hilos
Ahora imdilate
es compatible con los entornos basados en hilos.
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
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)