Documentación offline PHP master

Imagick::morphology

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

Imagick::morphology

Aplica un núcleo personalizado a la imagen según el método de morfología dado

Descripción#

public Imagick::morphology(int $morphologyMethod, int $iterations, ImagickKernel $ImagickKernel, [int $channel]): bool
```php

Aplica un núcleo personalizado a la imagen según el método de morfología dado.

## Parámetros

`morphologyMethod`  
Qué método de morfología utilizar entre las constantes \Imagick::MORPHOLOGY\_\*.

`iterations`  
El número de iteraciones a aplicar a la función de morfología. Un valor de -1 significa iterar hasta que no se encuentren más cambios. Cómo se aplica esto puede depender del método de morfología. Típicamente, se trata de un valor de 1.

`ImagickKernel`  

`channel`  

## Valores devueltos

Devuelve `true` en caso de éxito.

## Ejemplos

Convolución `Imagick::morphology`
getCharacter(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_GAUSSIAN, "5,1"); $imagick->morphology(\Imagick::MORPHOLOGY_CONVOLVE, 2, $kernel); header("Content-Type: image/png"); echo $imagick->getImageBlob(); ?>
Correlación `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromMatrix(self::$correlateMatrix, [2, 2]); $imagick->morphology(\Imagick::MORPHOLOGY_CORRELATE, 1, $kernel); header("Content-Type: image/png"); echo $imagick->getImageBlob(); ?>
Erosión `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3"); $canvas->morphology(\Imagick::MORPHOLOGY_ERODE, 2, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Erosión de intensidad `Imagick::morphology`
getCharacter(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "1"); $canvas->morphology(\Imagick::MORPHOLOGY_ERODE_INTENSITY, 2, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Dilatación `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3"); $canvas->morphology(\Imagick::MORPHOLOGY_DILATE, 4, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Dilatación de intensidad `Imagick::morphology`
getCharacter(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "1"); $canvas->morphology(\Imagick::MORPHOLOGY_DILATE_INTENSITY, 4, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Distancia con núcleo de Chebyshev `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_CHEBYSHEV, "3"); $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel); $canvas->autoLevelImage(); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Distancia con núcleo de Manhattan `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_MANHATTAN, "5"); $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel); $canvas->autoLevelImage(); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Distancia con núcleo octagonal `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGONAL, "5"); $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel); $canvas->autoLevelImage(); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Distancia con núcleo euclidiano `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_EUCLIDEAN, "4"); $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel); $canvas->autoLevelImage(); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Borde `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3"); $canvas->morphology(\Imagick::MORPHOLOGY_EDGE, 1, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Apertura `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6"); $canvas->morphology(\Imagick::MORPHOLOGY_OPEN, 1, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Apertura de intensidad `Imagick::morphology`
getCharacter(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6"); $canvas->morphology(\Imagick::MORPHOLOGY_OPEN_INTENSITY, 1, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Cierre `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6"); $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Cierre de intensidad `Imagick::morphology`
getCharacter(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6"); $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE_INTENSITY, 1, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Suavizado `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3"); $canvas->morphology(\Imagick::MORPHOLOGY_SMOOTH, 1, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Borde interior `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3"); $canvas->morphology(\Imagick::MORPHOLOGY_EDGE_IN, 1, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Borde exterior `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3"); $canvas->morphology(\Imagick::MORPHOLOGY_EDGE_OUT, 1, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
El método 'TopHat', o más específicamente 'White Top Hat', devuelve los píxeles que han sido eliminados por una Apertura de la forma, es decir, los píxeles que han sido eliminados para redondear los puntos y los puentes de conexión entre las formas. `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "5"); $canvas->morphology(\Imagick::MORPHOLOGY_TOP_HAT, 1, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
El método 'BottomHat', también conocido como 'Black TopHat', son los píxeles que un Cierre de la forma añade a la imagen. Es decir, los píxeles que han sido utilizados para rellenar los 'huecos', las 'lagunas' y los 'puentes'. `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "5"); $canvas->morphology(\Imagick::MORPHOLOGY_BOTTOM_HAT, 1, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Golpe y fallo `Imagick::morphology`
getCharacterOutline(); //Esto encuentra todos los píxeles con 3 píxeles del borde derecho $matrix = [[1, false, false, 0]]; $kernel = \ImagickKernel::fromMatrix( $matrix, [0, 0] ); $canvas->morphology(\Imagick::MORPHOLOGY_HIT_AND_MISS, 1, $kernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Afinamiento `Imagick::morphology`
getCharacterOutline(); $leftEdgeKernel = \ImagickKernel::fromMatrix([[0, 1]], [1, 0]); $rightEdgeKernel = \ImagickKernel::fromMatrix([[1, 0]], [0, 0]); $leftEdgeKernel->addKernel($rightEdgeKernel); $canvas->morphology(\Imagick::MORPHOLOGY_THINNING, 3, $leftEdgeKernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Engrosamiento `Imagick::morphology`
getCharacterOutline(); $leftEdgeKernel = \ImagickKernel::fromMatrix([[0, 1]], [1, 0]); $rightEdgeKernel = \ImagickKernel::fromMatrix([[1, 0]], [0, 0]); $leftEdgeKernel->addKernel($rightEdgeKernel); $canvas->morphology(\Imagick::MORPHOLOGY_THICKEN, 3, $leftEdgeKernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Afinamiento para generar una cáscara convexa `Imagick::morphology`
getCharacterOutline(); $diamondKernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "1"); $convexKernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_CONVEX_HULL, ""); // La morfología de afinamiento no maneja los pequeños espacios. Los cerramos // con la morfología de cierre. $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $diamondKernel); $canvas->morphology(\Imagick::MORPHOLOGY_THICKEN, -1, $convexKernel); $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $diamondKernel); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Morfología iterativa `Imagick::morphology`
getCharacterOutline(); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "2"); $canvas->morphology(\Imagick::MORPHOLOGY_ITERATIVE, 3, $kernel); $canvas->autoLevelImage(); header("Content-Type: image/png"); echo $canvas->getImageBlob(); ?>
Función de ayuda para obtener un contorno de imagen `Imagick::morphology`
newPseudoImage( $imagick->getImageWidth(), $imagick->getImageHeight(), "canvas:white" ); $canvas = new \Imagick(); $canvas->newPseudoImage( $imagick->getImageWidth(), $imagick->getImageHeight(), "canvas:black" ); $character->compositeimage( $imagick, \Imagick::COMPOSITE_COPYOPACITY, 0, 0 ); $canvas->compositeimage( $character, \Imagick::COMPOSITE_ATOP, 0, 0 ); $canvas->setFormat('png'); return $canvas; } ?>

```php