Вы находитесь на странице: 1из 413

Escuela Universitaria de Ingeniera

Tcnica de Telecomunicacin
Universidad Politcnica de Madrid



Proyecto Fin de Carrera (Plan 2000)



Descripcin, comparacin y ejemplos de uso
de las funciones de la toolbox de procesado
digital de imgenes de MATLAB




Eduardo Laorden Fiter
Septiembre 2012
Matlab, uno de los paquetes de software matemtico ms utilizados actualmente en el mundo
de la docencia y de la investigacin, dispone de entre sus muchas herramientas una especfica
para el procesado digital de imgenes. Esta toolbox de procesado digital de imgenes est
formada por un conjunto de funciones adicionales que amplan la capacidad del entorno
numrico de Matlab y permiten realizar un gran nmero de operaciones de procesado digital
de imgenes directamente a travs del programa principal.
Sin embargo, pese a que MATLAB cuenta con un buen apartado de ayuda tanto online como
dentro del propio programa principal, la bibliografa disponible en castellano es muy limitada
y en el caso particular de la toolbox de procesado digital de imgenes es prcticamente nula y
altamente especializada, lo que requiere que los usuarios tengan una slida formacin en
matemticas y en procesado digital de imgenes.
Partiendo de una labor de anlisis de todas las funciones y posibilidades disponibles en la
herramienta del programa, el proyecto clasificar, resumir y explicar cada una de ellas a
nivel de usuario, definiendo todas las variables de entrada y salida posibles, describiendo las
tareas ms habituales en las que se emplea cada funcin, comparando resultados y
proporcionando ejemplos aclaratorios que ayuden a entender su uso y aplicacin. Adems, se
introducir al lector en el uso general de Matlab explicando las operaciones esenciales del
programa, y se aclararn los conceptos ms avanzados de la toolbox para que no sea necesaria
una extensa formacin previa. De este modo, cualquier alumno o profesor que se quiera
iniciar en el procesado digital de imgenes con Matlab dispondr de un documento que le
servir tanto para consultar y entender el funcionamiento de cualquier funcin de la toolbox
como para implementar las operaciones ms recurrentes dentro del procesado digital de
imgenes.
Matlab, one of the most used numerical computing environments in the world of research and
teaching, has among its many tools a specific one for digital image processing. This digital
image processing toolbox consists of a set of additional functions that extend the power of the
digital environment of Matlab and allow to execute a large number of operations of digital
image processing directly through the main program.
However, despite the fact that MATLAB has a good help section both online and within the
main program, the available bibliography is very limited in Castilian and is negligible and
highly specialized in the particular case of the image processing toolbox, being necessary a
strong background in mathematics and digital image processing.
Starting from an analysis of all the available functions and possibilities in the program tool,
the document will classify, summarize and explain each function at user level, defining all
input and output variables possible, describing common tasks in which each feature is used,
comparing results and providing illustrative examples to help understand its use and
application. In addition, the reader will be introduced in the general use of Matlab explaining
the essential operations within the program and clarifying the most advanced concepts of the
toolbox so that an extensive prior formation will not be necessary. Thus, any student or
teacher who wants to start digital image processing with Matlab will have a document that
will serve to check and understand the operation of any function of the toolbox and also to
implement the most recurrent operations in digital image processing.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 1 de 410
1. Captulo 1
Introduccin y objetivos
1.1. Introduccin
MATLAB es un paquete de software para el desarrollo de algoritmos, el anlisis de
datos, la visualizacin y el clculo numrico que goza en la actualidad de un alto nivel de
implantacin en escuelas y centros universitarios, as como en departamentos de
investigacin y desarrollo de muchas compaas industriales nacionales e internacionales.
En entornos universitarios, MATLAB se ha convertido en una herramienta bsica tanto
para los profesionales e investigadores de centros docentes como para sus alumnos.
El software cuenta con un amplio abanico de herramientas especializadas
denominadas toolboxes que extienden significativamente la funcionalidad del programa
principal. Estas herramientas cubren en la actualidad prcticamente todas las reas
principales del mundo de la ingeniera y la simulacin. La toolbox para el procesado digital
de imgenes es una de sus herramientas ms famosas y utilizadas, y est formada por un
conjunto de funciones que amplan las capacidades de MATLAB para el desarrollo de
aplicaciones y algoritmos en el campo del procesado y anlisis digital de imgenes.
La historia del procesado digital de imgenes est muy ligada al desarrollo de los
computadores. Las imgenes digitales requieren tal cantidad de almacenamiento y potencia
computacional que es necesario el uso de mquinas y tecnologas capaces de manejarlas.
En los aos 60 y 70, en paralelo al desarrollo de las aplicaciones espaciales, las tcnicas de
procesado digital de imgenes comenzaron tambin su desarrollo en diferentes campos
como el de la medicina, biologa, geologa o astronoma. Actualmente, y gracias a los
grandes avances tecnolgicos de los ltimos aos, el procesado digital de imgenes se ha
convertido en una tarea rutinaria esencial para la resolucin de problemas en numerosas
aplicaciones y dispositivos, y se ha acercado tanto al usuario que para obtener soluciones
ptimas solo necesita entender el problema y saber aplicar las herramientas disponibles en
el marcado. Superada la barrera tecnolgica, la dificultad reside ahora en encontrar la
documentacin que permita a los usuarios poco experimentados entender el
funcionamiento de los programas y tcnicas involucradas en el procesado digital de
imgenes.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 2 de 410
1.2. Objetivos
La toolbox para el procesado digital de imgenes de MATLAB est formada por un
conjunto de funciones especficas que amplan las capacidades de MATLAB para el
desarrollo de aplicaciones y algoritmos en el campo del procesado y anlisis digital de
imgenes. Pese a que existen manuales de usuario del programa en espaol creados por la
comunidad educativa (no oficiales), no existe documentacin especfica para la toolbox de
procesado digital de imgenes y la poca informacin existente se reduce al manual oficial
del programa en ingls y a bibliografa altamente especializada que requiere que los
usuarios tengan ya una slida formacin en matemticas y en procesado digital de
imgenes.
El objetivo de este trabajo es el de definir, analizar y comparar a nivel de usuario
las funciones incluidas en la toolbox para el procesado digital de imgenes de MATLAB,
proporcionando ejemplos aclaratorios que ayuden a entender su uso y aplicacin, y que
faciliten su eleccin y ejecucin para resolver problemas determinados. Con ello, sin entrar
en conceptos avanzados de programacin o procesado digital de imgenes, tanto el
profesional de la docencia como el alumno que se inicie en el campo del procesado digital
de imgenes con MATLAB, dispondr de la ayuda y base terica fundamental para el
entendimiento de la herramienta y el desarrollo futuro de programas y aplicaciones ms
complejas.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 3 de 410
2. Captulo 2
MATLAB y el procesado digital de
imgenes
2.1. Qu es MATLAB?
MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es un
software matemtico que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje
de programacin propio (lenguaje M). Est disponible para las plataformas Unix, Windows
y Mac OS X.
Entre sus prestaciones bsicas se encuentran la manipulacin de matrices, la
representacin de datos y funciones, la implementacin de algoritmos, la creacin de
interfaces de usuario (GUI) y la comunicacin con programas en otros lenguajes y con
otros dispositivos hardware.
[1]

El paquete de software de MATLAB dispone de dos herramientas adicionales que
expanden sus prestaciones: Simulink (plataforma de simulacin multidominio) y GUIDE
(editor de interfaces de usuario - GUI). Adems, se pueden ampliar las capacidades de
MATLAB con las cajas de herramientas (toolboxes) que cubren actualmente la mayora de
reas principales del mundo de la ingeniera y la simulacin, como por ejemplo la toolbox
de procesado digital de imgenes (IPT de aqu en adelante), la toolbox de procesado de
seal, la toolbox de comunicaciones y as hasta ms de 150 herramientas.
MATLAB proporciona un entorno de trabajo interactivo cuyo elemento bsico de
trabajo son las matrices, lo que permite la resolucin numrica de problemas en un tiempo
mucho menor que si se utilizaran lenguajes de programacin tradicionales como pueden
ser los lenguajes Fortran, Basic o C, con la ventaja de que su lenguaje propio de
programacin es similar al de los lenguajes tradicionales. Al trabajar con matrices se
pueden describir infinidad de variables de una forma altamente flexible y matemticamente
eficiente. Por ejemplo, una imagen se puede escribir como una matriz de pxeles, un sonido
como una matriz de fluctuaciones, y en general se puede describir con una matriz cualquier
relacin lineal entre las componentes de un modelo matemtico.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 4 de 410
MATLAB empez a utilizarse por investigadores y profesionales de Ingeniera de
Control, expandindose rpidamente a diferentes disciplinas. Actualmente es un programa
muy utilizado en educacin, particularmente en la enseanza del lgebra lineal y el anlisis
numrico, y es muy popular entre los cientficos trabajando en procesado digital de
imgenes. Los usuarios de MATLAB proceden de varios campos de la ingeniera, ciencia
y economa, y pese a ser un paquete de software profesional y de precio elevado, ha
conseguido instaurarse rpidamente en las aulas y despachos de muchos centros educativos
de todo el mundo con una poltica efectiva de licencias de evaluacin de bajo coste.
2.2. Introduccin al Procesado Digital de Imgenes (PDI)
2.2.1. Definicin
El procesado digital de imgenes (PDI) es el procesado, entendiendo ste como el
almacenamiento, transmisin y representacin de informacin, de imgenes digitales por
medio de una computadora digital.
El trmino imagen se refiere a una funcin bidimensional de intensidad de luz f(x,
y) donde x e y denotan las coordenadas espaciales, y el valor de f en cualquier punto (x, y)
es proporcional a la intensidad de la imagen en ese punto. Una imagen digital puede
escribirse como una matriz cuyos ndices de fila y columna identifican un punto en la
imagen y cuyo valor coincide con el nivel de intensidad de luz en ese punto. Cada
elemento del array se corresponde con un elemento en la imagen y se le denomina pixel.
El inters en el procesado digital de imgenes se basa esencialmente en dos
aspectos: la mejora de la informacin contenida en una imagen para la interpretacin
humana y el tratamiento de los datos de una escena para la favorecer la percepcin
autnoma por parte de una mquina.
Debido al amplio rango de tipos de imgenes empleadas en el PDI, no existe un
lmite claro respecto dnde se encuentra la lnea divisoria entre el PDI y otras reas afines,
como el anlisis de imgenes o la visin por computador, entre otras. El anlisis de
imgenes se refiere al proceso por el cual se extrae informacin cuantitativa de la imagen y
en donde el resultado del anlisis es siempre una tabla de datos, una grfica o cualquier
representacin de los datos numricos. El procesado de imgenes, sin embargo, siempre
produce otra imagen como resultado de la operacin, por lo que por lo general se pretende
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 5 de 410
mejorar la calidad de una imagen para poder apreciar mejor determinados detalles. La
visin por computador o visin artificial es un subcampo de la inteligencia artificial cuyo
propsito es programar un computador para que "entienda" una escena o las caractersticas
de una imagen, emulando la visin humana.
[2]

Atendiendo a los tipos de procesos implicados en estas disciplinas, se suele hacer
una clasificacin de tres niveles: nivel bajo (procesado), nivel medio (anlisis) y nivel alto
(interpretacin). Los procesos de nivel bajo incluyen la reduccin de ruido, la mejora del
contraste, y en general, la mejora de caractersticas de la imagen, en donde todas las
entradas/salidas son imgenes. Los procesos de nivel medio analizan los niveles bajos e
incluyen la segmentacin (regiones, objetos), descripcin de objetos, clasificacin, etc. La
entrada es una imagen y la salida son atributos de los objetos (bordes, contornos,
identidades de objetos individuales). Por ltimo, los procesos de nivel alto estn
generalmente orientados al proceso de interpretacin de los elementos obtenidos en los
niveles inferiores, entrando en juego el entendimiento y la toma de decisiones en funcin
del contenido observado. Con esta clasificacin, se le llama procesado digital de imgenes
a los procesos cuyas entradas y salidas son imgenes (procesos de bajo nivel) y, adems, a
aquellos procesos que extraen atributos de imgenes, incluyendo el reconocimiento de
objetos individuales (procesos de nivel medio).
2.2.2. Orgenes
Los antecedentes histricos del procesado digital de imgenes se remontan a la
impresin de peridicos en 1921. En aquella poca la codificacin y transmisin de datos
se realizaba por cable submarino entre las ciudades de Londres y Nueva York, en donde se
reconstrua e imprima. En 1922 se mejor el proceso al emplear una tcnica basada en la
reproduccin fotogrfica a travs de cintas perforadas en las terminales telegrficas
receptoras que permita obtener 5 niveles de gris. Hacia 1929 la tcnica se mejor de nuevo
hasta obtener 15 niveles de gris en la reproduccin de una fotografa. A pesar de estos
avances, las imgenes que se produjeron con esas tcnicas no se consideran los inicios del
PDI debido a que su creacin no involucr el uso de la computadora. Hubo que esperar
hasta los aos 60, con la llegada de los grandes ordenadores y del programa espacial
estadounidense para ver las primeras tcnicas de procesado digital de imgenes por
computador. Concretamente hasta el ao 1964 en el Laboratorio de Propulsin de la
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 6 de 410
NASA, cuando se procesaron las imgenes de la Luna enviadas por el satlite Ranger 7
para corregir distorsiones propias de la cmara.
A partir de los aos 60 el PDI no ha parado de beneficiarse de los continuos
avances tecnolgicos, entre los que se encuentran principalmente la invencin del
transistor en los Laboratorios Bell en 1948, el desarrollo de los lenguajes de programacin
de alto nivel, la invencin del Circuito Integrado por Texas Instrument en 1958, el
desarrollo de los sistemas operativos, la introduccin del ordenador personal en 1981
(IBM), y la continua miniaturizacin de componentes y desarrollo de sistemas de
almacenamiento.
2.2.3. reas de aplicacin
Adems de su aplicacin en los programas espaciales, las tcnicas de procesado
digital de imagen comenzaron a utilizarse en una gran variedad de mbitos y problemas
que compartan la necesidad de mejora de las imgenes para su interpretacin y anlisis.
Actualmente existe una inmensa gama de reas donde el PDI se utiliza de manera
habitual. Un criterio de clasificacin habitual para diferenciar cada una de las reas
implicadas es el de la fuente de las imgenes. La principal fuente de energa de las
imgenes es el espectro electromagntico (EM), especialmente la banda de rayos X y la del
espectro visible. Otras fuentes son la acstica, la ultrasnica, y la electrnica.

Figura i.1 - Espectro electromagntico
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 7 de 410
Empezando por los rayos Gamma, existen aplicaciones que procesan esas fuentes
de imagen en medicina nuclear, como en la Tomografa por Emisin de Positrones (PET)
donde se le inyecta al paciente un istopo radioactivo que emite rayos gamma que
posteriormente son capturados, y en las observaciones astronmicas para detectar la
radiacin natural de rayos gamma de los astros. La siguiente banda, la de los rayos X, tiene
sus principales aplicaciones en medicina (radiografa, angiografa, Tomografa Axial
Computarizada (TAC), etc.), pero tambin en astronoma e industria, como en el control de
calidad de placas de circuito impreso o de alimentos.

Figura i.2 - Escner PET del cerebro humano
[3]

Tambin es posible obtener imgenes empleando la banda ultravioleta del espectro
electromagntico, teniendo como principales aplicaciones la litografa, la inspeccin
industrial, la microscopa, los lseres, las imgenes biolgicas y la astronoma.

Figura i.3 - Teido del cerebro de un ratn
visto en un microscopio de fluorescencia con luz ultravioleta.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 8 de 410
Respecto a las imgenes captadas en la banda visible e infrarroja, estas son por
mucho las aplicaciones ms numerosas. La banda infrarroja se utiliza habitualmente en
conjunto con la banda de espectro visible, por ejemplo en microscopa, astronoma,
deteccin remota (con varias bandas que detectan diferentes detalles del terreno cada una),
controles de calidad en la industria y en las aplicaciones de identificacin de la polica.

Figura i.4 - Deteccin de vegetacin con imagen infrarroja
Las imgenes de la banda de microondas tienen al radar como aplicacin principal
ya que este puede obtener datos de virtualmente cualquier regin y en cualquier momento,
sin importar condiciones de clima o de luz ambiental (puede penetrar nubes, vegetacin,
hielo, arena) utilizando su propia iluminacin (pulsos de microondas) para obtener una
imagen a partir de la energa reflejada. Las imgenes de la banda de radio tienen su mayor
aplicacin en astronoma y medicina. En medicina las ondas de radio se utilizan
principalmente en Imgenes de Resonancia Magntica (MRI).

Figura i.5 - Montaas en el Tbet vistas por un radar topogrfico (NASA)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 9 de 410
Otras formas de obtener imgenes, en este caso imgenes acsticas, es a travs del
sonido. Se aplica en exploracin geolgica (petrleo y minerales), en la industria y en
medicina. El ejemplo ms notorio es el ultrasonido, con el que se puede realizar un
seguimiento al embarazo, o captar imgenes de partes del cuerpo como la tiroides o las
capas musculares.

Figura i.6 - Deteccin de emisiones de gases en el fondo del Golfo de Mjico con sonar.
Crditos: Universidad de New Hampshire Center.
En las imgenes electrnicas, como las de la microscopa electrnica, la
microscopa de escaneo de electrones (SEM) y la microscopia de transmisin de electrones
(TEM), se utilizan rayos de electrones enfocados en vez de rayos de luz como los
microscopios pticos. A travs de esta tcnica es posible captar un filamento de tungsteno
o detectar un circuito integrado daado.

Figura i.7 - Circuito integrado ampliado 2000 veces con SEM



Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 10 de 410
2.2.4. Clases principales de procesado digital de imgenes
Conviene clasificar los diferentes procesos involucrados en el procesado digital de
imgenes para tener una visin general ms estructurada. Podemos englobar la mayor parte
de tareas en tres categoras, cada una de ellas con diferentes algoritmos involucrados:
Mejora o realce de la imagen: procesado de la imagen para que el resultado sea
ms apropiado para una aplicacin en particular. Tareas habituales: mejora de la
nitidez o aclarado de imgenes desenfocadas, eliminacin del ruido, mejora del
contraste, mejora del brillo, deteccin de bordes, etc.
Restauracin de la imagen: Se puede considerar como revertir el dao ocasionado
a la imagen por una causa conocida. Tareas habituales: eliminar el desenfoque por
movimiento, eliminar distorsiones pticas, eliminar interferencia peridica, etc.
Segmentacin de la imagen: Subdivide la imagen en partes o asla ciertos objetos
de una imagen. Tareas habituales: bsqueda y seleccin de formas determinadas en
la imagen, mscaras de la imagen, etc.
Estas clases suelen aparecer en algn momento del procesado de la imagen aunque
no siempre deben hacerlo y depender del objetivo y del problema especfico en cada caso.
2.2.5. Pasos fundamentales en el procesado digital de imgenes
La complejidad de la tarea determinar el nmero de procesos necesarios para
resolver el problema, pero los pasos fundamentales y ms habituales en el procesado
digital de imgenes son los siguientes:
1. Adquisicin de la imagen: los sensores digitalizan las seales. Generalmente
incluye pre-procesado de la imagen (p.ej. escalar la imagen).
2. Mejora de la imagen: procesos de manipulacin de la imagen para lograr un
resultado ms adecuado que el original para una aplicacin especfica (obtener
detalles que no se vean, o simplemente destacar ciertas caractersticas de inters).
3. Restauracin de la imagen: tambin mejora la apariencia de la imagen pero a
diferencia de la mejora de la imagen que es subjetiva, la restauracin es objetiva en
el sentido en que las tcnicas de restauracin tienden a ser modelos probabilsticos
o matemticos de degradacin de la imagen (cmo era la imagen antes de
estropearse?)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 11 de 410
4. Procesado del color: determinado color puede dar o resaltar ms informacin.
5. Ondculas (wavelets): utilizadas fundamentalmente para representar imgenes en
varios grados de resolucin. Se utiliza principalmente en compresin.
6. Compresin: reduce el almacenamiento requerido para guardar una imagen, o el
ancho de banda para transmitirla.
7. Operaciones morfolgicas: herramientas para extraer componentes de la imagen
tiles para la representacin y descripcin de formas.
8. Segmentacin: divide una imagen en sus partes constituyentes. Los objetos se
extraen o aslan del resto de la imagen para su posterior anlisis. Es una de las
tareas ms difciles del procesado digital de imgenes.
9. Representacin y descripcin: casi siempre recibe una imagen segmentada que
consta solamente de fronteras o de regiones. Se toman decisiones tales como si la
forma obtenida debe ser tratada como un frontera o una regin, y se extraen
atributos que resultan en informacin cuantitativa de inters o que son bsicos para
diferenciar clases de objetos.
10. Reconocimiento: el proceso que asigna una etiqueta (p. ej. vehculo) a un objeto
basndose en sus descriptores o bien le da un significado a un grupo de objetos ya
reconocidos.
[4]

2.3. Introduccin al Procesado Digital de Imgenes con MATLAB
2.3.1. Introduccin
Para poder utilizar cualquiera de las diferentes toolboxes especializadas de las que
dispone MATLAB es necesario tener un conocimiento mnimo del programa y de sus
funciones ms bsicas, comunes a todas las herramientas. El objetivo de este trabajo no es
el de ahondar en la utilizacin del programa principal, ya que existe suficiente bibliografa
como para que el usuario pueda adquirir los fundamentos del programa sin demasiada
dificultad. Adems, muchas de las funciones y capacidades del programa principal no son
necesarias para poder iniciarse en el procesado digital de imgenes con MATLAB, as que
nos estaramos extralimitando en nuestro contenido. Por tanto, a continuacin
introduciremos solamente las funciones y operaciones generales de MATLAB que resulten
fundamentales para iniciarse en la lectura de este trabajo y en el procesado digital de
imgenes con MATLAB.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 12 de 410
2.3.2. El entorno de MATLAB
El entorno de MATLAB incluye tres elementos principales: ventanas, variables y
ficheros.
Ventanas: Son de diversos tipos. Las ventanas que forman el ncleo (kernel) del
programa se organizan en el escritorio (desktop), pero en una sesin tpica se abren
y cierran gran nmero de ventanas secundarias correspondientes a figuras, editores
de ficheros o de variables. Existen adems ventanas especficas correspondientes a
la ayuda y a las demostraciones (helps y demos). En el procesado digital de
imgenes aparecern sobre todo ventanas con las imgenes que van siendo tratadas
a lo largo de los programas.
Variables: Son objetos temporales (al cerrar MATLAB se borran) que durante la
sesin en curso se almacenan en el espacio de trabajo (workspace).
Ficheros: Son objetos permanentes (al cerrar MATLAB no se borran). Destacan
los ficheros tipo M (.m), especficos de MATLAB, que guardan funciones o
simplemente cdigo ejecutable directamente en el programa.
2.3.3. El escritorio de MATLAB
Al abrir MATLAB desde el sistema operativo pertinente aparece un escritorio
(desktop) como el mostrado en la figura siguiente (versin 7.13).

Figura i.8 - Escritorio de MATLAB

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 13 de 410
En l se pueden diferenciar las siguientes zonas de inters, de izquierda a derecha y
de arriba a abajo:
Directorio actual (Current Folder): es el directorio donde se ejecutarn los
comandos, pudiendo leer y escribir datos de/en ese directorio. En la ventana se
listan los ficheros y carpetas del directorio actual.
Ventana de comandos (Command Window): es la ventana principal. Desde ella se
escriben los comandos de MATLAB. Las instrucciones se escriben despus del
prompt, cuyo smbolo es >> y se ejecutan con la tecla Enter. Se puede acceder a las
instrucciones ejecutadas con anterioridad pulsando las teclas de flecha izquierda y
derecha para no tener que escribirlas de nuevo.
Espacio de trabajo (Workspace): muestra las variables creadas durante la
ejecucin del programa, as como su tipo y su valor. Haciendo doble clic en ellas se
puede abrir el visualizador/editor de variables.
Historial de comandos (Command History): almacena las instrucciones
introducidas en cada una de las sesiones anteriores de MATLAB, indicando fecha y
hora de la sesin.
Algunos comandos tiles para el manejo del escritorio de MATLAB y sus ventanas
son los siguientes:
cl c
Borrar la ventana de comandos (todos los comandos escritos).

cl ose [ al l ] [ al l hi dden]
Cerrar todas las ventanas abiertas de figuras, aplicaciones, etc.

exi t , qui t
Salir de MATLAB. Pulsar CTRL+C para detener algn clculo, grfico o
impresin sin salir del programa.

di ar y [ on/ of f ]
Grabar una sesin en un fichero de texto.

hol d [ on/ of f ]
Retener la grfica de la ventana actual y que los siguientes comandos se apliquen
sobre ella.

ver
Mostrar la versin de MATLAB y de las toolboxes instaladas.

hel p nombr e_comando
Obtener ayuda sobre cualquier comando.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 14 de 410
2.3.4. Variables y ficheros
Durante una sesin, las variables creadas por los comandos se guardan en el espacio
de trabajo, donde pueden ser modificadas y/o utilizadas en otros comandos. Para ver el
contenido de una variable basta con teclear su nombre en la ventana de comandos o ir a la
ventana Workspace para hacer doble clic en el nombre de la variable y abrir el editor de
variables.
Es posible guardar las variables del workspace en un fichero llamado mat l ab. mat
para que no se pierdan al cerrar MATLAB. Se hace con la funcin save, para poder
cargarlas posteriormente en otra sesin con la funcin l oad. El comando di ar y permite
guardar el texto de la sesin actual en el fichero de texto especificado.
As como las variables son la informacin temporal de MATLAB, los ficheros
constituyen la informacin permanente que no se borra al cerrar la sesin. Hay 2 tipos de
ficheros principales: ficheros de datos con extensin *. mat , que contienen datos de
distintos formatos y se crean y cargan ejecutando las instrucciones save y l oad ( o a
travs de la ventana Workspace) y ficheros M con extensin *. m, que contienen
funciones con parmetros de entrada y salida o simplemente comandos ejecutables.
Normalmente cada funcin de MATLAB es en realidad un fichero tipo M en cuyo interior
est escrita la funcin.
MATLAB tambin puede importar datos de otros tipos de ficheros (*. t xt ,
*. xl s,). Si el fichero est dentro del directorio actual de trabajo, bastar con hacer clic
sobre l y seleccionar la opcin de Importacin o bien importar los datos directamente
desde la ventana de comandos con funciones especficas para ello, como i mpor t dat a,
f open, f r ead, etc.
Los ficheros creados por el usuario se guardan por defecto en el directorio de
trabajo, que es el directorio sobre el que se ejecuta cada sesin de MATLAB. Si se tiene
algn fichero en otro lugar y se quiere hacer uso de su contenido, se le debe indicar a
MATLAB que busque en dicho directorio mediante el comando addpat h di r ect or i o.
Algunos comandos tiles para el manejo de variables y ficheros son:
cl ear [ var ] [ al l ] : borrado de variables.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 15 de 410
what
Ver qu ficheros se encuentran en el directorio actual.

l ookf or
Buscar funciones o comandos relacionados con la palabra especificada.

si ze
Leer el tamao de una matriz en filas y columnas.

ndi ms
Leer las dimensiones de una matriz (un vector tiene 2 al ser una matriz de 1 x 1).

whos
Mostrar informacin adicional de una o todas las variables actuales.

l engt h
Leer la longitud de un vector, equivalente a max( si ze( X) ) .

2.3.5. Comandos y matrices
La forma directa de interactuar con MATLAB es a travs de la lnea de comandos.
Los comandos se escriben despus del smbolo >>y se ejecutan presionando la tecla Enter.
Si una instruccin no cabe en una lnea, se escriben 3 puntos seguidos y se puede continuar
en la lnea siguiente. Los comentarios se hacen precedidos del carcter %y no se ejecutan.
Si no se asigna una variable a la ejecucin de un comando, el resultado del
comando se asigna automticamente a la variable ans (de answer). Para que MATLAB no
muestre el resultado de una instruccin esta debe terminar con ; (punto y coma).
MATLAB no copia el contenido de una variable en otra salvo que la nueva variable
vaya a ser modificada. Por ejemplo, al escribir B=A no se estar copiando el contenido de A
en B hasta que el contenido de B cambie posteriormente en el programa.
MATLAB trabaja esencialmente con matrices numricas rectangulares y la manera
ms fcil de escribir matrices pequeas es enumerando sus elementos de tal manera que:
Los elementos estn separados por espacios en blanco o comas.
Los elementos estn escritos entre corchetes, [ ].
Se defina el final de cada fila con ; (punto y coma).
por ejemplo:
A = [ 1 2 3; 4 5 6; 7 8 9 ]
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 16 de 410
dara la matriz de salida:
A =
1 2 3
4 5 6
7 8 9
Si la matriz a introducir es muy grande se puede utilizar el siguiente formato,
escribiendo cada fila en una nueva lnea:
A = [ 1 2 3
4 5 6
7 8 9]
Las matrices pueden estar formadas por un solo elemento (escalar), por una fila o
una columna (vector, una dimensin) o por una serie de filas y columnas (matriz, array de
dos dimensiones). Al hablar de arrays en trminos generales se hace referencia a cualquier
conjunto de nmeros del mismo tipo, definido entre corchetes, cuyos elementos pueden ser
indexados a travs de enteros, lo que incluye a las matrices y los vectores. Se habla de
matriz dispersa cuando es una matriz de gran tamao en la que la mayor parte de sus
elementos son cero. Por ejemplo:
A = 1
define a A como un escalar de valor 1.

A = [ 1 2 3]
define a A como un vector o array fila de tres elementos: A(1)=1, A(2)=2 y A(3)=3.

A=[ 1, 2, 3; 4, 5, 6]
define a A como una matriz o array de dos dimensiones.
Los arrays de celdas son arrays multidimensionales cuyos elementos son copias de
otros arrays y que se suelen utilizar al manejar nmeros y caracteres a la vez. Por ejemplo,
el array de celdas c = {' gauss' , [ 1 0; 0 1] , 3} contiene 3 elementos: una cadena de
caracteres, una matriz de 2-por-2 y un escalar, a los que se puede acceder individualmente
mediante c{1}, c{2} o c{3} respectivamente. Importante es que estos arrays trabajan con
copias de las matrices que reciben como entrada, no con punteros a dichas matrices.
Las estructuras son otro tipo de variable similar a los arrays de celdas en el sentido
de que permiten agrupar una coleccin de datos distintos en una nica variable, pero en
este caso se accede a los campos mediante el nombre del campo seguido del nombre de la
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 17 de 410
variable. Por ejemplo en la estructura: a = st r uct ( ' campo1' , 0, ' campo2' , ' val ' ) se
accede a cada uno de los campos mediante a. campo1 y a. campo2.
Los dos puntos ( : ) es uno de los operadores ms utilizados en MATLAB,
permitiendo crear vectores, subarrays y especificar iteraciones. Bsicamente significa en
todo el rango.
j : k
es igual que [ j , j +1, . . . , k]

j : i : k
es igual que [ j , j +i , j +2i , . . . , k]

A( : , j )
es la columna nmero j de A (de todas sus filas)

A( : , j : k)
es A( : , j ) , A( : , j +1) , . . . , A( : , k)
Para acceder a los diferentes elementos de las matrices podemos hacerlo de la
siguiente manera:
A( 1, 1)
si queremos el elemento ( 1, 1) de la matriz.

A( 1: 2, 3)
si queremos las dos primeras filas de la tercera columna escribiremos

A( 3, : )
si queremos todos los elementos (todas las columnas) de la tercera fila escribiremos

B=A( 1: 2, 2: 3)
B=A( [ 1, 2] , [ 2 3] )
si queremos crear la submatriz B formada por las filas 1 a 2 y las columnas 2 a 3 de
la matriz A.
Respecto a las operaciones matemticas bsicas con matrices y vectores, los signos
que se utilizan son: + para sumar, - para restar, * para multiplicar, para trasponer y
seguido del nmero al que se pretende elevar la matriz para potenciar. Poner un punto
antes de un operador indica que la operacin debe realizarse componente a componente.
Por ejemplo, A*B es el producto matricial entre las matrices A y B. Si se teclea C=A. *B
(siendo A y B matrices de igual dimensin), el resultado es una matriz C cuyas
componentes cij corresponden a cij=aijbij.
Algunos comandos tiles para el manejo y creacin de matrices son:
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 18 de 410
zer os( N) , zer os( M, N)
Matriz de ceros de N-por-N o M-por-N de clase doubl e.

y=zer os( si ze( A) )
Matriz de ceros del tamao de A.

ones( N) , ones( M, N)
Matriz de unos de N-por-N o M-por-N de clase doubl e.

t r ue( N) , t r ue( M, N)
Matriz de unos de N-por-N o M-por-N de clase l ogi cal .

f al se( N) , f al se( M, N)
Matriz de ceros de N-por-N o M-por-N de clase l ogi cal .

magi c( M)
Cuadrado mgico de M-por-M. Es un array cuadrado en donde la suma a lo largo
de una fila, columna o diagonal principal, es la misma. Es un array muy utilizado
para probar resultados.

r and( N) , r and( M, N)
Matriz de N-por-N o M-por-N con sus valores distribuidos uniformemente con
nmeros aleatorios en el intervalo [0, 1].

r andn( N) , r andn( M, N)
Matriz de N-por-N o M-por-N con sus valores distribuidos uniformemente con
nmeros de media 1 y varianza 0.

2.3.6. Representacin de imgenes
Como ya hemos comentado anteriormente, podemos definir una imagen como una
funcin bidimensional de intensidad de luz f(x, y), donde x e y denotan las coordenadas
espaciales y el valor de f en cualquier punto (x, y) es proporcional a la intensidad de la
imagen en ese punto. En caso de que la imagen sea en escala de grises se habla de nivel de
gris. Las imgenes en color son una combinacin de imgenes individuales, como en el
espacio de trabajo tpico RGB, donde se combinan tres componentes: roja, verde y azul.
Por tanto las operaciones sobre imgenes en escala de grises se pueden aplicar tambin a
imgenes en color procesando cada componente por separado.
Al digitalizar una imagen se digitalizan las coordenadas mediante muestreo y los
valores de amplitud mediante cuantificacin. De esta forma, se obtiene una matriz de
nmeros reales de tamao M-por-N.
El sistema de coordenadas utilizado en la IPT usa la notacin (r, c) para indicar las
filas y las columnas, con el origen de coordenadas situado en (r, c) =(1, 1). La mayor parte
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 19 de 410
de la bibliografa de procesado digital de imgenes utiliza sin embargo la notacin (x, y)
con el centro en (f, y) =(0, 0).
2.3.7. Entrada y salida de imgenes
2.3.7.1. Lectura de imgenes
Las imgenes se leen desde las lnea de comandos de MATLAB mediante la
funcin i mr ead, incorporando as al espacio de trabajo su variable/array correspondiente:
I = i mr ead( ' nombr e_ar chi vo' ) ;
Si la imagen se encuentra en el directorio actual de trabajo no har falta indicar la
ruta al archivo. Sin embargo, para imgenes fuera del directorio actual de trabajo,
necesitaremos escribir la ruta completa al archivo.
Mediante la funcin si ze podemos ver las dimensiones de la imagen. Con la
siguiente sintaxis recogemos el nmero de filas y columnas en las variables F y C:
[ F, C] = si ze( I )
Y mediante la funcin whos podemos ver varias de sus caractersticas, como sus
dimensiones, bytes ocupados y clase de archivo:
whos I
Para tener acceso a todos los campos de informacin de una imagen se debe recoger
la estructura de informacin devuelta por la funcin i mi nf o de la siguiente manera:
E = i mi nf o( I ) ;
y posteriormente acceder a los diferentes campos de la estructura como se ha comentado
con anterioridad:
t amao = E. Fi l eSi ze;
2.3.7.2. Visualizacin de imgenes
Para visualizar una imagen se debe utilizar la funcin i mshow. Al ejecutar la
funcin se abrir la imagen especificada en una nueva ventana, sin producir una salida de
datos en la lnea de comandos. Si se ejecuta de nuevo la funcin sin haber cerrado la
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 20 de 410
ventana o sin especificar una nueva figura utilizando el comando f i gur e antes de llamar a
la funcin (f i gur e, i mshow( I ) ) la nueva imagen reemplazar la anterior en la ventana
abierta. Las sintaxis ms habituales son las siguientes:
i mshow( I , G)
donde I es la imagen a mostrar y G es el nmero de niveles de intensidad utilizados
para mostrarla (256 si se omite).

f i gur e, i mshow( I )
donde I es la imagen a mostrar, que se abrir en una nueva ventana.

i mshow( I , [ l ow hi gh] )
donde I es la imagen a mostrar y donde se mostrarn como negro todos los valores
menores o iguales que el valor l ow y como blanco todos los valores mayores o
iguales que el valor hi gh, con los valores intermedios mostrados por intensidad
segn el nmero de niveles por defecto.

i mshow( I , [ ] )
donde I es la imagen a mostrar y donde el mnimo valor del array se usar como
l ow y el mximo como hi gh para mostrar el mnimo valor como negro y el
mximo como blanco. Es til para mostrar imgenes con bajo rango dinmico o
con valores de intensidad positivos y negativos.
2.3.7.3. Escritura de imgenes
Las imgenes se guardan o escriben en el disco mediante la funcin i mwr i t e. Si no
se especifica otro directorio en el nombre del archivo la funcin guarda la imagen en el
directorio actual de trabajo. Las sintaxis ms habituales son:
i mwr i t e( f , ' nombr e_ar chi vo' )
i mwr i t e( f , ' nombr e_ar chi vo' , ' t i po_i magen' )
i mwr i t e( f , ' nombr e_ar chi vo. ext ensi n' )
Para determinados tipos de archivo existen opciones adicionales, como en el caso
de los archivos tipo J PG, donde se puede especificar la calidad del archivo final mediante
la variable q, que debe valer entre 0 y 100:
i mwr i t e( f , ' nombr e_ar chi vo. j pg' , ' qual i t y' , q)

Para guardar grficos generados con MATLAB debemos hacerlo a travs del men
contextual de la ventana, seleccionando File-Save As o bien mediante la funcin
pr i nt desde la lnea de comandos con la siguiente sintaxis:
pr i nt f numf i g df or mat o r r esol uci on nombr e_ar chi vo
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 21 de 410

Por ejemplo, para guardar la figura nmero 1 en el archivo 'prueba' en formato
TIFF y con resolucin de 300 puntos por pulgada deberemos escribir:
pr i nt - f 1 - dt i f f - r 300 pr ueba
2.3.8. Tipos de datos y de imgenes
2.3.8.1. Tipos de datos
[5]

Existen diferentes tipos o clases de datos en MATLAB, divididos en tres
categoras: numricos, de caracteres y lgicos. La siguiente tabla define cada uno de ellos:
Nombre Descripcin
doubl e
Nmeros de precisin doble en el rango aproximado de -10
308
a
10
308
. Si es una imagen con valores escalados (lo habitual) el
rango ser [0, 1]
(8bytes por elemento)
ui nt 8
Enteros sin signo de 8-bits en el rango [0, 255]
(1 byte por elemento)
ui nt 16
Enteros sin signo de 16-bits en el rango [0, 65535]
(2 bytes por elemento)
ui nt 32
Enteros sin signo de 32-bits en el rango [0, 4294967295]
(4 bytes por elemento)
i nt 8
Enteros con signo de 8-bits en el rango [-128, 127]
(1 byte por elemento)
i nt 16
Enteros con signo de 16-bits en el rango [-32768, 32767]
(2 bytes por elemento)
i nt 32
Enteros con signo de 32-bits en el rango [-2147483648,
2147483647]
(4 bytes por elemento)
si ngl e
Nmeros de precisin simple en el rango aproximado de -10
38
a
10
38
(4 bytes por elemento)
char
Caracteres
(2 bytes por elemento)
l ogi cal
Valores 0 o 1
(1 byte por elemento)
Para la conversin de datos se utilizan las siguientes funciones de la IPT (ms
detalladas en la pgina dedicada a cada funcin):
Funcin Convierte a clase: Clases de entrada
i m2ui nt 8 ui nt 8
l ogi cal , ui nt 8, ui nt 16, doubl e
i m2ui nt 16 ui nt 16
l ogi cal , ui nt 8, ui nt 16, doubl e
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 22 de 410
mat 2gr ay
doubl e escalada (rango [0, 1])
doubl e
i m2doubl e doubl e
l ogi cal , ui nt 8, ui nt 16, doubl e
i m2bw l ogi cal
ui nt 8, ui nt 16, doubl e
2.3.8.2. Tipos de imgenes
La toolbox soporta 4 tipos de imgenes: de intensidad, binarias, RGB e indexadas.
La mayora de operaciones en el procesado digital de imgenes monocromticas se llevan
a cabo utilizando imgenes binarias o de intensidad. A continuacin se describe cada tipo
de imagen por separado:
Imgenes de intensidad: son matrices de datos cuyos valores se han
escalado para representar una escala determinada de intensidad. Por
ejemplo, cuando sus elementos son de clase ui nt 8, tendrn valores
numricos entre 0 y 255.
Imgenes binarias: son arrays de ceros y unos de clase l ogi cal (lgica o
binaria). Un array de ceros y unos cuyos valores no son de clase lgica
(ui nt 8 por ejemplo), no se considera una imagen binaria. Para convertir un
array numrico a un array binario se debe utilizar la funcin l ogi cal . Para
comprobar si un array es binario se utiliza la funcin i sl ogi cal .
Imgenes RGB (Red Green Blue): son arrays de pxeles de color de
tamao M-por-N-por-3, donde cada pixel est formado por una tripleta de
valores correspondientes a las componentes roja, verde y azul de la imagen
en la posicin determinada. El tipo de dato de las componentes determina el
rango de valores. Por ejemplo, si la imagen RGB es de clase doubl e, su
rango ir de 0 a 1, o si es de clase ui nt 8, tendr valores numricos entre 0 y
255.
El nmero de bits utilizados para representar los valores de los pxeles en
cada componente de la imagen determinan la profundidad de color de la
imagen RGB. Por ejemplo, si cada componente de la imagen es de 8 bits, la
imagen RGB ser de 24 bits de profundidad.
Si se quiere crear una imagen RGB a partir de sus componentes por
separado se debe utilizar la funcin cat para juntarlas. Para extraer cada una
de las componentes de una imagen RGB se puede utilizar la siguiente
sintaxis:
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 23 de 410
R = RGB( : , : , , 1) ;
G = RGB( : , : , , 2) ;
B = RGB( : , : , , 3) ;
Imgenes indexadas: tienen dos componentes: una matriz de datos X
formada por nmeros enteros y una matriz map con el mapa o paleta de
color. La matriz del mapa de color es un array de m-por-3 de clase doubl e
que contiene valores en el rango [0, 1] y donde la longitud de mes igual al
nmero de colores que define. Cada valor de la matriz del mapa de color
contiene las componentes roja, verde y azul que definen un nico color.
El color de cada pixel en una imagen indexada se determina utilizando el
valor de la matriz de enteros como puntero (ndice) al array del mapa de
color. De esta forma, el valor de la matriz de enteros determina el nmero
de fila en la matriz del mapa de color (un color determinado). Por ejemplo,
si la matriz de enteros es de clase doubl e, todas las componentes con valor
menor o igual que 1 apuntan a la primera fila del mapa de color, las
componentes con valor 2 apuntan a la segunda fila y as sucesivamente.
Para mostrar una imagen indexada se debe utilizar la sintaxis:
i mshow ( X, map)
o alternativamente:
i mage( X)
col or map( map)
Existen diferentes mapas de color predefinidos que pueden utilizarse para
mostrar la imagen.
Para pasar de un tipo de imagen a otro la IPT proporciona varias funciones que
permiten la conversin. Estas son las ms habituales (ms detalladas en la pgina de cada
funcin):
Funcin Imagen de salida Imagen de entrada
di t her
imagen indexada (mediante
tramado)
imagen RGB
gr aysl i ce
imagen indexada (mediante
umbralizacin multinivel)
imagen de intensidades en
escala de grises
gr ay2i nd
imagen indexada
imagen de intensidades en
escala de grises
i nd2gr ay
imagen de intensidades en imagen indexada
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 24 de 410
escala de grises
r gb2i nd
imagen indexada imagen RGB
i nd2r gb
imagen RGB imagen indexada
r gb2gr ay
imagen en escala de grises imagen RGB
2.3.9. Indexado de arrays
2.3.9.1. Indexado de vectores
Como ya definimos al comienzo de este captulo, un vector v es un array de una
sola dimensin, ya sea horizontal (1-por-N) o vertical ( N-por-1) . Para acceder a cada uno
de los elementos del vector v se utiliza indexado en una dimensin: v( 1) es el primer
elemento del vector, v( 2) es el segundo elemento, y as sucesivamente.
Recordamos que para acceder a bloques de elementos se utiliza el operador : (dos
puntos) de tal forma que si escribimos v( 1: 3) estaremos accediendo a los primeros tres
elementos del vector. Para indicar el final del vector podemos hacerlo con la palabra end
de la siguiente manera: v( 1: end) , lo que producira la salida del vector como fila. Para
escribir el vector como columna deberemos escribir v( : ) .
Se puede acceder a posiciones del vector no sucesivas con la sintaxis: v( 1: 2: end)
que significa coger el elemento 1, contar de dos en dos para coger elementos y finalizar
cuando se llegue al final del vector. Los saltos pueden ser negativos (cuenta hacia atrs).
Un vector tambin se puede utilizar como ndice en otro vector. Por ejemplo,
podemos coger los elementos primero, cuarto y quinto del vector v utilizando el vector
ndice [ 1 4 5] con la siguiente sintaxis: v( [ 1 4 5] ) .
Mediante la funcin l i nspace( a, b, n) se puede generar un vector fila de n
elementos linealmente espaciados y que incluya a los nmeros a y b.
2.3.9.2. Indexado de matrices
Para indexar matrices ahora necesitamos dos ndices al ser elementos en dos
dimensiones: uno para la fila y otro para la columna. Por ejemplo, para acceder a la
segunda fila y tercera columna del vector A se debe de escribir: A( 2, 3) .
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 25 de 410
El uso del operador : (dos puntos) es similar que en el caso de vectores pero ahora
se seleccionan bloques enteros de filas o columnas especificadas. Por ejemplo, siendo A
una matriz de 3-por-3, seleccionaremos nicamente la tercera columna mediante el
comando A( : , 3) o bien A( 1: 3, 3) . Para escribir la matriz como una columna deberemos
escribir A( : ) , que es una forma adecuada para utilizar con funciones como sumque suma
todas las columnas de la matriz, por lo que el comando sum( A( : ) ) calcular la suma de
todos los elementos del array. Para escribir la matriz como fila deberemos escribir
A( 1: end) .
El uso de la variable end tambin es similar que en el indexado de vectores, salvo
que ahora se indicar el final de la fila o columna. Por ejemplo A( end, end) mostrar el
ltimo elemento del array.
La notacin A( [ a b] , [ c d] ) selecciona los elementos de A que estn en la fila a
columna c, fila a columna d, fila b columna c y fila b columna d. Una forma habitual de
indexar matrices con matrices es utilizar matrices binarias que hagan de ndice como
muestra el siguiente ejemplo:
A = [ 1 2 3; 4 5 6; 7 8 9]
D = l ogi cal ( [ 1 0 0; 0 0 1; 0 0 0] )
A( D)

que dara una salida de:

ans =
1
6
MATLAB guarda las matrices del modo en el que las muestra el comando A( : ) , o
sea, en una sola columna. De hecho, se puede acceder a los elementos de la matriz
mediante indexado lineal, utilizando la posicin del elemento en esa nica columna. Por
ejemplo, A( 3) accede al tercer valor de esa columna de datos.
2.3.10. Operadores
Los operadores de MATLAB se agrupan en tres categoras principales:
Operadores aritmticos que realizan operaciones numricas.
Operadores relacionales que comparan operandos cuantitativamente.
Operadores lgicos.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 26 de 410
2.3.10.1. Operadores aritmticos
MATLAB cuenta con dos tipos de operaciones aritmticas: operaciones matriciales
y operaciones de arrays. La diferencia es que las operaciones de arrays se realizan
elemento a elemento y se especifican con el operador . (punto). Por ejemplo, A*B indica
una multiplicacin de matrices tradicional mientras que A. *B indica la multiplicacin de
arrays (de sus elementos). Para los operadores de suma y resta no se utiliza el operador
punto.
La tabla siguiente muestra los operadores aritmticos de MATLAB, donde A y B
son matrices o arrays (pudiendo ser imgenes) y a y b son escalares. Se necesitan entradas
de clase doubl e:
Operador Operacin Funcin
+
Suma de arrays o matrices.
pl us( A, B)
-
Resta de arrays o matrices.
mi nus( A, B)
. *
Multiplicacin de arrays.
t i mes( A, B)
*
Multiplicacin de matrices.
mt i mes( A, B)
. /
Divisin de cada entrada de A por su
correspondiente en B (divisin de array
derecha).
r di vi de( A, B)
. \
Divisin de cada entrada de B por su
correspondiente en A (divisin de array
izquierda).
l di vi de( A, B)
/
Divisin de matrices derecha
(A/ B es similar a A*i nv( B) ).
mr di vi de( A, B)
\
Divisin de matrices izquierda
(A\ B es similar a i nv( A) *B).
ml di vi de( A, B)
. ^
Potenciacin de arrays.
power ( A, B)
^
Potenciacin de matrices.
mpower ( A, B)
. '
Traspuesta de vectores y matrices.
t r anspose( A)
'
Adjunta o traspuesta conjugada de
vectores y matrices.
ct r anspose( A)
Adems, la IPT tiene una serie de funciones especficas para operar con imgenes
que aunque realizan clculos que se pueden llevar a cabo con los operadores aritmticos
tradicionales, su entrada de datos no est limitada a la clase doubl e.
Funcin Descripcin
i madd
Suma dos imgenes o le aade una constante a una imagen.
i msubt r act
Resta dos imgenes o le resta una constante a una imagen.
i mmul t i pl y
Multiplica dos imgenes elemento a elemento o multiplica una
constante sobre una imagen.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 27 de 410
i mdi vi de
Divide dos imgenes elemento a elemento o divide una imagen
entre una constante.
i mabsdi f f
Calcula la diferencia absoluta entre dos imgenes.
i mcompl ement
Complementa una imagen.
i ml i ncomb
Combina linealmente dos o ms imgenes.
2.3.10.2. Operadores relacionales
Los operadores relacionales de los que dispone MATLAB son los habituales y
comparan elemento a elemento los elementos correspondientes de cada array, que deben
ser de iguales dimensiones salvo que uno de ellos sea un escalar. Los operadores son los
siguientes:
Operador Operacin lgica
<
Menor que.
<=
Menor o igual que.
>
Mayor que.
>=
Mayor o igual que.
==
Igual que.
~=
Distinto que.
Este tipo de comandos son ms habituales en conjuncin con sentencias de
programacin (i f , whi l e, f or , etc.) pero tambin pueden utilizarse directamente con
arrays, lo que devolver un array lgico indicando los valores de los arrays que cumplan
con las condiciones lgicas. Ejemplo:
A = [ 1 2 3; 4 5 6; 7 8 9] ;
B = [ 0 2 4; 3 5 6; 3 4 9] ;
A == B

dar la siguiente salida (marcando dnde A es igual a B):

ans =
0 1 0
0 1 1
0 0 1
2.3.10.3. Operadores y funciones lgicas
Los operadores lgicos de MATLAB pueden operar tanto con datos lgicos como
con datos numricos. El valor verdadero o 1 es cuando hay un valor lgico de 1 o cuando
hay un valor numrico distinto de cero.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 28 de 410
Operador Operacin lgica
&
AND
|
OR
NOT
NOT
Hay 3 funciones lgicas importantes en MATLAB, que son:
Funcin Descripcin
xor
OR exclusiva. Devuelve 1 si ambos operandos son diferentes
lgicamente y 0 en caso contrario.
al l
Devuelve 1 si todos los elementos de un vector son distintos de
cero y 0 en caso contrario. Esta funcin opera con columnas en
el caso de matrices.
any
Devuelve 1 si alguno de los elementos de un vector es distinto
de cero y 0 en caso contrario. Esta funcin opera con columnas
en el caso de matrices.
Ejemplo:
A = [ 1 2 3; 4 5 6] ;
B = [ 0 - 1 1; 0 0 2] ;

al l ( B)

dara una salida de:

ans =
0 0 1
2.3.11. Programacin de archivos
Una de las principales caractersticas de la IPT es su total acceso al entorno de
programacin de MATLAB, tanto desde la lnea de comandos como desde los archivos-M
propios de MATLAB con cdigo y funciones ejecutables.
El lenguaje de programacin de MATLAB es similar al empleado en otros
lenguajes de alto nivel como puede ser C o J ava, y las expresiones fundamentales para el
manejo del flujo de comandos son las mismas (i f , el se, f or , swi t ch, whi l e, br eak,
cont i nue, r et ur n, etc.).
Adems existe una serie de funciones lgicas que son tiles para la programacin
condicionada y que se listan a continuacin:
[5]

Funcin Descripcin
i scel l ( C)
Verdadero si C es un array de celdas.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 29 de 410
i scel l st r ( s)
Verdadero si s es un array de celdas de cadenas de
texto.
i schar ( s)
Verdadero si s es un carcter.
i sempt y( A)
Verdadero si A es un array vaco [ ] .
i sequal ( A, B)
Verdadero si A y B tienen idnticos elementos y
dimensiones.
i sf i el d( S, ' nombr e' )
Verdadero si ' nombr e' es un campo de la estructura S.
i sf i ni t e( A)
Verdadero en las localizaciones del array A que son
finitas.
i si nf ( A)
Verdadero en las localizaciones del array A que son
infinitas.
i sl et t er ( A)
Verdadero en las localizaciones de A que son letras del
alfabeto.
i sl ogi cal ( A)
Verdadero si A es un array lgico.
i smember ( A, B)
Verdadero en las posiciones donde los elementos de A
estn tambin en B.
i snan( A)
Verdadero en las posiciones de A que son nmeros
indeterminados (NaNs, Not-a-Number) como p.ej. 0/0.
i snumer i c( A)
Verdadero si A es un array numrico.
i spr i me( A)
Verdadero en las posiciones s de A que son nmeros
primos.
i sr eal ( A)
Verdadero si los elementos de A no tienen parte
imaginaria.
i sspace( A)
Verdadero en las localizaciones donde los elementos de
A son espacios en blanco.
i sspar se( A)
Verdadero si A es una matriz dispersa.
i sst r uct ( S)
Verdadero si S es una estructura.


Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 30 de 410
3. Captulo 3
La toolbox de procesado digital de
imgenes de MATLAB
1.1. Introduccin
La Image Processing Toolbox (IPT) le proporciona a MATLAB un conjunto
completo de algoritmos y herramientas grficas para el procesado, anlisis y visualizacin
de imgenes y para el desarrollo de aplicaciones y de nuevos algoritmos en el campo del
procesado y anlisis de imgenes digitales. Adems MATLAB, el entorno matemtico
sobre el que se sustenta, es ideal para este procesado digital de imgenes ya que las
imgenes digitales son matrices al fin y al cabo.
La IPT soporta imgenes generadas por un amplio gama de dispositivos, incluidas
cmaras digitales, sensores satelitales y areos, dispositivos de generacin de imgenes
mdicas, microscopios, telescopios y otros instrumentos cientficos. La herramienta
soporta formatos de datos e imgenes estndar, como J PEG, J PEG-2000, TIFF, PNG,
HDF, HDF-EOS, FITS, Microsoft

Excel

, ASCII, y archivos binarios, pero tambin


admite diversos formatos de imagen especializados, como los formatos de imgenes
multibanda BIP y BIL utilizados por los satlites LANDSAT, los archivos mdicos
DICOM y sus metadatos asociados, o los formatos Analyze 7.5 e Interfile. La toolbox
tambin puede leer imgenes geoespaciales en archivos NITF e imgenes de alto rango
dinmico en archivos HDR.
Entre las funciones principales de la IPT destacan:
[6]

Mejora y filtrado de imgenes y enfoque de imgenes borrosas.
Anlisis de imgenes, incluyendo segmentacin, morfologa, extraccin de
funciones y medicin.
Transformaciones geomtricas y mtodos de registro de imgenes basados en
intensidad.
Transformaciones de imgenes, incluyendo FFT, DCT, Radon y proyeccin de haz
de rayos en abanico.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 31 de 410
Flujos de trabajo para procesar, visualizar y navegar por imgenes arbitrariamente
grandes.
Herramientas interactivas, incluyendo selecciones de ROI, histogramas y
mediciones de distancias.
Importacin y exportacin de archivos DICOM.
1.2. Funciones
[7]

La IPT de MATLAB cuenta con 283 funciones propias en su ltima versin 8.0
(R2012a) del ao 2012. En este captulo y segn lo acordado con el tutor del PFC, se
describir nicamente la primera mitad de las funciones para no exceder el tiempo y
espacio que se le debe destinar a la realizacin del PFC, quedando la otra mitad pendiente
para otro futuro PFC que complemente esta primera mitad del trabajo.
A continuacin se detallar sucesivamente cada funcin por separado, empezando
alfabticamente por la primera y utilizando una nueva pgina para cada una de ellas,
facilitando as su lectura y comprensin.
En cada funcin se seguir una estructura similar: el nombre de la funcin, su ttulo
descriptivo, una introduccin en caso de que sea necesario aclarar brevemente algunos
conceptos avanzados, sus sintaxis permitidas, una descripcin completa de la funcin y de
sus diferentes sintaxis y variables, y unos ejemplos finales aclaratorios. Al ser un programa
y cdigo completamente en ingls, se ha decidido dejar en ingls el nombre de las
variables implicadas en la definicin de las funciones, aunque su explicacin posterior se
haga en castellano. Todas las palabras que formen parte del cdigo de un programa o de la
sintaxis de una funcin tendrn un formato de fuente distinto al resto para facilitar su
diferenciacin.
Al final de la pgina de cada funcin se detallan las funciones de la IPT que estn
relacionadas con esa funcin. Adems, en el Captulo 5 - Anexo I se encuentran
organizadas las funciones por aplicacin para que sea ms fcil encontrar una funcin a
partir de los requisitos del usuario. De esta forma, junto al ndice de funciones ordenadas
alfabticamente localizado al comienzo de este PFC, se hace sencilla la bsqueda de
cualquier funcin en el documento, ya sea por aplicacin o por nombre.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 32 de 410
adapthisteq
Ecualizacin adaptativa del histograma con contraste limitado (Contrast-
limited adaptive histogram equalization, CLAHE)
Introduccin
El histograma es un grfico que relaciona los niveles de intensidad de gris de una imagen y
el nmero de pxeles que hay para cada nivel de intensidad. El histograma, adems de
caracterizar la imagen, se puede utilizar tambin para la segmentacin de imgenes.
Cada imagen tiene su propio histograma pero como norma general se considera que una
imagen tiene un buen contraste si su histograma se extiende ocupando casi todo el rango de
tonos. Para aumentar el contraste, se puede expandir el histograma o bien realizar una
ecualizacin del mismo (expansin buscando distribucin uniforme):
Expansin del histograma (o aumento del rango dinmico): consiste en hacer que el
histograma abarque la totalidad de niveles de intensidad disponibles, expandiendo
los niveles originales de manera que el valor de intensidad ms bajo sea cero y el
ms alto sea el valor mximo.
Ecualizacin o linealizacin del histograma: busca distribuir los niveles de gris (
color en el caso RGB) de una de forma uniforme, expandiendo los valores de
intensidad ms frecuentes en la imagen y por tanto mejorando el contraste de la
imagen. La principal ventaja es que es un mtodo completamente automtico.
[4]

La funcin adapt hi st eq mejora el contraste de la imagen I utilizando una ecualizacin
adaptativa del histograma con contraste limitado (CLAHE). Es til para potenciar los
detalles de una imagen y mejorar el contraste tanto general como local. Es la funcin ms
sofisticada y automtica de la toolbox para mejorar el contraste de una imagen. Otras
alternativas ms simples son las funciones hi st eq , que ecualiza el histograma actuando
sobre la imagen completa e i madj ust que permite expandir el histograma ajustando los
valores de intensidad de la imagen a un rango determinado.
Sintaxis
J = adapt hi st eq( I )
J = adapt hi st eq( I , par am1, val 1, par am2, val 2. . . )
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 33 de 410
Descripcin
CLAHE acta en pequeas regiones de la imagen llamadas baldosas (tiles) en vez de
hacerlo en toda la imagen. Se mejora el contraste de cada baldosa para que el histograma
de la regin concuerde de manera aproximada con el histograma definido en el parmetro
'Di st r i but i on'. Despus se combinan las baldosas vecinas usando interpolacin bilineal
para eliminar las fronteras inducidas artificialmente. Esto es especialmente til cuando se
necesita aplicar una transformacin diferente en distintas zonas de la imagen, aumentando
el contraste de forma diferente en cada zona, cosa que no se puede hacer con las otras
funciones de la toolbox destinadas a la mejora del contraste (hi st eq e i madj ust ).
El contraste, especialmente en las zonas homogneas, se puede limitar para evitar
amplificar cualquier ruido que pudiera presentar la imagen en esas zonas. Con ello
evitamos sobreexponer zonas que ya estn bien contrastadas.
I es una imagen en escala de grises y puede ser del tipo ui nt 8, ui nt 16, i nt 16, si ngl e, o
doubl e. La imagen de salida J tendr el mismo tipo que I . Si en vez de una imagen en
escala de grises se tiene una imagen en color, se debe convertir la imagen en color al
espacio de color adecuado para procesarlo, como por ejemplo al espacio de color L*a*b*,
donde se puede actuar nicamente sobre la componente de luminosidad 'L*', afectando
solo a la intensidad de los pixeles y preservando los colores originales.
Opcionalmente se pueden especificar varios parmetros de entrada, cuyos valores por
defecto funcionan muy bien para una primera aproximacin o prueba. Los nombres de los
parmetros se pueden abreviar y no son sensibles a las maysculas:
Parmetro Valor
' NumTi l es'
Vector de dos nmeros enteros positivos que especifican el nmero de
baldosas rectangulares con fila y columna, [ M N] . M y N deben valer al
menos 2. El nmero total de baldosas es igual a M*N.
adapt hi st eq dividir la imagen en ese nmero de regiones o baldosas
y calcular la transformacin de contraste para cada una de ellas
basndose en su histograma. El nmero ptimo depende del tipo de
imagen de entrada y se debe determinar por experimentacin.
(Por defecto: [ 8 8] , 64 baldosas)
' Cl i pLi mi t '
Escalar real en el rango [0, 1] que define un lmite de mejora en el
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 34 de 410
contraste. A mayor nmero mayor contraste. Es el parmetro que ms
afecta al resultado final.
' Cl i pLi mi t ' es un factor de contraste que previene una
sobresaturacin de la imagen, especialmente en zonas homogneas,
con similar nivel de gris. Estas zonas se caracterizan por tener un pico
en el histograma debido a demasiados pxeles con mismo nivel de gris.
Sin esta limitacin, la ecualizacin adaptativa del histograma podra
producir una imagen peor que la original.
(Por defecto: 0.01)
' NBi ns'
Escalar entero positivo que especifica el nmero de intervalos (bins)
del histograma usado para crear la transformacin de contraste
mejorado. A mayor nmero, mejor rango dinmico, a cambio de
menor velocidad de procesado.
(Por defecto: 256)
' Range'
Cadena que especifica el rango de datos de la imagen de salida.
' or i gi nal ' Rango limitado al de la imagen original, [ mi n( I ( : ) )
max( I ( : ) ) ] .
' f ul l ' Rango completo del tipo de imagen usado en I . Por
ejemplo, si se usa un tipo ui nt 8, el rango ser [ 0, 255] .
(Por defecto: ' f ul l ' )
' Di st r i but i on'
Cadena que especifica la forma o distribucin deseada del histograma
que usar la funcin para realizar la transformacin. La distribucin
depende del tipo de imagen de entrada. Por ejemplo, las imgenes
submarinas quedan ms naturales utilizando una distribucin Rayleigh.
' uni f or m' Histograma Uniforme o plano.
' r ayl ei gh' Histograma en forma de campana.
' exponent i al ' Histograma exponencial o curvado.
(Por defecto: ' uni f or m' )
' Al pha'
Escalar real positivo que especifica un parmetro de distribucin. Solo
se usa cuando se ha especificado el parmetro ' Di st r i but i on' como
' r ayl ei gh' o ' exponent i al ' .
(Por defecto: 0. 4)
Ejemplos de uso
Ejemplo 1: Aplicar una ecualizacin adaptativa del histograma con contraste limitado
(CLAHE) a una imagen en escala de grises cambiando alguno de sus parmetros.
I = i mr ead( ' M131806467LC. t i f ' ) ;
i mshow( I )

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 35 de 410
%Ut i l i zamos l a f unci n con di f er ent es par met r os y compar amos.

A1 = adapt hi st eq( I ) ;
A2 = adapt hi st eq( I , ' cl i pLi mi t ' , 0. 05) ;
A3 = adapt hi st eq( I , ' NumTi l es' , [ 30 30] , ' cl i pLi mi t ' , 0. 01) ;
f i gur e, i mshow( A1)
f i gur e, i mshow( A2)
f i gur e, i mshow( A3)



Figura f.1 - Imagen original (I) sin procesar Figura f.2 - Imagen procesada (A1) con adapthisteq
con los parmetros por defecto (NumTiles=8*8 y
clipLimit=0.01)


Figura f.3 - Imagen procesada (A2) con adapthisteq
con los parmetros por defecto y clipLimit=0.05
Figura f.4 - Imagen procesada (A3) con adapthisteq
con los parmetros por defecto y NumTiles=30*30
Ejemplo 2: Aplicar una ecualizacin adaptativa del histograma con contraste limitado
(CLAHE) comparando el resultado con el de las otras funciones para la mejora del
contraste (histeq e imadjust).
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 36 de 410
I = i mr ead( ' M131806467LC. t i f ' ) ;
f i gur e, i mhi st ( I ) ;
A1 = i madj ust ( I ) ;
f i gur e, i mhi st ( A1) ;
A2 = hi st eq( I ) ;
f i gur e, i mhi st ( A2) ;
A3 = adapt hi st eq( I ) ;
f i gur e, i mhi st ( A3) ;

i mshow( I )
f i gur e, i mshow( A1)
f i gur e, i mshow( A2)
f i gur e, i mshow( A3)



Figura f.1 - Imagen original (I) sin procesar Figura f.5 - Imagen procesada (A1) con imadjust


Figura f.6 - Imagen procesada (A2) con histeq Figura f.2 - Imagen procesada (A3) con adapthisteq

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 37 de 410

Figura f.7 - Histograma de imagen original I Figura f.8 - Histograma de imagen procesada (A1)
con imadjust



Figura f.9 - Histograma de imagen procesada (A2)
con histeq
Figura f.10 - Histograma de imagen procesada (A3)
con adapthisteq
Como vemos el mejor resultado se obtiene con la funcin adapt hi st eq que consigue
contrastar de forma diferente segn la zona, obteniendo un histograma bastante expandido
y uniforme, mientras que i madj ust e hi st eq sobre todo, se exceden aumentando el
contraste de toda la imagen sobresaturando algunas zonas, por lo que habra que hacer uso
de sus diferentes parmetros de entrada para corregir la salida.
Ejemplo 3: Aplicar CLAHE a una imagen en color del tipo RGB.
Para mejorar el contraste en imgenes en color se suele trabajar en un espacio de color que
tenga los valores de intensidad en una de sus componentes, como el espacio L*a*b*, donde
se acta nicamente sobre la componente de luminosidad 'L*', lo que afecta solo a la
intensidad de los pixeles y preserva los colores originales. Para el espacio de trabajo RGB
se podran procesar directamente los canales de forma separada, pero cambiara el
resultado final, apareciendo ms colores que en la imagen original.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 38 de 410
RGB = i mr ead( ' Nur nber g. t i f ' ) ;

%Cr eamos l a est r uct ur a de t r ansf or maci n de col or de sRGB a L*a*b* y
conver t i mos l os val or es de col or RGB a L*a*b* segn di cha est r uct ur a.

cf or m2l ab = makecf or m( ' sr gb2l ab' ) ;
LAB = appl ycf or m( RGB, cf or m2l ab) ;

%Pasamos a f or mat o de t i po doubl e par a consegui r un espaci o de col or
L*a*b* or i gi nal del CI E y escal amos l os val or es de l umi nosi dad pasando de
r ango [ 0, 100] a [ 0, 1] que es el apr opi ado par a i mgenes de i nt ensi dad en
f or mat o doubl e, consi gui endo pasar a escal a de gr i ses.

LAB = l ab2doubl e( LAB) ;
L = LAB( : , : , 1) / 100;

%Apl i camos CLAHE y guar damos l os val or es en el l ugar or i gi nal de l a
est r uct ur a LAB, vol vi ndol os a escal ar al r ango or i gi nal [ 0, 100] .

LAB( : , : , 1) = adapt hi st eq( L) *100;

%Vol vemos a espaci o de col or t i po RGB y most r amos l os r esul t ados.

cf or m2sr gb = makecf or m( ' l ab2sr gb' ) ;
PRGB = appl ycf or m( LAB, cf or m2sr gb) ;

f i gur e, i mshow( RGB) ;
f i gur e, i mshow( PRGB)


Figura f.11 - Imagen original (RGB) sin procesar Figura f.12 - Imagen procesada (PRGB) con
adapthisteq con los parmetros por defecto
Funciones relacionadas:
hi st eq, i madj ust

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 39 de 410
analyze75info
Lectura de los metadatos del archivo de cabecera de un conjunto de
datos en formato Analyze 7.5
Introduccin
Analyze 7.5 es un producto para la visualizacin y anlisis de imgenes biomdicas en 3-D
cuyo formato de datos se cre para guardar imgenes de resonancias magnticas (MRI).
Sus archivos de salida son dos: una cabecera y una imagen, con el mismo nombre y
diferentes extensiones. El archivo de cabecera (ar chi vo. hdr ) proporciona informacin a
cerca de las dimensiones, identificacin y procesado, y se lee mediante la funcin
anal yze75i nf o. El archivo de imagen (ar chi vo. i mg) guarda los datos de imagen cuyo
tipo y orden se describen en el archivo de cabecera y se utiliza la funcin anal yze75r ead
para leer los datos.
Sintaxis
i nf o = anal yze75i nf o( f i l ename)
i nf o = anal yze75i nf o( f i l ename, ' Byt eOr der ' , endian)
Descripcin
i nf o = anal yze75i nf o( f i l ename) lee el archivo de cabecera del conjunto de datos en
formato Analyze 7.5 que se ha especificado en la cadena f i l ename. La funcin devuelve
i nf o, una estructura cuyos campos contienen informacin a cerca del conjunto de datos.
i nf o = anal yze75i nf o( f i l ename, ' Byt eOr der ' , endi an) lee el archivo de cabecera en
formato Analyze 7.5 utilizando la ordenacin de bits especificada en la variable endi an.
La ordenacin de bits especificada puede tomar los siguiente valores:
Valor Significado
' i eee- l e'
Ordenacin de bytes tipo Little Endian (guarda el byte menos significativo
en la direccin ms baja)
' i eee- be'
Ordenacin de bytes tipo Big Endian (guarda el byte ms significativo en
la direccin ms baja).
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 40 de 410
Si el valor especificado en endi an produce un error de lectura, anal yze75i nf o dar un
aviso y proceder a leer la cabecera con el formato de Byt eOr der opuesto.
Ejemplos de uso
Ejemplo 1: Leer el archivo de cabecera especificando la ordenacin de bytes del conjunto
de datos:
i nf o = anal yze75i nf o( ' br ai nMRI ' , ' Byt eOr der ' , ' i eee- l e' ) ;
Funciones relacionadas
anal yze75r ead

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 41 de 410
analyze75read
Lectura de los datos de imagen de un conjunto de datos en formato
Analyze 7.5
Introduccin
Analyze 7.5 es un producto de software para la visualizacin y anlisis de imgenes
biomdicas en 3-D cuyo formato de datos se cre para guardar imgenes de resonancias
magnticas (MRI). Sus archivos de salida son dos: una cabecera y una imagen, con el
mismo nombre y diferentes extensiones. El archivo de cabecera (ar chi vo. hdr )
proporciona informacin a cerca de las dimensiones, identificacin y procesado y se lee
mediante la funcin anal yze75i nf o. El archivo de imagen (ar chi vo. i mg) guarda los
datos de imagen cuyo tipo y orden se describen en el archivo de cabecera y se utiliza la
funcin anal yze75r ead para leer los datos.
Sintaxis
X = anal yze75r ead( f i l ename)
X = anal yze75r ead( i nf o)
Descripcin
X = anal yze75r ead( f i l ename) lee los datos de imagen del conjunto de datos en formato
Analyze 7.5 especificado en la cadena f i l ename. La funcin guarda los datos de la imagen
en la variable X. Para imgenes de un solo fotograma en escala de grises, X es un array de
m-por-n. anal yze75r ead utiliza para X un tipo de dato que es coherente con el tipo de dato
especificado en la cabecera del conjunto de datos.
X = anal yze75r ead( i nf o) lee los datos del archivo de imagen especificado en la
estructura de metadatos guardada en la variable i nf o, que debe ser una estructura vlida
devuelta por la funcin anal yze75i nf o.
X puede ser de tipo l ogi cal , ui nt 8, i nt 16, i nt 32, si ngl e, o doubl e. No es posible
utilizar los tipos de datos complejos y RGB.
Nota: anal yze75r ead devuelve los datos de imagen con orientacin radiolgica
(LAS) que es el tipo por defecto en el formato Analyze 7.5. Por tanto, para
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 42 de 410
visualizar la imagen correctamente en MATLAB

se deben girar los datos usando


el cdigo: X = f l i pdi m( X, 1) ;
Ejemplos de uso
Ejemplo 1: Leer los datos de imagen de un archivo de imagen formato Analyze 7.5.
%Leemos y gi r amos l os dat os par a vi sual i zar l a i magen cor r ect ament e.

X = anal yze75r ead( ' br ai nMRI ' ) ;
X = f l i pdi m( X, 1) ;

%Sel ecci onamos t odos l os f ot ogr amas en l a f unci n r eshape cr eando un
ar r ay r edi mensi onado adecuado par a l a f unci n mont age , que al ser
i mgenes en escal a de gr i ses, deber t ener un ar r ay de ent r ada de M- por -
N- por - 1- por - K ( donde K es el nmer o t ot al de f ot ogr amas a most r ar ) par a
poder r eal i zar cor r ect ament e el mont aj e de i mgenes.

Y = r eshape( X, [ si ze( X, 1) si ze( X, 2) 1 si ze( X, 3) ] ) ;

%Real i zamos el mont aj e usando el mapa de col or gr ay ( escal a de gr i ses) .

mont age( Y, gr ay) ;


Figura f.13 - Lectura de imagen formato Analyze 7.5 y montaje
Ejemplo 2: Leer los datos de imagen a partir de la lectura de los metadatos de la cabecera.
i nf o = anal yze75i nf o( ' br ai nMRI . hdr ' ) ;
X = anal yze75r ead( i nf o) ;
Funciones relacionadas
anal yze75i nf o
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 43 de 410
applycform
Transformacin del espacio de color
Sintaxis
B = appl ycf or m( A, C)
Descripcin
B = appl ycf or m( A, C) convierte los valores de color de A al espacio de color especificado
en la estructura de transformacin de color C. Esta estructura de transformacin de color
especifica varios parmetros de la transformacin y se crea mediante la funcin
makecf or m.
Si A es bidimensional, cada fila se interpreta como un color a menos que la estructura de
transformacin de color contenga un perfil ICC (International Color Consortium) en
escala de grises, en cuyo caso, appl ycf or minterpreta cada pixel como un color. B tiene el
mismo tamao que A. A puede tener una o ms columnas, dependiendo del espacio de color
de entrada. B tiene el mismo nmero de filas y una o ms columnas dependiendo del
espacio de color de salida (las especificaciones del ICC contemplan hasta 15 espacios de
color).
Si A es tridimensional, cada localizacin fila-columna se interpreta como un color y
si ze( A, 3) es normalmente 1 o ms, dependiendo del espacio de color de entrada. B tiene
el mismo nmero de filas y columnas que A y si ze( B, 3) es 1 o ms, dependiendo del
espacio de color de salida.
A es un array real no disperso de tipo ui nt 8, ui nt 16, doubl e o una cadena. A es solo una
cadena si C se cre con la siguiente sintaxis: C = makecf or m( ' named' , pr of i l e,
space) . El array de salida B ser de la misma clase que A salvo cuando el espacio de
salida sea XYZ.
Ejemplos de uso
Ejemplo 1: Transformar el espacio de color de una imagen pasando de sRGB a L*a*b*
creando una estructura de transformacin de color previa.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 44 de 410
%Lect ur a de una i magen en col or que usa el espaci o de col or sRGB.

r gb = i mr ead( ' pepper s. png' ) ;

%Cr eamos l a est r uct ur a de t r ansf or maci n de sRGB a LAB.

C = makecf or m( ' sr gb2l ab' ) ;

%Apl i camos l a t r ansf or maci n.

l ab = appl ycf or m( r gb, C) ;
Funciones relacionadas
l ab2doubl e, l ab2ui nt 16, l ab2ui nt 8, makecf or m, whi t epoi nt , xyz2doubl e,
xyz2ui nt 16

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 45 de 410
applylut
Operaciones de vecindad en imgenes binarias con tablas de consulta
Introduccin
Ciertas operaciones con imgenes binarias se puede implementar de manera ms eficiente
utilizando tablas de consulta (LUT, lookup table), una estructura de datos utilizada para
reemplazar un clculo por una operacin ms simple de indexado de un array. La idea es
calcular de antemano la salida para cada posible configuracin de vecindad y guardar el
resultado en una tabla para utilizarla posteriormente con un simple indexado. Las tablas de
consulta se crean con la funcin makel ut o directamente a mano si la funcin a evaluar es
sencilla.
La funcin appl yl ut se engloba dentro de las funciones utilizadas en el procesado
morfolgico de una imagen, especialmente en las tcnicas de dilatacin y erosin. Con esta
funcin se puede realizar ms rpido la transformacin de localizacin llevada a cabo por
la funcin bwhi t mi ss cuando los elementos estructurantes utilizados son pequeos.
Sintaxis
A = appl yl ut ( BW, LUT)
Descripcin
appl yl ut realiza una operacin de vecindad en una imagen binaria produciendo primero
un ndice para cada vecindad de la imagen (ndice nico para cada posible configuracin
de vecindad) que permitir localizar en la tabla de consulta l ut el valor de salida para esa
configuracin de vecindad. El tipo de algoritmo utilizado depende de si se usan vecindades
de 2-por-2 o 3-por-3.
A = appl yl ut ( BW, LUT) realiza una operacin de vecindad de 2-por-2 o 3-por-3 en la
imagen binaria BWutilizando una tabla de consulta LUT, que es un vector binario de 16
elementos (vecindad de 2-por-2) o de 512 elementos (vecindad de 3-por-3) devuelto por la
funcin makel ut y que contiene la salida (positiva o negativa) a una funcin determinada,
para cada una de las 16 o 512 posibles vecindades binarias.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 46 de 410
BWpuede ser del tipo numer i c o l ogi cal y debe ser real, bidimensional y no disperso. LUT
puede ser numer i c o l ogi cal y debe ser un vector real con 16 o 512 elementos. Si todos
los elementos de LUT son 0 o 1, entonces A es l ogi cal . Si todos los elementos de LUT son
enteros entre 0 y 255, entonces A es ui nt 8. Para el resto de casos, A es doubl e.
Ejemplos de uso
Ejemplo 1: Al trabajar con tablas de consulta, se le asigna un nmero diferente a cada
configuracin de vecindad posible para luego poder indexarlas fcilmente. Esto se hace
multiplicando elemento a elemento cada configuracin de vecindad por la matriz:
1 4
2 8
1 8 64
2 16 128
4 32 256
para el caso de 2-por-2 para el caso de 3-por-3
y sumando posteriormente todos los productos, lo que nos dar un valor entre 0 y 15 para
vecindades de 2-por-2 o entre 0 y 511 para vecindades de 3-por-3.
Siguiendo este procedimiento, crear una tabla de consulta para el patrn siguiente:
0 0 0
0 1 0
1 1 1

%Lo pr i mer o es cal cul ar el val or del ndi ce del pat r n dado: 0x1 + 0x2 +
1x4 + 0x8 + 1x16 + 1x32 + 0x64 + 0x128 + 1x256 = 4 + 16 + 32 + 256 = 308.

%Cr eamos l a t abl a de consul t a poni endo a 1 el ndi ce ant er i or , l o que
si gni f i ca que par a el pat r n dado, l a sal i da es ver dader a, si endo f al sa o
nul a par a el r est o de conf i gur aci ones de veci ndad posi bl es:

l ut = zer os( 512, 1) ;
l ut ( 309) = 1;
Ejemplo 2: Realizar una transformacin morfolgica de erosin a una imagen (reducir el
nivel de los pxeles del entorno, los objetos de tamao menor al del objeto estructurante
desaparecen) utilizando una vecindad de 2-por-2 y diferentes tablas de consulta en funcin
de nmero de unos en la vecindad.
%Cr eamos l a t abl a de consul t a con makel ut que pasa una a una t odas l as
veci ndades de 2- por - 2 a l a f unci n especi f i cada y guar da el r esul t ado. En
est e caso, l a f unci n devuel ve TRUE si el nmer o de 1' s en l a veci ndad
pasada es 4 y devuel ve FALSE en caso cont r ar i o.

l ut = makel ut ( ' sum( x( : ) ) == 4' , 2) ;

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 47 de 410
%Leemos una i magen bi nar i a y l e apl i camos di f er ent es er osi ones.

BW= i mr ead( ' er osi on_i n. png' ) ;
BW2 = appl yl ut ( BW, l ut ) ;
f i gur e, i mshow( BW) ; f i gur e, i mshow( BW2) ;

%Cr eamos ot r a t abl a de consul t a en donde l a f unci n devuel ve TRUE si el
nmer o de 1' s en l a veci ndad es 2 y devuel ve FALSE en caso cont r ar i o.

l ut = makel ut ( ' sum( x( : ) ) == 2' , 2) ;
BW3 = appl yl ut ( BW, l ut ) ;
f i gur e, i mshow( BW3)

%Cr eamos ot r a t abl a de consul t a en donde l a f unci n devuel ve TRUE si el
nmer o de 1' s en l a veci ndad es 1 y devuel ve FALSE en caso cont r ar i o.

l ut = makel ut ( ' sum( x( : ) ) == 1' , 2) ;
BW4 = appl yl ut ( BW, l ut ) ;
f i gur e, i mshow( BW4)


Figura f.14 - Imagen original (BW) sin procesar Figura f.15 - Imagen procesada (BW2) con applylut


Figura f.16 - Imagen procesada (BW3) con applylut Figura f.17 - Imagen procesada (BW4) con applylut
Funciones relacionadas
bwhi t mi ss, makel ut
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 48 de 410
axes2pix
Conversin de coordenadas en ejes a coordenadas en pxeles
Sintaxis
pi xel x = axes2pi x( di m, XDATA, AXESX)
Descripcin
pi xel x = axes2pi x( di m, XDATA, AXESX) convierte una coordenada en ejes (como la
devuelta por get ( gca, ' Cur r ent Poi nt ' ) por ejemplo) a una coordenada en pxeles
(recomendada para localizaciones dentro de imgenes).
AXESX debe estar en coordenadas intrnsecas (coordenadas tales que la esquina superior
izquierda de la imagen est en las coordenadas (0.5,0.5) y la esquina inferior derecha de la
imagen est en (numCol s +0.5, numRows +0.5). Estas coordenadas coinciden con las
coordenadas en forma de fila y columna de cada pixel (ndice de pxeles) si estn referidas
al centro de los pxeles, pero de forma inversa (el centro de la fila 2 y la columna 3 se
corresponden con x=3 e y=2 en coordenadas intrnsecas).

Figura f.18 - Coordenadas intrnsecas
XDATA es un vector de dos elementos devuelto por get ( i mage_handl e, ' XDat a' ) o
get ( i mage_handl e, ' YDat a' ) que devuelven las propiedades 'XData' e 'YData'
respectivamente. Estas propiedades controlan el sistema de coordenadas de la imagen y
son por defecto [1 n] y [1 m] respectivamente para una imagen de m-por-n, lo que conlleva
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 49 de 410
a que la columna de la izquierda de la imagen tenga una coordenada x=1 y la fila de arriba
tenga una coordenada y=1).
di mes el nmero de columnas que tiene la imagen para la coordenada x o el nmero de
filas que tiene para la coordenada y.
di m, XDATA, y AXESX pueden ser de clase doubl e. La salida es de clase doubl e.
axes2pi x realiza un chequeo mnimo de la validez de las variables AXESX, DI M, o XDATA.
Por ejemplo, axes2pi x devuelve una coordenada negativa si AXESX es menor que
XDATA( 1) . La funcin axes2pi x no est diseada para detectar errores.
Ejemplos de uso
Ejemplo 1: Pasar la coordenada (30,30) a coordenada en pxeles con los valores por
defecto de XData e YData (sistema de coordenadas espaciales por defecto).
%Most r amos l a i magen con l os ej es por def ect o.

h = i mshow( ' i maget est . t i f ' ) ;

%Recogemos el val or de xdat a e ydat a por def ect o.

xdat a = get ( h, ' XDat a' ) ;
ydat a = get ( h, ' YDat a' ) ;

%Conver t i mos l as coor denadas.

[ nr ows, ncol s] = si ze( get ( h, ' CDat a' ) ) ;
px = axes2pi x( ncol s, xdat a, 30)
py = axes2pi x( nr ows, ydat a, 30)

px =
88. 1339

py =
30
Ejemplo 2: Pasar la coordenada (30,30) a coordenada en pxeles con los valores no por
defecto de XData e YData (sistema de coordenadas espaciales no por defecto) y
comparando cmo se muestra la imagen en cada sistema de coordenadas.
%Most r amos l a i magen con l os ej es por def ect o.

h = i mshow( ' i maget est . t i f ' ) ;

%Def i ni mos un val or de xdat a e ydat a.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 50 de 410

xdat a = [ 10 100] ;
ydat a = [ 20 90] ;

%Conver t i mos l as coor denadas.

[ nr ows, ncol s] = si ze( get ( h, ' CDat a' ) ) ;
px = axes2pi x( ncol s, xdat a, 30)
py = axes2pi x( nr ows, ydat a, 30)

%Most r amos l a i magen en el nuevo si st ema de coor denadas.

r = i mr ead( ' i maget est . t i f ' ) ;
f i gur e, i mage( r , ' XDat a' , xdat a, ' YDat a' , ydat a) ;

px =
290. 1111

py =
49. 7143


Figura f.19 - Imagen (r) con XData e YData por
defecto
Figura f.20 - Imagen (r) con XData=[10 100] e
YData=[20 90]
Funciones relacionadas
i mpi xel i nf o, bwsel ect , i mf i l l , i mpi xel , i mpr of i l e, r oi pol y

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 51 de 410
bestblk
Determinacin del tamao de bloque ptimo para el procesado por
bloques
Sintaxis
si z = best bl k( [ mn] , k)
[ mb, nb] = best bl k( [ mn] , k)
Descripcin
si z = best bl k( [ m n] , k) devuelve, para una imagen de m-por-n, el tamao ptimo de
bloque para el procesado por bloques. k es un escalar que especifica las mximas
dimensiones de la fila y la columna del bloque; si se omite, se toma 100 como valor por
defecto. El valor devuelto si z es un vector de 1-por-2 que contiene las dimensiones
ptimas de la fila y la columna del bloque.
[ mb, nb] = best bl k( [ m n] , k) guarda las dimensiones de la fila y de la columna del
bloque en mb y nb respectivamente.
Eligiendo un tamao apropiado de bloque se puede mejorar significativamente el
rendimiento del procesado por bloques.
Ejemplos de uso
Ejemplo 1: Determinar el tamao ptimo de bloque para una imagen de 640 por 800
pxeles:
si z = best bl k( [ 640 800] , 72)

si z =
64 50
Funciones relacionadas
bl ockpr oc

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 52 de 410
blockproc
Procesado de una imagen por bloques
Introduccin
El procesado de una imagen por bloques es una tcnica en la que la imagen se procesa en
bloques o regiones en vez de hacerse de una sola vez. La operacin se aplica a cada bloque
por separado y finalmente se unen todos los bloques para formar la imagen de salida. Es
til normalmente para el procesado de imgenes muy grandes.
Sintaxis
B = bl ockpr oc( A, [ M N] , f un)
B = bl ockpr oc( sr c_f i l ename, [ M N] , f un)
B = bl ockpr oc( adapt er , [ M N] , f un)
bl ockpr oc( . . . , param, val, . . . )
Descripcin
B = bl ockpr oc( A, [ M N] , f un) procesa la imagen A aplicando la funcin f un a cada
bloque distinto de M-por-N de A, concatenando los resultados en la matriz de salida B. Estas
secciones o bloques diferentes, cubren la imagen empezando por la esquina superior
izquierda, sin solaparse. Si los bloques no encajan perfectamente encima de la imagen, se
puede aadir un relleno a la imagen o trabajar con bloques parciales en los bordes derecho
o inferior de la imagen (por defecto).
f un es una referencia o puntero a una funcin (function handle) que acepta una estructura
de bloque (block struct) como entrada y devuelve una matriz, un vector o un escalar Y. Por
ejemplo, Y = f un( bl ock_st r uct ) . bl ockpr oc pasa cada bloque de dato de la imagen de
entrada A a la funcin f un, que produce Y, el bloque correspondiente en la imagen de
salida. Si Y est vaco, bl ockpr oc no genera ninguna salida y vuelve vaca despus de
procesar todos los bloques. Eligiendo un tamao apropiado de bloque se puede mejorar
significativamente el rendimiento. Ms detalles sobre las estructuras de bloque (block
struct) al final de la definicin de parmetros.
B = bl ockpr oc( sr c_f i l ename, [ M N] , f un) procesa la imagen sr c_f i l ename, leyendo
y procesando un bloque cada vez en lugar de leerla toda primero con i mr ead. Esta sintaxis
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 53 de 410
es apropiada para procesar imgenes muy grandes ya que as solo se almacena un bloque
de imagen en memoria cada vez. Si la matriz de salida B es demasiado grande para
almacenarse en memoria se debe omitir el guardar la salida en esa variable y escribir cada
bloque directamente en un archivo, especificndolo con el parmetro ' Dest i nat i on' .
B = bl ockpr oc( adapt er , [ M N] , f un) procesa la imagen especificada por adapt er , que
es un objeto I mageAdapt er ( clase definida por el usuario que le proporciona a bl ockpr oc
una API para la lectura y escritura de un formato especfico de imagen).
bl ockpr oc( . . . , param, val, . . . ) procesa la imagen de entrada teniendo en cuenta
determinados parmetros que controlan varios aspectos del comportamiento de los
bloques. Los parmetros no son sensibles a las maysculas:
Parmetro Valor
' Bor der Si ze'
Vector de dos elementos [ V H] que especifica la cantidad de
pxeles de borde a aadir a cada bloque, borde que se eliminar
por defecto del resultado de fun (ver parmetro ' Tr i mBor der ' )
y que por tanto no aparecer en la composicin final. La funcin
lo aade V filas encima y debajo de cada bloque y H columnas a la
izquierda y derecha de cada bloque. El tamao final de cada
bloque ser:
[ M + 2*V, N + 2*H]
El valor por defecto es [ 0 0] , que significa sin borde. Por
defecto, la funcin elimina el borde automticamente del
resultado de f un. Consultar el parmetro ' Tr i mBor der ' para ms
informacin. La funcin rellena los bloques con bordes usando
ceros.
(Por defecto: [ 0 0] (sin borde))
' Dest i nat i on'
Especifica el destino de la salida de bl ockpr oc. Cuando se
especifica, bl ockpr oc no devuelve la imagen procesada como un
argumento de salida sino que escribe la salida en ese destino
especificado. Los valores posibles de ' Dest i nat i on' son:
Nombre de archivo en formato TIFF: una cadena acabada
en la extensin ' . t i f ' . Si la imagen ya existe, se
sobrescribir.
Objeto I mageAdapt er : una instancia de una clase
I mageAdapt er que permite la lectura y escritura en
archivos de imagen no comunes. Ms informacin en la
pgina dedicada a I mageAdapt er (p. 333)
El parmetro ' Dest i nat i on' es til cuando esperas que la salida
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 54 de 410
sea demasiado grande para caber en memoria.
' PadPar t i al Bl ocks'
Un escalar tipo l ogi cal .
Cuando tiene valor t r ue, bl ockpr oc rellena los bloques parciales
para hacerlos tamao completo (M-por-N). Si hay bloques
parciales estarn en el borde derecho e inferior de la imagen.
bl ockpr oc usa ceros para rellenar los bloques parciales.
Por defecto es f al se, lo que significa que no se rellenan los
bloques parciales y se procesan con el tamao especificado.
(Por defecto: f al se)
' PadMet hod'
El mtodo de relleno o ' PadMet hod' determina cmo bl ockpr oc
rellenar las fronteras entre bloques. Estas son las opciones:
X: Rellena con un valor de relleno escalar (X). (Por
defecto: X == 0)
' r epl i cat e' : Repite los bordes de la imagen de entrada.
' symmet r i c' : Rellena la imagen con reflejos de s misma.
' Tr i mBor der '
Un escalar tipo l ogi cal .
Cuando tiene valor t r ue, la funcin bl ockpr oc recorta pxeles
del borde en la salida de la funcin de usuario, f un. La funcin
elimina V filas de la parte superior e inferior de la salida de f un y
H columnas de los bordes izquierdo y derecho. V y H los define el
parmetro ' Bor der Si ze' .
El valor por defecto es t r ue, lo que significa que la funcin
elimina automticamente los bordes de la salida de f un.
(Por defecto: t r ue)
' UsePar al l el '
Un escalar tipo l ogi cal .
Cuando tiene valor t r ue, la funcin bl ockpr oc intentar trabajar
en modo paralelo, distribuyendo el procesado a travs de
diferentes sesiones de trabajo MATLAB si se cuenta con la
toolbox para el clculo en paralelo. Cuando se trabaja en modo
paralelo, la imagen de entrada ya no puede ser un objeto
I mageAdapt er .
Los archivos de entrada y salida de bl ockpr oc (especificados en los parmetros
sr c_f i l ename y ' Dest i nat i on' ) deben tener las siguientes extensiones:
Formatos de lectura/escritura: TIFF (*.tif, *.tiff), J PEG2000 (*.jp2, *.j2c, *.j2k)
Formatos de solo lectura: J PEG2000 (*.jpf, *.jpx)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 55 de 410
Estructuras de bloque (block struct)
Una estructura de bloque en MATLAB contiene los datos del bloque as como otra
informacin relativa. Estos son los campos de la estructura:
bl ock_st r uct . bor der : vector de dos elementos [ V H] que especifica el tamao
del relleno vertical y horizontal alrededor del bloque de datos. Relacionado con el
parmetro de entrada ' Bor der Si ze' .
bl ock_st r uct . bl ockSi ze: vector de dos elementos [ r ows col s] , que especifica
el tamao del bloque de datos. Si se ha definido un borde su tamao no se cuenta.
bl ock_st r uct . dat a: matriz de M-por-N o M-por-N-por-P con los datos del bloque.
bl ock_st r uct . i mageSi ze: vector de dos elementos [ r ows col s] , que especifica
el tamao completo de la imagen de entrada.
bl ock_st r uct . l ocat i on: vector de dos elementos [ r ow col ] , que especifica la
posicin del primer pixel (menor-fila, menor-columna) de los datos del bloque en la
imagen de entrada. Si se ha definido un borde, se refiere al primer pixel sin borde.
Ejemplos de uso
Ejemplo 1: Crear una miniatura de una imagen grande utilizando procesado por bloques,
sin tener que leer la imagen entera en memoria.
Utilizar procesado por bloques para redimensionar una imagen puede que no produzca los
mismos resultados que redimensionarla toda de una vez (I 2=i mr esi ze( I , 0. 7) ) debido a
los efectos de los bordes en los bloques.
%Guar damos l a f unci n r edi mensi onar est r uct ur a de dat os a escal a 0. 7
en l a var i abl e f un.

f un = @( bl ock_st r uct ) i mr esi ze( bl ock_st r uct . dat a, 0. 7) ;

%Pr ocesamos l a i magen por bl oques con l a f unci n especi f i cada, usando un
t amao de bl oque de 100 por 100 y guar dando cada bl oque en l a i magen
f i nal ' pappl es. t i f ' .

bl ockpr oc( ' appl es. t i f ' , [ 100 100] , f un, ' Dest i nat i on' , ' pappl es. t i f ' ) ;

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 56 de 410

Figura f.21 - Imagen original (apples.tif) sin
procesar
Figura f.22 - Imagen redimensionada (papples.tif)
por bloques con blockproc
Ejemplo 2: Intercambiar los canales de color rojo y verde de una imagen RGB y escribir el
resultado en una nueva imagen utilizando procesando por bloques.
I = i mr ead( ' appl es. t i f ' ) ;
i mshow( I )

%Cr eamos l a var i abl e f unci n par a i nt er cambi ar l os canal es.

f un = @( bl ock_st r uct ) bl ock_st r uct . dat a( : , : , [ 2 1 3] ) ;

%Pr ocesamos por bl oques. Se podr a hacer di r ect ament e si n bl oques usando
el cdi go: I 2=I ( : , : , [ 2 1 3] ) .

bl ockpr oc( I , [ 200 200] , f un, ' Dest i nat i on' , ' gr b. t i f ' ) ;
f i gur e, i mshow( ' gr b. t i f ' )


Figura f.21 - Imagen original (I) sin procesar Figura f.23 - Imagen procesada (grb.tif) por bloques
con blockproc intercambiando sus canales
Ejemplo 3: Aplicar un filtro Gaussiano a una imagen utilizando procesado por bloques.
%Leemos una i magen de 512 por 512 p xel es.

I = i mr ead( ' appl es512. t i f ' ) ;
i mshow( I )
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 57 de 410

%Cr eamos un f i l t r o pasobaj o Gaussi ano de 5 f i l as por 5 col umnas.

h = f speci al ( ' gaussi an' , 5, 2) ;

%Cr eamos l a f unci n que pr ocesar ( f i l t r ar ) cada bl oque.

f un = @( bl ock_st r uct ) i mf i l t er ( bl ock_st r uct . dat a, h) ;

%Pr ocesamos con bl oques de 128 por 128 p xel es que l l enan l a i magen si n
necesi t ar bl oques par ci al es y most r amos el r esul t ado. Apar ecer n bor des
negr os i ndeseabl es no evi t abl es en cada bl oque, cr eados por l a f unci n de
f i l t r ado i mf i l t er par a r el l enar cada bl oque.

P1 = bl ockpr oc( I , [ 128 128] , f un) ;
f i gur e, i mshow( P1)

%Pr ocesamos i gual que ant es per o especi f i cando un bor de de 2 p xel es en
cada bl oque y que no se el i mi ne el bor de al componer l a i magen f i nal ,
par a ver cmo est os bor des caen exact ament e enci ma de l os i ndeseados que
gener ar el f i l t r ado y se evi t a as l a pr di da de i nf or maci n. El t amao
f i nal aument a per o l os bor des no el i mi nan i nf or maci n de l a i magen y
est n l i st os par a ser el i mi nados.

P2 = bl ockpr oc( I , [ 128 128] , f un, ' Bor der Si ze' , [ 2 2] , ' Tr i mBor der ' , f al se) ;
f i gur e, i mshow( P2)

%Pr ocesamos de nuevo per o especi f i cando que s se bor r en l os bor des
super puest os par a dej ar l a i magen pr ocesada si n bor des y si n pr di das.

P3 = bl ockpr oc( I , [ 128 128] , f un, ' Bor der Si ze' , [ 2 2] ) ;
f i gur e, i mshow( P3)


Figura f.24 - Imagen original (I) sin procesar

Figura f.25 - Imagen procesada (P1) por bloques con
blockproc con filtro Gaussiano y bordes indeseados
creados por el filtrado de cada bloque

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 58 de 410

Figura f.26 - Imagen procesada (P2) por bloques con
blockproc con filtro Gaussiano, usando bordes
aadidos no eliminados que caen encima de los que
crear el filtrado y evitan as la prdida de
informacin
Figura f.27 - Imagen procesada (P3) por bloques
con blockproc, usando bordes aadidos y
eliminados
Ejemplo 4: Comprimir una imagen en escala de grises utilizando la DCT (Transformada
de coseno discreta) mediante procesado por bloques.
%Leemos i magen or i gi nal , su t amao y l a most r amos.

I = i mr ead( ' r ueda. j pg' ) ;
DI R = di r ( ' r ueda. j pg' ) ;
t amor i g=DI R. byt es
i mshow( I )

I 2=i m2doubl e( I ) ;

%Mat r i z DCT de 8x8 en f or mat o doubl e.

T=dct mt x( 8) ;

%Pr ocesado de l a i magen en bl oques de 8x8 ( cada bl oque suf r e l a
t r ansf or mada DCT mat r i ci al si n pr di da de i nf or maci n) .

B1 = bl kpr oc( I 2, [ 8 8] , ' P1*x*P2' , T, T' ) ;

%Def i ni mos l a mscar a que el i mi nar r edundanci a ( compr esi n) .
%El i mi na l as f r ecuenci as al t as, en donde suel e est ar l a r edundanci a.

mask = [ 1 1 1 0 0 0 0 0
1 0 0 0 0 0 0 0
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 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0] ;

%Uso l a mscar a par a el i mi nar r edundanci a.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 59 de 410

B2=bl kpr oc( B1, [ 8 8] , ' P1. *x' , mask) ;

%Hacemos l a DCT i nver sa par a ver el r esul t ado.

I 3=bl kpr oc( B2, [ 8 8] , ' P1*x*P2' , T' , T) ;

%Guar damos i magen compr i mi da y l eemos su t amao.

f i gur e, i mshow( I 3)
i mwr i t e ( I 3, ' pr ueda. j pg' ) ;
DI R = di r ( ' pr ueda. j pg' ) ;
t ampr oc=DI R. byt es

t amor i g =
513288

t ampr oc =
50984


Figura f.28 - Imagen original (I) sin procesar Figura f.29 - Imagen comprimida (I3) por bloques
con blockproc
Funciones relacionadas
col f i l t , f unct i on_handl e, I mageAdapt er , nl f i l t er
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 60 de 410
bwarea
rea de objetos activos en una imagen binaria
Sintaxis
t ot al = bwar ea( BW)
Descripcin
t ot al = bwar ea( BW) estima el rea en pxeles de los objetos activos presentes en la
imagen binaria BW. t ot al es un escalar cuyo valor corresponde aproximadamente al
nmero total de pxeles activos en la imagen, pero puede no ser exacto ya que cada patrn
de pxeles se cuenta de forma diferente. Para pasar de rea en pxeles a rea en unidades
mtricas solo debemos conocer el rea del pixel en unidades mtricas y multiplicar por el
nmero total de pxeles.
BWpuede ser del tipo numer i c o l ogi cal . Para entradas numricas, cualquier pixel distinto
de cero se considera activo (blanco, 1). El valor de salida devuelto (t ot al ) es de tipo
doubl e.
Ejemplos de uso
Ejemplo 1: Calcular el rea de los objetos activos de dos imgenes binarias de 256-por-
256 pxeles.
BW= i mr ead( ' ar ea. t i f ' ) ;
BW2 = i mr ead( ' ar ea2. t i f ' ) ;

f i gur e, i mshow( BW)
t ot al p = bwar ea( BW)

f i gur e, i mshow( BW2)
t ot al p2 = bwar ea( BW2)

t ot al p =
1. 1281e+005

t ot al p2 =
2. 2561e+005

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 61 de 410

Figura f.30 - Imagen (BW) con objeto activo Figura f.31 - Imagen (BW2) con doble objeto activo

Funciones relacionadas
bweul er , bwper i m

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 62 de 410
bwareaopen
Borrado de objetos conectados en imagen binaria
Sintaxis
BW2 = bwar eaopen( BW, P)
BW2 = bwar eaopen( BW, P, conn)
Descripcin
BW2 = bwar eaopen( BW, P) elimina de una imagen binaria todos los objetos conectados
que tengan menos que P pxeles, produciendo otra imagen binaria BW2. La conectividad por
defecto es de 8 pxeles para dos dimensiones, 26 para tres dimensiones y
conndef ( ndi ms( BW) , ' maxi mal ' ) para mayores dimensiones.
BW2 = bwar eaopen( BW, P, conn) especifica la conectividad deseada en la variable
conn, que puede tener los siguientes valores escalares (siempre simtrica respecto su
elemento central):
Valor Significado
Conectividades Bidimensionales
4
Vecindad de 4 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos y
conectados en vertical u horizontal.

Figura f.32 - vecindad 4
8
Vecindad de 8 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos.
(Por defecto)

Figura f.33 - vecindad 8
Conectividades Tridimensionales
6
Vecindad de 6 pxeles.
18
Vecindad de 18 pxeles.
26
Vecindad de 26 pxeles. (Por defecto)
Nota: La conectividad se puede definir para cualquier dimensin de forma ms
general utilizando para conn una matriz de 3-por-3-por-...-por-3 de ceros y unos.
Los unos definen las localizaciones de los pxeles vecinos relativas al elemento
central de conn. Por ejemplo, conn=ones( 3) define una conectividad de 8 pxeles.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 63 de 410
BWpuede ser un array del tipo numer i c o l ogi cal de cualquier dimensin y debe ser no
disperso. BW2, el valor devuelto, es de tipo l ogi cal .
Ejemplos de uso
Ejemplo 1: Borrar de la imagen binaria t ext . png todos los objetos conectados (con
vecindad de 8) que contengan menos de 700, 1000 y 1200 pxeles.
BW= i mr ead( ' t ext . t i f ' ) ;
BW2 = bwar eaopen( BW, 700) ;
BW3 = bwar eaopen( BW, 1000) ;
BW4 = bwar eaopen( BW, 1200) ;
f i gur e, i mshow( BW)
f i gur e, i mshow( BW2)
f i gur e, i mshow( BW3)
f i gur e, i mshow( BW4)


Figura f.34 - Imagen original (BW) sin procesar Figura f.35 - Imagen procesada (BW2) con
bwareaopen con P=700 pxeles mnimos


Figura f.36 - Imagen procesada (BW3) con
bwareaopen con P=1000 pxeles mnimos
Figura f.37 - Imagen procesada (BW4) con
bwareaopen con P=1200 pxeles mnimos
Funciones relacionadas
bwconncomp, conndef
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 64 de 410
bwboundaries
Clculo de las fronteras de los objetos de una imagen binaria
Sintaxis
B = bwboundar i es( BW)
B = bwboundar i es( BW, conn)
B = bwboundar i es( BW, conn, opt i ons)
[ B, L] = bwboundar i es( . . . )
[ B, L, N, A] = bwboundar i es( . . . )
Descripcin
B = bwboundar i es( BW) calcula las fronteras exteriores de los objetos de la imagen binaria
BW, as como las fronteras de los huecos que estn dentro de los objetos. bwboundar i es
adems calcula las fronteras de los objetos hijos que estn dentro de los objetos padre.
A diferencia de la funcin bwt r aceboundar y, que solo calcula la frontera de un objeto,
bwboundar i es calcula todas las fronteras de todos los objetos y huecos.

Figura f.38 - Objetos padre e hijo
BWdebe ser una imagen binaria donde los pxeles distintos de cero sean los objetos y los
pxeles con valor 0 sean el fondo de la imagen.
bwboundar i es devuelve B, una matriz de P-por-1 celdas donde P es el nmero de objetos y
huecos. Cada celda en la matriz contiene una matriz de Q-por-2 y cada fila de la matriz
contiene las coordenadas en fila y columna de un pixel frontera. Q es el nmero de pxeles
frontera para la regin correspondiente.
B = bwboundar i es( BW, conn) especifica la conectividad a usar cuando se trazan fronteras
padre-hijo. conn puede tener los siguientes valores escalares:
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 65 de 410
Valor Significado
4 Vecindad de 4 pxeles.
8 Vecindad de 8 pxeles.
(Por defecto)
B = bwboundar i es( BW, conn, opt i ons) especifica un argumento opcional en el que la
variable opt i ons puede tomar los siguientes valores:
Valor Significado
' hol es'
Busca fronteras de tanto objetos como huecos. (Por defecto)
' nohol es'
Busca solo fronteras de objetos (padres e hijos). Puede mejorar el
rendimiento.
[ B, L] = bwboundar i es( . . . ) devuelve la matriz de etiquetas L como segundo parmetro
de salida, en la que estn etiquetados los objetos y los huecos. L es un array bidimensional
de enteros no negativos que representa regiones contiguas. La regin nmero k incluye
todos los elementos en L que tienen el valor k. El nmero de objetos y huecos representado
por L es igual a max( L( : ) ) . Los valores que valen 0 en L forman el fondo de la imagen.
[ B, L, N, A] = bwboundar i es( . . . ) devuelve N, el nmero de objetos encontrados, y A,
una matriz de adyacencia (matriz cuadrada que se utiliza para representar relaciones
binarias). Las primeras N celdas de B son fronteras de objetos. A representa las
dependencias padre-hijo-hueco. A es una matriz cuadrada, tipo l ogi cal , con lado de
longitud max( L( : ) ) y cuyas filas y columnas corresponden a las posiciones de las fronteras
guardadas en B.
Las fronteras encerradas por B{m} y las fronteras que cubren a B{m} se pueden encontrar
utilizando A de la siguiente manera:
f r ont er as_que_cubr en = f i nd( A( m, : ) ) ;
f r ont er as_encer r adas = f i nd( A( : , m) ) ;
BWpuede ser del tipo numer i c o l ogi cal y debe ser real, bidimensional y no disperso. L y
N son doubl e. A es logical disperso.
Ejemplos de uso
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 66 de 410
Ejemplo 1: Mostrar las fronteras de los objetos de una imagen binaria.
%Leemos i magen, et i quet amos obj et os y huecos y cr eamos f r ont er as.

BW= i mr ead( ' or i gi nal . t i f ' ) ;
[ B, L] = bwboundar i es( BW) ;

%Most r amos obj et os et i quet ados en L usando mapa de col or j et con f ondo
negr o y f r ont er as en bl anco.

i mshow( l abel 2r gb( L, @j et , [ . 0 . 0 . 0] ) )

%Recor r emos el ar r ay de l os p xel es f r ont er a de cada obj et o y hueco y
t r azamos l as f r ont er as.

hol d on
f or k = 1: l engt h( B)
boundar y = B{k};
pl ot ( boundar y( : , 2) , boundar y( : , 1) , ' w' , ' Li neWi dt h' , 2)
end

%Repet i mos per o ahor a sol o con obj et os, no con huecos.

[ B, L] = bwboundar i es( BW, ' nohol es' ) ;
f i gur e, i mshow( l abel 2r gb( L, @j et , [ . 0 . 0 . 0] ) )
hol d on
f or k = 1: l engt h( B)
boundar y = B{k};
pl ot ( boundar y( : , 2) , boundar y( : , 1) , ' w' , ' Li neWi dt h' , 2)
end


Figura f.39 - Imagen original (BW) sin procesar


Figura f.40 - Imagen procesada con bwboundaries
para sacar fronteras de objetos y huecos
Figura f.41 - Imagen procesada con bwboundaries
para sacar fronteras de objetos
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 67 de 410
Ejemplo 2: Mostrar las fronteras de los objetos de una imagen binaria. Pintar las fronteras
de los objetos en rojo y de los huecos en verde.
BW= i mr ead( ' or i gi nal . t i f ' ) ;
[ B, L, N] = bwboundar i es( BW) ;

f i gur e; i mshow( BW) ; hol d on;
f or k=1: l engt h( B) ,
boundar y = B{k};
i f ( k > N)
pl ot ( boundar y( : , 2) , . . .
boundar y( : , 1) , ' g' , ' Li neWi dt h' , 2) ;
el se
pl ot ( boundar y( : , 2) , . . .
boundar y( : , 1) , ' r ' , ' Li neWi dt h' , 2) ;
end
end


Figura f.39 - Imagen original (BW) sin procesar Figura f.42 - Imagen procesada con bwboundaries
para sacar fronteras de objetos y huecos
Ejemplo 3: Mostrar las fronteras de los objetos padre en rojo (cualquier fila vaca de la
matriz de adyacencias pertenece a un objeto padre) y sus huecos en verde.
BW= i mr ead( ' or i gi nal . t i f ' ) ;
[ B, L, N, A] = bwboundar i es( BW) ;

f i gur e; i mshow( BW) ; hol d on;
f or k=1: l engt h( B) ,
i f ( ~sum( A( k, : ) ) )
boundar y = B{k};
pl ot ( boundar y( : , 2) , . . .
boundar y( : , 1) , ' r ' , ' Li neWi dt h' , 2) ;
f or l =f i nd( A( : , k) ) '
boundar y = B{l };
pl ot ( boundar y( : , 2) , . . .
boundar y( : , 1) , ' g' , ' Li neWi dt h' , 2) ;
end
end
end

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 68 de 410

Figura f.39 - Imagen original (BW) sin procesar Figura f.43 - Imagen procesada con bwboundaries
para sacar fronteras de objetos y huecos
Ejemplo 4: Leer y mostrar una imagen binaria. Superponer las fronteras de la imagen.
Mostrar un texto indicando el nmero de regin (basado en la matriz de etiquetas) al lado
de cada frontera. Adicionalmente, representar la matriz de adyacencias utilizando la
funcin spy.
BW= i mr ead( ' or i gi nal . t i f ' ) ;
[ B, L, N, A] = bwboundar i es( BW) ;

f i gur e, i mshow( BW) ; hol d on;
col or s=[ ' b' ' g' ' r ' ' c' ' m' ' y' ] ;

%Recor r emos obj et os y huecos.

f or k=1: l engt h( B)
boundar y = B{k};
ci dx = mod( k, l engt h( col or s) ) +1;
pl ot ( boundar y( : , 2) , boundar y( : , 1) , col or s( ci dx) , ' Li neWi dt h' , 2) ;

%Al eat or i zamos l a posi ci n del t ext o par a una mej or vi si bi l i dad.

r ndRow = cei l ( l engt h( boundar y) / ( mod( r and*k, 7) +1) ) ;
col = boundar y( r ndRow, 2) ;
r ow = boundar y( r ndRow, 1) ;
h = t ext ( col +1, r ow- 1, num2st r ( L( r ow, col ) ) ) ;
set ( h, ' Col or ' , col or s( ci dx) , ' Font Si ze' , 14, ' Font Wei ght ' , ' bol d' ) ;
end
f i gur e; spy( A) ;


Figura f.39 - Imagen original (BW) sin procesar
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 69 de 410


Figura f.44 - Imagen procesada con bwboundaries para
sacar fronteras de objetos y huecos
Figura f.45 - Imagen que representa
la matriz de adyacencia de la imagen
original (BW)
Funciones relacionadas
bwl abel , bwl abel n, bwper i m, bwt r aceboundar y

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 70 de 410
bwconncomp
Bsqueda de componentes conectadas en una imagen binaria
Introduccin
Las funciones bwl abel , bwl abel n y bwconncomp calculan las componentes conectadas en
imgenes binarias. bwconncomp reemplaza el uso de bwl abel y bwl abel n usando mucha
menos memoria y es normalmente ms rpida que las otras funciones. Esta es una
comparativa de las funciones:
Funcin Dimensin de
entrada
Tipo de salida Uso de
memoria
Conectividad
bwl abel
2-D Matriz de etiquetas con
precisin doble.
Alto 4 o 8
bwl abel n
N-D Matriz de etiquetas con
precisin doble.
Alto Cualquiera
bwconncomp
N-D Estructura CC. Bajo Cualquiera
Sintaxis
CC = bwconncomp( BW)
CC = bwconncomp( BW, conn)
Descripcin
CC = bwconncomp( BW) devuelve las componentes conectadas CC encontradas en BW. La
imagen binaria BWpuede tener cualquier dimensin y puede ser un array del tipo numer i c
o l ogi cal , siempre real y no disperso. CC es una estructura con cuatro campos:
Campo Descripcin
Connect i vi t y
Conectividad de las componentes conectadas (objetos).
I mageSi ze
Tamao de BW.
NumObj ect s
Nmero de componentes conectadas (objetos) en BW.
Pi xel I dxLi st
Matriz de 1-por-NumObj ect s celdas donde el elemento nmero k de la
matriz es un vector que contiene los ndices lineales de los pxeles en el
objeto nmero k.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 71 de 410
bwconncomp usa por defecto la conectividad de 8 pxeles vecinos para 2 dimensiones, 26
para 3 dimensiones, y conndef ( ndi ms( BW) , ' maxi mal ' ) para dimensiones mayores.
CC = bwconncomp( BW, conn) especifica la conectividad deseada para las componentes
conectadas. conn puede tener los siguientes valores escalares (siempre simtrica respecto
su elemento central):
Valor Significado
Conectividades Bidimensionales
4
Vecindad de 4 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos y
conectados en vertical u horizontal.

Figura f.32 - vecindad 4
8
Vecindad de 8 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos.
(Por defecto)

Figura f.33 - vecindad 8
Conectividades Tridimensionales
6
Vecindad de 6 pxeles.
18
Vecindad de 18 pxeles.
26
Vecindad de 26 pxeles. (Por defecto)
Nota: La conectividad se puede definir para cualquier dimensin de forma ms
general utilizando para conn una matriz de 3-por-3-por-...-por-3 de ceros y unos.
Los unos definen las localizaciones de los pxeles vecinos relativas al elemento
central de conn. Por ejemplo, conn=ones( 3) define una conectividad de 8 pxeles.
Para medir las caractersticas de los objetos dentro de una imagen binaria con la funcin
r egi onpr ops con conectividad por defecto se debe usar BWdirectamente en r egi onpr ops.
Ejemplos de uso
Ejemplo 1: Obtener las componentes conectadas de una imagen binaria y mostrar uno de
los campos de la estructura de informacin devuelta.
BW= [ 1 1 1 0 0 0 0 0
1 1 1 0 1 1 0 0
1 1 1 0 1 1 0 0
0 0 0 0 0 0 1 0
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 72 de 410
0 0 0 0 0 0 1 0
0 0 0 0 0 0 1 0
0 1 1 0 0 1 1 0
0 1 1 0 0 0 0 0] ;

s = bwconncomp( BW)

s =
Connect i vi t y: 8
I mageSi ze: [ 8 8]
NumObj ect s: 3
Pi xel I dxLi st : {[ 9x1 doubl e] [ 4x1 doubl e] [ 9x1 doubl e] }

%El par met r o ms r el evant e es Pi xel I dxLi st , que cont i ene l os ndi ces
l i neal es de l os p xel es per t eneci ent es a cada obj et o. El segundo obj et o
encont r ado const a de 4 p xel es con l os si gui ent es ndi ces l i neal es:

s. Pi xel I dxLi st {2}

ans =
15
16
23
24
Ejemplo 2: Obtener las componentes conectadas de una imagen binaria y borrar el objeto
con ms pxeles.
BW= i mr ead( ' t ext . t i f ' ) ; i mshow( BW)

s = bwconncomp( BW) ;

%Apl i camos l a f unci n numel a cada cel da par a saber el nmer o de
el ement os o p xel es de cada obj et o.

numPi xel s = cel l f un( @numel , s. Pi xel I dxLi st ) ;

%Encont r amos el obj et o con mayor nmer o de p xel es y su ndi ce.

[ bi ggest , i dx] = max( numPi xel s) ;

%El i mi namos ese obj et o y most r amos l a i magen.

BW( s. Pi xel I dxLi st {i dx}) = 0;
f i gur e, i mshow( BW)


Figura f.46 - Imagen original (BW) sin procesar Figura f.47 - Imagen BW sin el objeto mayor
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 73 de 410
Ejemplo 3: Obtener las componentes conectadas de una imagen binaria y etiquetarlas para
mostrarlas.
BW= i mr ead( ' ci r cul os. t i f ' ) ;
i mshow( BW)
c = bwconncomp( BW)

%Et i quet amos l as component es con l a f unci n l abel mat r i x.

L = l abel mat r i x( c) ;
r gb = l abel 2r gb( L, ' j et ' , [ . 7 . 7 . 7] , ' shuf f l e' ) ;
f i gur e, i mshow( r gb)

c =
Connect i vi t y: 8
I mageSi ze: [ 587 886]
NumObj ect s: 10
Pi xel I dxLi st : {1x10 cel l }


Figura f.48 - Imagen original (BW) sin procesar Figura f.49 - Imagen procesada (BW) con
bwconncomp para encontrar objetos
Funciones relacionadas
bwl abel , bwl abel n, l abel mat r i x, r egi onpr ops

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 74 de 410
bwdist
Transformada de distancia (medida de separacin de pxeles) de una
imagen binaria
Introduccin
La transformada de distancia de una imagen binaria tiene una interpretacin muy sencilla:
es la distancia de cada pixel al pixel ms cercano distinto de cero. Se utiliza sobre todo en
operaciones morfolgicas como la erosin, dilatacin y segmentacin.
Habitualmente se utiliza en segmentacin en conjunto con la transformada divisoria
(funcin wat er shed) que es una funcin muy til para dividir formas convexas que se
estn tocando y poder as contabilizarlas por separado. La transformada divisoria interpreta
la imagen como un relieve topogrfico, con los niveles de gris como alturas (ms blanco
ms alto y ms negro ms hondo o ms valle), y calcula las lneas divisorias, que son los
lmites de las cuencas hidrogrficas o valles del relieve. De esta forma, si somos capaces
de procesar la imagen original para que los objetos que queremos segmentar coincidan con
las cuencas o valles del relieve topogrfico (habitualmente mediante la transformada de
distancia), podremos mostrar sus lmites (segmentar) mediante la transformada divisoria.
Este concepto se muestra en un ejemplo a continuacin.
Sintaxis
D = bwdi st ( BW)
[ D, L] = bwdi st ( BW)
[ D, L] = bwdi st ( BW, method)
Descripcin
D = bwdi st ( BW) calcula la transformada de distancia de la imagen binaria BW. A cada
pixel en la imagen BWse le asigna un nmero que es la distancia entre ese pixel y el pixel
distinto de cero ms cercano. bwdi st usa por defecto la mtrica eucldea. BWpuede tener
cualquier dimensin y puede ser del tipo numer i c o l ogi cal , pero nunca disperso. D es del
mismo tamao que BW.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 75 de 410
[ D, L] = bwdi st ( BW) tambin calcula la transformada del vecino ms prximo,
devolviendo una matriz de etiquetas L cuyos elementos contienen el ndice lineal del pixel
distinto de cero ms cercano en BW. D y L son matrices con el mismo tamao que BW.
[ D, L] = bwdi st ( BW, method) calcula la transformada de distancia especificando una
mtrica alternativa en la variable method, que se puede abreviar y puede tomar uno de los
siguientes valores:
Mtodo Descripcin Ilustracin
' eucl i dean'
Mtrica: eucldea.
La distancia eucldea es la
distancia en lnea recta entre dos
pxeles.
(Por defecto)

Figura f.50 - Mtrica eucldea
' ci t ybl ock'
Mtrica: city block.
La distancia city block mide el
camino entre los pxeles
basndose en una vecindad de 4
pxeles. Los pxeles cuyos
bordes se tocan distan una
unidad ms; los pxeles que se
tocan diagonalmente distan dos
unidades.

Figura f.51 - Mtrica city block
' chessboar d'
Mtrica: chessboard.
La distancia chessboard mide el
camino basndose en una
vecindad de 9 pxeles. Los
pxeles cuyos bordes o esquinas
se toquen distan una unidad.

Figura f.52 - Mtrica chessboard
' quasi -
eucl i dean'
Mtrica: cuasi-eucldea.
La distancia cuasi-eucldea mide
la distancia eucldea total a lo
largo de una serie de segmentos
horizontales, verticales y
diagonales.

Figura f.53 - Mtrica quasi-eucldea
Ejemplos de uso
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 76 de 410
Ejemplo 1: Dilatacin isotrpica. Mostrar los pxeles de una imagen binaria que estn a
menos de 25 pxeles de un pxel activo en el centro. Mostrar la imagen de la transformada
de distancia de la imagen original y de la imagen final en escala de grises.
%Cr eamos una i magen bi nar i a con un sol o pi xel bl anco en el cent r o. Puede
que no se vea bi en el pi xel y haga f al t a ut i l i zar l a her r ami ent a l upa.

BW= f al se( 100, 200) ;
BW( 50, 100) = 1;
i mshow( BW)

%Apl i camos l a t r ansf or mada de di st anci a eucl dea que cal cul a l a
di st anci a ent r e cada pi xel y el p xel act i vo ms cer cano, que en nuest r o
caso es ni co y est en el cent r o.

DBW= bwdi st ( BW) ;

%Sel ecci onamos l os p xel es que di st en menos de 25 uni dades del p xel
cent r al ( di st anci a <=25) y l os most r amos.

BW2 = DBW<= 25;
f i gur e, i mshow( BW2)

%Most r amos l as t r ansf or madas de di st anci a en escal a de gr i ses a modo de
r el i eve.

f i gur e, i mshow( DBW, [ ] )
DBW2 = bwdi st ( BW2) ;
f i gur e, i mshow( DBW2, [ ] )


Figura f.54 - Imagen original (BW) sin procesar Figura f.55 - Imagen procesada (BW2) con bwdist
para hacer una dilatacin isotrpica


Figura f.56 - Transformada de distancia (DBW) de
la imagen original BW
Figura f.57 - Transformada de distancia (DBW2) de
la imagen procesada BW2

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 77 de 410
Ejemplo 2: Calcular la transformada del vecino ms prximo.
bw = zer os( 5, 5) ; bw( 2, 2) = 1; bw( 4, 4) = 1
[ D, L] = bwdi st ( bw)
bw =
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 1 0
0 0 0 0 0

D =
1. 4142 1. 0000 1. 4142 2. 2361 3. 1623
1. 0000 0 1. 0000 2. 0000 2. 2361
1. 4142 1. 0000 1. 4142 1. 0000 1. 4142
2. 2361 2. 0000 1. 0000 0 1. 0000
3. 1623 2. 2361 1. 4142 1. 0000 1. 4142

L =
7 7 7 7 7
7 7 7 7 19
7 7 7 19 19
7 7 19 19 19
7 19 19 19 19
En la matriz L de vecinos ms prximos, los valores 7 y 19 representan la posicin de los
elementos distintos de cero utilizando indexado lineal. Por ejemplo, los pxeles que tienen
valor 7 significa que su vecino distinto de cero ms prximo est en la posicin lineal 7.
Ejemplo 2: Segmentar los crculos de la imagen binaria utilizando la transformada de
distancia en conjunto con la transformada divisoria (funcin wat er shed).
BW= i mr ead( ' ci r cul os. t i f ' ) ; i mshow( BW)

%Cal cul amos l a t r ansf or mada de di st anci a y l a most r amos en escal a de
gr i ses. Buscamos consegui r una cuenca o val l e en cada obj et o.

D = bwdi st ( BW) ; f i gur e, i mshow( D, [ ] )

%Hay que consegui r cuencas ( col or negr o) en cada obj et o a segment ar y
hay al gunos obj et os que no t i enen cuenca pr opi a. Compl ement amos l a i magen
y cal cul amos de nuevo l a t r ansf or mada de di st anci a.

DC = bwdi st ( ~BW) ; f i gur e, i mshow( DC, [ ] )

%Par a que l as r eas cl ar as se convi er t an en cuencas o val l es debemos
i nver t i r l as y que sean oscur as. Negamos l a t r ansf or mada de di st anci a.

NDC = - bwdi st ( ~BW) ; f i gur e, i mshow( NDC, [ ] )

%Ahor a ya t enemos una cuenca en cada obj et o, as que l a t r ansf or mada
di vi sor i a podr cal cul ar sus l mi t es. Las guar da en l a mat r i z de
et i quet as L, con l as l ocal i zaci ones de cada cuenca, si endo l os val or es
i gual a cer o l os cor r espondi ent es a l as l neas di vi sor i as. Par a most r ar l a
convi ene conver t i r l a a col or medi ant e l a f unci n l abel 2r gb.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 78 de 410
L = wat er shed( NDC) ;

%Cal cul amos l as l neas di vi sor i as y l as most r amos.

w = L == 0; f i gur e, i mshow( w)

%Di buj amos l as l neas di vi sor i as en l a i magen or i gi nal par a segment ar .

F = BW;
F( w) = 0; f i gur e, i mshow( F)


Figura f.48 - Imagen original (BW) sin procesar Figura f.58 - Imagen (D) de la transformada de
distancia de BW



Figura f.59 - Imagen (DC) de la transformada de
distancia del complemento de BW
Figura f.60 - Imagen (NDC) de la negada de la
transformada de distancia del complemento de BW


Figura f.61 - Imagen (w) de las lneas divisorias Figura f.62 - Imagen segmentada (F)
Funciones relacionadas:
bwul t er ode, wat er shed
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 79 de 410
bweuler
Nmero de Euler (objetos menos huecos) de una imagen binaria
Introduccin
El nmero de Euler es una caracterstica topogrfica importante de una imagen que indica
el nmero total de objetos en la imagen menos el nmero total de huecos en esos objetos.
El nmero de Euler permanece invariante ante las operaciones de traslacin, rotacin o
escalado de la imagen y tiene muchas aplicaciones dentro del procesado digital de
imgenes como por ejemplo el reconocimiento ptico de caracteres (OCR), el anlisis de
arenisca en aplicaciones geolgicas, la deteccin de sombras o el diagnstico mdico,
donde es frecuente calcular el nmero de Euler de imgenes de clulas porque el nmero
de Euler de una clula infectada es normalmente distinto al de una sana.
[8]

La rapidez del clculo del nmero de Euler es por tanto esencial actualmente, de ah que
hayan aparecido recientemente muchos estudios y algoritmos que buscan hacer ms
eficiente su procesado en una imagen.
Sintaxis
eul = bweul er ( BW, n)
Descripcin
eul = bweul er ( BW, n) devuelve el nmero de Euler correspondiente a la imagen binaria
BW. El valor devuelto eul es un escalar cuyo valor es el nmero total de objetos en la
imagen menos el nmero total de huecos en esos objetos. El argumento n puede tener un
valor de 4 o 8, donde 4 significa conectividad-4 y 8 significa conectividad-8 (por defecto si
se omite el argumento).
BWpuede ser del tipo numer i c o l ogi cal y debe ser real, no disperso y bidimensional. El
valor devuelto eul es de tipo doubl e.
Ejemplos de uso
Ejemplo 1: Calcular el nmero de Euler de una imagen binaria.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 80 de 410
BW= i mr ead( ' or i gi nal . t i f ' ) ;
i mshow( BW)
bweul er ( BW)

ans =
4


Figura f.48 - Imagen original (BW)
El valor de 4 corresponde con 8 objetos en blanco y 4 huecos dentro de los objetos.
Para contar solo el nmero de objetos omitiendo los huecos se puede utilizar la funcin
bwl abel con la sintaxis: [ et i quet as, numobj ] = bwl abel ( I , 8) ;
Ejemplo 2: Calcular el nmero de Euler de la imagen anterior utilizando la funcin
r egi onpr ops. Mostrar en una imagen solo los objetos con huecos y en otra solo los
objetos sin huecos.
BW= i mr ead( ' or i gi nal . t i f ' ) ;
L = bwl abel ( BW, 8) ;

e = r egi onpr ops( L, ' Eul er Number ' ) ;
eul er =[ e. Eul er Number ] ;
t ot al e = sum( eul er )

i mshow( i smember ( L, f i nd( eul er < 1) ) )
f i gur e, i mshow( i smember ( L, f i nd( eul er > 0) ) )


Figura f.63 - Imagen (w) de las lneas divisorias Figura f.64 - Imagen segmentada (F)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 81 de 410
Ejemplo 3: Calcular el nmero de Euler de las siguientes imgenes binarias que
representan la red trabecular de dos pacientes, el primero un paciente sano y el segundo un
paciente con osteoporosis. Las cavidades encerradas y la red trabecular es ms abundante
en el paciente sano, lo que conlleva un menor nmero de Euler.
BW1 = i mr ead( ' sano. t i f ' ) ; i mshow( BW1)
BW2 = i mr ead( ' ost eo. t i f ' ) ; f i gur e, i mshow( BW2)
eul er sano = bweul er ( BW1)
eul er ost eo = bweul er ( BW2)

eul er sano =
7

eul er ost eo =
15


Figura f.65 - Imagen (BW1) que representa a
paciente sano
[9]

Figura f.66 - Imagen (BW2) que representa a
paciente con osteoporosis
[9]


Funciones relacionadas
bwmor ph, bwper i m

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 82 de 410
bwhitmiss
Transformada de localizacin - bsqueda y omisin de pxeles usando
patrones de vecindad determinados en una imagen binaria
Introduccin
La funcin bwhi t mi ss se engloba dentro de las funciones utilizadas en el procesado
morfolgico de una imagen, especialmente en las tcnicas de dilatacin y erosin. Es til
cuando se necesita la identificacin de una determinada configuracin de pxeles, como
pxeles aislados de la imagen o pxeles que son los puntos finales de segmentos. Cuando
los elementos estructurantes o patrones utilizados son pequeos, resulta ms rpido el uso
de tablas de consulta mediante las funciones makel ut y appl yl ut .
En morfologa matemtica, la transformacin de localizacin es una operacin que detecta
una determinada configuracin (o patrn) en un imagen binaria, con el operador
morfolgico erosin y un par de elementos estructurantes disjuntos. El resultado de la
transformacin de localizacin es el conjunto de posiciones donde el primer elemento
estructurante cabe en el primer plano de la imagen de entrada y el segundo elemento de
estructuracin cabe en el segundo plano o fondo de la imagen.
Sintaxis
BW2 = bwhi t mi ss( BW1, SE1, SE2)
BW2 = bwhi t mi ss( BW1, I NTERVAL)
Descripcin
BW2 = bwhi t mi ss( BW1, SE1, SE2) realiza la transformada de localizacin definida por las
estructuras SE1 y SE2. La operacin mantiene igual los pxeles cuyos vecinos cumplan con
el patrn o figura definida en SE1 y que a su vez no cumplan el definido en SE2. SE1 y SE2
pueden ser objetos estructurales planos creados por la funcin st r el o arrays de
vecindades extrados del objeto estructurante mediante la funcin get nhood. Las
vecindades de SE1 y SE2 no deben tener ningn elemento solapado. La sintaxis
bwhi t mi ss( BW1, SE1, SE2) es equivalente a i mer ode( BW1, SE1) & i mer ode( ~BW1, SE2) .
BW2 = bwhi t mi ss( BW1, I NTERVAL) realiza la operacin de acierto y fallo definida a
partir de un array I NTERVAL que se pasa como parmetro y cuyos elementos son 1, 0 o - 1.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 83 de 410
Los valores igual a 1 forman SE1, los valores igual a -1 forman SE2 y los valores igual a 0
se ignoran. La sintaxis bwhi t mi ss( BW1, I NTERVAL) es equivalente a
bwhi t mi ss( BW1, I NTERVAL == 1, I NTERVAL == - 1) .
BW1 puede ser un array del tipo numer i c o l ogi cal de cualquier dimensin y debe ser no
disperso. BW2 siempre es un array l ogi cal del mismo tamao que BW1. SE1 y SE2 deben
ser objetos planos STREL o arrays tipo numer i c o l ogi cal con solamente unos y ceros.
I NTERVAL debe ser un array con 1' s, 0' s, y - 1' s.
Ejemplos de uso
Ejemplo 1: Encontrar el patrn P en BWutilizando la funcin bwhi t mi ss y despus
utilizando tablas de consulta mediante la funcin appl yl ut .
P = [ 0 1 0
1 1 1
0 1 0] ;

BW= [ 0 1 0 0 0 0 0
1 1 1 0 0 1 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
1 1 1 0 0 1 0
1 1 1 0 1 1 1
1 1 1 0 0 0 0]

%Hacemos el cl cul o pr i mer o con bwhi t mi ss.
%Lo pr i mer o es cr ear l os pat r ones bi nar i os que quer emos encont r ar en BW.
Pr i mer o el que quer emos que se cumpl a y l uego el que quer emos evi t ar :

B1 = [ 0 1 0
1 1 1
0 1 0] ;

B2 = [ 1 0 1
0 0 0
1 0 1] ;

S1 = bwhi t mi ss( BW, B1, B2)

%Hacemos ahor a el cl cul o con t abl as de consul t a.
%cal cul amos el val or de ndi ce del pat r n a buscar : 0x1 + 1x2 + 0+4 +
1x8 + 1x16 + 1x32 + 0x64 + 1x128 + 0x256 = 2 + 8 + 16 + 32 + 128 = 186.

%Gener amos l a t abl a de consul t a y l a apl i camos sobr e l a i magen.

l ut = zer os( 512, 1) ;
l ut ( 187) = 1;

S2 = appl yl ut ( BW, l ut )

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 84 de 410
BW=
0 1 0 0 0 0 0
1 1 1 0 0 1 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
1 1 1 0 0 1 0
1 1 1 0 1 1 1
1 1 1 0 0 0 0

S1 =
0 0 0 0 0 0 0
0 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 0 0 0
0 0 0 0 0 0 0

S2 =
0 0 0 0 0 0 0
0 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 0 0 0
0 0 0 0 0 0 0
Ejemplo 2: Activar el cero central de una vecindad de 4 pxeles (un pxel cero con pxeles
vecinos activos al norte, sur, este y oeste) usando bwhi t mi ss para encontrar los pxeles
que debemos activar en un array BW.
BW= [ 1 1 0 0 0 0 0
1 0 1 0 0 1 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
1 1 1 0 0 1 1
1 0 1 0 1 0 1
1 1 1 0 1 0 1]

%Lo pr i mer o es cr ear el pat r n que quer emos encont r ar en BW. Par a buscar
una veci ndad de 3- por - 3 si endo act i vos l os p xel es al nor t e, sur , est e y
oest e, debemos usar l a si gui ent e est r uct ur a:

e1 = [ 0 1 0
1 0 1
0 1 0] ;

%Ahor a def i ni mos l a est r uct ur a que r epr esent a l a conf i gur aci n a evi t ar
o excl ui r . Par a que el pi xel cent r al de una veci ndad de 3- por - 3 sea cer o,
usar emos est a est r uct ur a:

e2 = [ 0 0 0
0 1 0
0 0 0] ;

%Apl i camos bwhi t mi ss a l a i magen bi nar i a par a que cr ee un ar r ay con l os
p xel es que cumpl en est os pat r ones de veci nos.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 85 de 410
encont pi xel = bwhi t mi ss( BW, e1, e2)

%Ahor a, si quer emos que esos p xel es encont r ados cambi en de val or de
cer o a uno en l a i magen or i gi nal , no t enemos ms que cr ear un ar r ay con
l a oper aci n OR excl usi va del ar r ay or i gi nal y del de p xel es
encont r ados:

BW2 = BW, encont pi xel

BW=
1 1 0 0 0 0 0
1 0 1 0 0 1 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
1 1 1 0 0 1 1
1 0 1 0 1 0 1
1 1 1 0 1 0 1

encont pi xel =
0 0 0 0 0 0 0
0 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 1 0 0 0 0 0
0 0 0 0 0 0 0

BW2 =
1 1 0 0 0 0 0
1 1 1 0 0 1 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
1 1 1 0 0 1 1
1 1 1 0 1 0 1
1 1 1 0 1 0 1
Ejemplo 2: Encontrar los rectngulos con tamao 9x6 pxeles en la imagen binaria.
I =i mr ead( ' cuadr os. t i f ' ) ;
i mshow( I )

%Cr eamos est r uct ur as a buscar y evi t ar .

B=zer os( 11, 9) ;
B( 2: 10, 2: 7) =1;
B1=B

B=ones( 11, 9) ;
B( 2: 10, 2: 7) =0; B( 1: 11, 9) =0;
B2=B

%Apl i camos bwhi t mi ss y buscamos el r ect ngul o que hay en l as posi ci ones
encont r adas.

C=bwhi t mi ss( I , B1, B2) ;
[ f i l a col ] =f i nd( C) ;
C( f i l a- 4: f i l a+4, col - 3: col +2) =1;
f i gur e, i mshow( C)


Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 86 de 410
B1 =
0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 0 0
0 1 1 1 1 1 1 0 0
0 1 1 1 1 1 1 0 0
0 1 1 1 1 1 1 0 0
0 1 1 1 1 1 1 0 0
0 1 1 1 1 1 1 0 0
0 1 1 1 1 1 1 0 0
0 1 1 1 1 1 1 0 0
0 1 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0

B2 =
1 1 1 1 1 1 1 1 0
1 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1 0
1 1 1 1 1 1 1 1 0


Figura f.67 - Imagen original (I) Figura f.68 - Imagen (C)
Funciones relacionadas
appl yl ut , i mdi l at e, i mer ode, makel ut , st r el

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 87 de 410
bwlabel
Etiquetado de componentes conectadas en una imagen binaria en 2-D
Introduccin
Las funciones bwl abel , bwl abel n y bwconncomp calculan las componentes conectadas en
imgenes binarias. bwconncomp reemplaza el uso de bwl abel y bwl abel n usando mucha
menos memoria y es normalmente ms rpida que las otras funciones. Esta es una
comparativa de las funciones:
Funcin Dimensin de
entrada
Tipo de salida Uso de
memoria
Conectividad
bwl abel
2-D Matriz de etiquetas con
precisin doble.
Alto 4 o 8
bwl abel n
N-D Matriz de etiquetas con
precisin doble.
Alto Cualquiera
bwconncomp
N-D Estructura CC. Bajo Cualquiera
Sintaxis
L = bwl abel ( BW, n)
[ L, num] = bwl abel ( BW, n)
Descripcin
L = bwl abel ( BW, n) devuelve una matriz L denominada matriz de etiquetas, del mismo
tamao que BWy con etiquetas para todos los elementos conectados de la imagen BW. El
argumento n puede tener un valor de 4 o 8, donde 4 significa conectividad-4 y 8 significa
conectividad-8 (por defecto si se omite el argumento).
BWpuede ser del tipo numer i c o l ogi cal y debe ser real, bidimensional y no disperso. L es
de tipo doubl e.
Los elementos de L son valores enteros, ms grandes o iguales que 0. Los pxeles
etiquetados con 0 son el fondo de la imagen. Los pxeles etiquetados con 1 crean un objeto.
Los pxeles etiquetados con un 2 forman un segundo objeto, y as consecutivamente.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 88 de 410
[ L, num] = bwl abel ( BW, n) devuelve a la variable numel nmero de elementos
conectados encontrados en BW.
Para medir las caractersticas de objetos dentro de una imagen binaria utilizando la funcin
r egi onpr ops con conectividad por defecto, usar BWdirectamente en r egi onpr ops (p. ej.
r egi onpr ops( BW) ).
Utilizar la funcin f i nd junto a bwl abel para obtener vectores de ndices de fila y
columna para los pxeles de un objeto especfico. Por ejemplo, para obtener las
coordenadas para los pxeles del objeto 2 se debe escribir:
[ r , c] = f i nd( bwl abel ( BW) ==2)
Se puede mostrar la matriz de salida como una imagen indexada con la funcin
l abel 2r gb. Cada objeto aparecer con un color diferente y sern ms fciles de
reconocer.
Ejemplos de uso
Ejemplo 1: Etiquetar objetos de un array usando conectividad de 4 y 8 pxeles. Notar que
los objetos 2 y 3 se cuentan como un nico objeto usando conectividad-8 en vez de
contarse como dos objetos por separado como sucede con conectividad-4.
BW= l ogi cal ( [ 1 1 1 0 0 0 0 0
1 1 1 0 1 1 0 0
1 1 1 0 1 1 0 0
1 1 1 0 0 0 1 0
1 1 1 0 0 0 1 0
1 1 1 0 0 0 1 0
1 1 1 0 0 1 1 0
1 1 1 0 0 0 0 0] ) ;

%Conect i vi dad 4.

L4 = bwl abel ( BW, 4)

%Buscamos l os ndi ces de f i l a y col umna par a t odos l os p xel es del
segundo obj et o.

[ r 4, c4] = f i nd( L4 == 2) ;
r 4c4 = [ r 4 c4]

%Conect i vi dad 8.

L8 = bwl abel ( BW, 8)
[ r 8, c8] = f i nd( L8 == 2) ;
r 8c8 = [ r 8 c8]
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 89 de 410
L4 =
1 1 1 0 0 0 0 0
1 1 1 0 2 2 0 0
1 1 1 0 2 2 0 0
1 1 1 0 0 0 3 0
1 1 1 0 0 0 3 0
1 1 1 0 0 0 3 0
1 1 1 0 0 3 3 0
1 1 1 0 0 0 0 0

r 4c4 =
2 5
3 5
2 6
3 6

L8 =
1 1 1 0 0 0 0 0
1 1 1 0 2 2 0 0
1 1 1 0 2 2 0 0
1 1 1 0 0 0 2 0
1 1 1 0 0 0 2 0
1 1 1 0 0 0 2 0
1 1 1 0 0 2 2 0
1 1 1 0 0 0 0 0

r 8c8 =
2 5
3 5
2 6
3 6
7 6
4 7
5 7
6 7
7 7
Funciones relacionadas
bwconncomp, bwl abel n, bwsel ect , l abel mat r i x, l abel 2r gb, r egi onpr ops

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 90 de 410
bwlabeln
Etiquetado de componentes conectadas usando conectividad-n en una
imagen binaria
Introduccin
Las funciones bwl abel , bwl abel n y bwconncomp calculan las componentes conectadas en
imgenes binarias. bwconncomp reemplaza el uso de bwl abel y bwl abel n usando mucha
menos memoria y es normalmente ms rpida que las otras funciones. Esta es una
comparativa de las funciones:
Funcin Dimensin de
entrada
Tipo de salida Uso de
memoria
Conectividad
bwl abel
2-D Matriz de etiquetas con
precisin doble.
Alto 4 o 8
bwl abel n
N-D Matriz de etiquetas con
precisin doble.
Alto Cualquiera
bwconncomp
N-D Estructura CC. Bajo Cualquiera
Sintaxis
L = bwl abel n( BW)
[ L, NUM] = bwl abel n( BW)
[ L, NUM] = bwl abel n( BW, conn)
Descripcin
L = bwl abel n( BW) devuelve una matriz de etiquetas L conteniendo etiquetas para todos
los elementos conectados de la imagen BW. La imagen de entrada puede tener cualquier
dimensin. L tiene el mismo tamao que BW. Los elementos de L son enteros mayores o
iguales que 0. Los pxeles etiquetados con 0 son el fondo de la imagen. Los pxeles
etiquetados con 1 crean un objeto. Los pxeles etiquetados con un 2 forman un segundo
objeto, y as consecutivamente. La conectividad por defecto es 8 para dos dimensiones, 26
para tres dimensiones y conndef ( ndi ms( BW) , ' maxi mal ' ) para dimensiones mayores.
BWpuede ser del tipo numer i c o l ogi cal y debe ser real y no disperso. L es de tipo
doubl e.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 91 de 410
[ L, NUM] = bwl abel n( BW) devuelve en NUM el nmero de objetos conectados
encontrados en BW.
[ L, NUM] = bwl abel n( BW, conn) especifica la conectividad deseada. conn puede tener
cualquier a de los siguiente valores escalares (siempre simtrica respecto su elemento
central):
Valor Significado
Conectividades Bidimensionales
4
Vecindad de 4 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos y
conectados en vertical u horizontal.

Figura f.32 - vecindad 4
8
Vecindad de 8 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos.
(Por defecto)

Figura f.33 - vecindad 8
Conectividades Tridimensionales
6
Vecindad de 6 pxeles.
18
Vecindad de 18 pxeles.
26
Vecindad de 26 pxeles. (Por defecto)
Nota: La conectividad se puede definir para cualquier dimensin de forma ms
general utilizando para conn una matriz de 3-por-3-por-...-por-3 de ceros y unos.
Los unos definen las localizaciones de los pxeles vecinos relativas al elemento
central de conn. Por ejemplo, conn=ones( 3) define una conectividad de 8 pxeles.
Utilizar la funcin f i nd junto a bwl abel n para obtener vectores de ndices de fila y
columna para los pxeles de un objeto especfico. Por ejemplo, para obtener las
coordenadas para los pxeles del objeto 2 se debe escribir:
[ r , c] = f i nd( bwl abel n( BW) ==2)
Se puede mostrar la matriz de salida como una imagen indexada con la funcin
l abel 2r gb. Cada objeto aparecer con un color diferente y sern ms fciles de
reconocer.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 92 de 410
Para medir las caractersticas de objetos dentro de una imagen binaria utilizando la funcin
r egi onpr ops con conectividad por defecto, usar BWdirectamente en r egi onpr ops (p. ej.
r egi onpr ops( BW) ).
Funciones relacionadas
bwconncomp, bwl abel , l abel mat r i x, l abel 2r gb, r egi onpr ops
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 93 de 410
bwmorph
Operaciones morfolgicas en imgenes binarias
Introduccin
La funcin bwmor ph implementa una serie de operaciones morfolgicas muy tiles basadas
en combinaciones de dilataciones, erosiones y operaciones de bsqueda en tablas.
Sintaxis
BW2 = bwmor ph( BW, operation)
BW2 = bwmor ph( BW, operation, n)
Descripcin
BW2 = bwmor ph( BW, operation) aplica una operacin morfolgica a la imagen binaria BW.
BW2 = bwmor ph( BW, operation, n) aplica la operacin n veces. n puede ser I nf
(infinito), en cuyo caso la operacin se repite hasta que la imagen no cambie ms
(repeticin hasta estabilidad). Esencial cuando la operacin que realizamos debe repetirse
varias veces pero desconocemos el nmero de veces a repetir.
La imagen de entrada BWpuede ser del tipo numer i c o l ogi cal . Debe ser 2-D, real y no
dispersa. La imagen de salida BW2 es del tipo l ogi cal . Operation es una cadena que
puede tener uno de los siguientes valores:
Operacin Descripcin
' bot hat '
Realiza la operacin morfolgica black top-hat o bottom-hat
(sombrero de copa negro), dual a white top-hat o top-hat (sombrero de
copa blanco), devolviendo la diferencia entre la clausura de una
imagen por un elemento estructurante (la coleccin de partes del fondo
de la imagen que corresponden con un elemento estructurante o patrn
particular) y la imagen original. Es una dilatacin seguida de una
erosin.
Se utiliza un elemento estructurante de 3-por-3. Para utilizar otro
elemento estructurante distinto o aplicarlo sobre una imagen en escala
de grises se debe utilizar la funcin i mbot hat .
La operacin devuelve una imagen con los objetos que son menores
que el elemento estructurante y que son ms oscuros que sus vecinos
(se debe aumentar el tamao del elemento estructurante para extraer
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 94 de 410
objetos mayores). Es por tanto til para extraer pequeos objetos o
detalles oscuros sobre fondo claro y tambin para corregir la
iluminacin desigual cuando el fondo es claro. Adems, se puede
mejorar el contraste de una imagen sumando la imagen original y la
imagen filtrada con top-hat y posteriormente restndole la imagen
filtrada con bottom-hat.
' br anchpoi nt s'
Encuentra los puntos de interseccin de un esqueleto. Por ejemplo:
0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 se convi er t e en 0 0 0 0 0
1 1 1 1 1 0 0 1 0 0
0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
' br i dge'
Conecta pxeles no conectados (pone a 1 los pxeles de valor 0 que
tengan dos vecinos distintos de cero no conectados). Por ejemplo:
1 0 0 1 1 0
1 0 1 se convi er t e en 1 1 1
0 0 1 0 1 1
' cl ean'
Elimina los pxeles aislados (pxeles individuales con valor 1 que estn
rodeados por ceros). Por ejemplo, el pixel central de esta estructura:
0 0 0
0 1 0
0 0 0
' cl ose'
Realiza una clausura morfolgica (dilatacin seguida de una erosin).
Elimina pequeos huecos (rellenndolos) y une componentes conexas
cercanas.
Se utiliza un elemento estructurante de 3-por-3. Para utilizar otro
elemento estructurante distinto o aplicarlo sobre una imagen en escala
de grises se debe utilizar la funcin i mcl ose.
' di ag'
Utiliza relleno diagonal para eliminar la conectividad-8 del fondo. Por
ejemplo:
0 1 0 0 1 0
1 0 0 se convi er t e en 1 1 0
0 0 0 0 0 0
' di l at e'
Realiza una dilatacin utilizando el elemento estructural ones( 3) . Para
utilizar otro elemento estructurante distinto o aplicarlo sobre una
imagen en escala de grises se debe utilizar la funcin i mdi l at e.
' endpoi nt s'
Encuentra los pxeles lmite de un esqueleto. Por ejemplo:
1 0 0 0 1 0 0 0
0 1 0 0 se convi er t e en 0 0 0 0
0 0 1 0 0 0 1 0
0 0 0 0 0 0 0 0
' er ode'
Realiza una erosin utilizando el elemento estructural ones( 3) . Para
utilizar otro elemento estructurante distinto o aplicarlo sobre una
imagen en escala de grises se debe utilizar la funcin i mer ode.
' f i l l '
Rellena pxeles interiores aislados (0s individuales que estn rodeados
de 1s). Por ejemplo, el pixel central de esta estructura:
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 95 de 410
1 1 1
1 0 1
1 1 1
Para rellenar huecos ms grandes o aplicarlo sobre una imagen en
escala de grises se debe utilizar la funcin i mf i l l .
' hbr eak'
Elimina pxeles conectados con conectividad-H. Por ejemplo:
1 1 1 1 1 1
0 1 0 se convi er t e en 0 0 0
1 1 1 1 1 1
' maj or i t y'
Pone un pixel a 1 si cinco o ms pxeles en su vecindad de 3-por-3 son
1s; en caso contrario pone el pixel a 0. Por ejemplo:
1 1 1 0 0 0
0 1 0 se convi er t e en 1 1 1
1 1 1 0 0 0
' open'
Realiza una apertura morfolgica (erosin seguida de dilatacin). La
apertura generalmente suaviza los contornos de una imagen y elimina
pequeos salientes. Tambin puede eliminar franjas o zonas de un
objeto que sean ms estrechas que el elemento estructural.
Se utiliza un elemento estructurante de 3-por-3. Para utilizar otro
elemento estructurante distinto o aplicarlo sobre una imagen en escala
de grises se debe utilizar la funcin i mopen.
' r emove'
Elimina pxeles interiores. Pone un pixel a 0 si todos sus vecinos con
conectividad-4 estn a 1, dejando solo los pxeles frontera activos. Por
ejemplo:
1 1 1 1 1 1
1 1 1 se convi er t e en 1 0 1
1 1 1 1 1 1
' shr i nk'
Con n = I nf (infinito) contrae objetos a puntos. Elimina los pxeles
hasta que los objetos sin huecos se reduzcan a un punto y los objetos
con huecos se reduzcan a un anillo entre cada hueco y la frontera
exterior. Esta opcin mantiene el nmero de Euler. Por ejemplo:
1 1 1 0 0 0
1 1 1 se convi er t e en 0 1 0
1 1 1 0 0 0

1 1 1 0 1 0
1 0 1 se convi er t e en 1 0 1
1 1 1 0 1 0
' skel '
Forma el esqueleto de una imagen (esqueletizacin). J unto con la
operacin ' t hi n' es una de las operaciones ms habituales para
reducir objetos binarios a un conjunto de lneas que aportan
informacin de relevancia sobre las formas originales. Es como una
erosin que finaliza cuando se llega a la lnea final de los pxeles del
objeto.
Con n = I nf (infinito) elimina los pxeles en la frontera de los objetos
pero no permite romper los objetos. Los pxeles restantes forman el
esqueleto de la imagen. Esta opcin mantiene el nmero de Euler. Por
ejemplo:
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 96 de 410

1 1 1 1 0 0
1 1 1 se convi er t e en 1 1 1
1 1 1 1 0 0
' spur '
Pone un pixel a 0 si solo tiene un pixel con conectividad-8 en su
vecindad. Por ejemplo:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 1 0 se convi er t e en 0 0 0 0
0 1 0 0 0 1 0 0
1 1 0 0 1 1 0 0
' t hi cken'
Con n = I nf (infinito) engorda objetos aadiendo pxeles al exterior
del objeto hasta que los pxeles que antes no estaban conectados con
conectividad-8 ahora lo estn. Esta opcin mantiene el nmero de
Euler. Por ejemplo:
0 0 0 1 1 1
0 1 0 se convi er t e en 1 1 1
0 0 0 1 1 1
' t hi n'
Es una de las operaciones ms habituales para reducir objetos binarios
a un conjunto de lneas que aportan informacin de relevancia sobre
las formas originales.
Con n = I nf (infinito) encoge objetos hasta formar lneas de un solo
pixel de ancho. Elimina pxeles hasta que un objeto sin huecos se
reduzca a un trazo mnimo y hasta que un objeto con huecos se
reduzca a un anillo entre cada hueco y la frontera exterior. Se mantiene
el nmero de Euler. Por ejemplo:
1 1 1 0 0 0
1 1 1 se convi er t e en 0 1 0
1 1 1 0 0 0

1 1 1 0 1 0
1 0 1 se convi er t e en 1 0 1
1 1 1 0 1 0
' t ophat '
Realiza la operacin morfolgica white top-hat (sombrero de copa
blanco), contraria a black top-hat o bottom-hat (sombrero de copa
negro) devolviendo la diferencia entre la imagen original y su apertura
por un elemento estructurante (la coleccin de partes del frente de una
imagen que corresponden con un elemento estructurante o patrn
particular). Es una erosin seguida de una dilatacin.
Se utiliza un elemento estructurante de 3-por-3. Para utilizar otro
elemento estructurante distinto o aplicarlo sobre una imagen en escala
de grises se debe utilizar la funcin i mt ophat .
La operacin devuelve una imagen con los objetos que son menores
que el elemento estructurante y que son ms brillantes que sus vecinos
(aumentar el tamao del elemento estructurante para extraer objetos
mayores). Es por tanto til para extraer pequeos objetos o detalles
claros sobre fondo oscuro y tambin para corregir la iluminacin
desigual cuando el fondo es oscuro. Adems, se puede mejorar el
contraste sumando la imagen original y la imagen filtrada con top-hat
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 97 de 410
y posteriormente restndole la imagen filtrada con bottom-hat.
Ejemplos de uso
Ejemplo 1: Aplicar la operacin ' t hi n' infinita para encoger una imagen binaria de una
huella digital hasta conseguir las lneas ms estrechas posibles.
BW= i mr ead( ' f i nger . t i f ' ) ;
BW2 = bwmor ph( BW, ' t hi n' , I nf ) ;

i mshow( BW)
f i gur e, i mshow( BW2)


Figura f.69 - Imagen original (BW) Figura f.70 - Imagen procesada (BW2)
con bwmorph parmetro 'thin'
Ejemplo 2: Aplicar la operacin ' r emove' de la funcin bwmor ph a la imagen.
BW= i mr ead( ' ci r cul os. t i f ' ) ;
BW2 = bwmor ph( BW, ' r emove' ) ;

i mshow( BW)
f i gur e, i mshow( BW2)


Figura f.48 - Imagen original (BW) Figura f.71 - Imagen procesada (BW2)
con bwmorph parmetro 'remove'
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 98 de 410
Ejemplo 3: Aplicar la operacin de esqueletizado (' skel ' ) infinito a la imagen, aplicarle
al resultado la operacin de engorde (' t hi cken' ) y finalmente superponer el esqueleto en
la imagen original.
BW= i mr ead( ' f or mas. t i f ' ) ;
BW2 = bwmor ph( BW, ' skel ' , I nf ) ;
BW3 = bwmor ph( BW2, ' t hi cken' ) ;
BW4 = BW- BW3;

f i gur e, i mshow( BW)
f i gur e, i mshow( BW2)
f i gur e, i mshow( BW3)
f i gur e, i mshow( BW4)


Figura f.39 - Imagen original (BW) Figura f.72 - Imagen procesada (BW2)
con bwmorph parmetro 'skel infinito


Figura f.73 - Imagen procesada (BW3)
con bwmorph parmetro 'thicken'
Figura f.74 - Imagen procesada (BW4)

Ejemplo 4: Calcular el esqueleto de dos microradiografas, la primera de un hueso y la
segunda del mismo hueso al que se le ha aplicado cido ntrico. Observar cmo se
visualizan mejor las diferencias.
I = i mr ead( ' A. t i f ' ) ; i mshow( I ) ;
I 2 = i mr ead( ' B. t i f ' ) ; f i gur e, i mshow( I 2) ;

%Pasamos a i magen bi nar i a con un umbr al apr opi ado e i gual par a ambas.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 99 de 410
l evel = 0. 20;
BW= i m2bw( I , l evel ) ;
BW2 = i m2bw( I 2, l evel ) ;

%Cal cul amos el esquel et o.

S = bwmor ph( BW, ' skel ' , I nf ) ; f i gur e, i mshow( S)
S2 = bwmor ph( BW2, ' skel ' , I nf ) ; f i gur e, i mshow( S2)


Figura f.75 - Imagen original (I) del hueso Figura f.76 - Imagen original (I2) del hueso tras
aplicarle cido


Figura f.77 - Esqueleto (S) de la imagen original I Figura f.78 - Esqueleto (S2) de la imagen original I2

Funciones relacionadas
bweul er , bwper i m, i mbot hat , i mcl ose, i mdi l at e, i mer ode, i mf i l l , i mopen,
i mt ophat
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 100 de 410
bwpack
Empaquetado de una imagen binaria
Introduccin
El empaquetado de imgenes binarias se utiliza para acelerar algunas operaciones
morfolgicas como la dilatacin o la erosin. Si el parmetro de entrada de las funciones
i mdi l at e o i mer ode es una imagen binaria empaquetada, la funcin usa una rutina
especial para realizar la operacin ms rpido (bsicamente el cdigo en C o C++opera
con mltiples pxeles a la vez, resultando en un procesado ms rpido).
Sintaxis
BWP = bwpack( BW)
Descripcin
BWP = bwpack( BW) empaqueta una imagen binaria BWen formato ui nt 8 en un array BWP
en formato ui nt 32 al que se le llama imagen binaria empaquetada. Como cada pixel en 8
bits solo puede valer 1 o 0, bwpack puede guardar cada pixel en un nico bit de la imagen
empaquetada de salida.
bwpack procesa los pxeles de la imagen por columnas, asignando grupos de 32 pxeles a
los bits de un dato ui nt 32. Grupos de 32 pxeles se guardan en nmeros enteros de 32-bits.
BWpuede ser del tipo numer i c o l ogi cal , y debe ser 2-D, real, y no disperso. BWP es de
tipo ui nt 32.
bwunpack se usa para desempaquetar imgenes binarias empaquetadas.
Ejemplos de uso
Ejemplo 1: Empaquetar, dilatar y desempaquetar una imagen binaria.
BW= i mr ead( ' t ext o. t i f ' ) ;
i mshow( BW)

%Empaquet ar , di l at ar y desempaquet ar usando una di agonal como
est r uct ur a.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 101 de 410

BWP = bwpack( BW) ;
se = st r el ( eye( 9) , r ot 90( eye( 9) ) ) ;
BWPD = i mdi l at e( BWP, se, ' i spacked' ) ;
BWD = bwunpack( BWPD) ;
f i gur e, i mshow( BWD)
Funciones relacionadas
bwunpack, i mdi l at e, i mer ode

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 102 de 410
bwperim
Clculo de los pxeles del permetro de los objetos de una imagen binaria
Sintaxis
BW2 = bwper i m( BW1)
BW2 = bwper i m( BW1, conn)
Descripcin
BW2 = bwper i m( BW1) devuelve una imagen binaria solo con los pxeles del permetro de
los objetos de la imagen de entrada BW1. Un pixel forma parte del permetro si es distinto
de cero y est conectado a al menos un cero (fondo). La conectividad por defecto es de 4
para dos dimensiones, 6 para tres dimensiones y conndef ( ndi ms( BW) , ' mi ni mal ' ) para
mayores dimensiones, siempre referidas al fondo de la imagen.
BW2 = bwper i m( BW1, conn) especifica la conectividad. conn puede tener cualquiera de
los siguiente valores escalares (siempre simtrica respecto su elemento central):
Valor Significado
Conectividades Bidimensionales
4
Vecindad de 4 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos y
conectados en vertical u horizontal.

Figura f.32 - vecindad 4
8
Vecindad de 8 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos.
(Por defecto)

Figura f.33 - vecindad 8
Conectividades Tridimensionales
6
Vecindad de 6 pxeles.
18
Vecindad de 18 pxeles.
26
Vecindad de 26 pxeles. (Por defecto)
Nota: La conectividad se puede definir para cualquier dimensin de forma ms
general utilizando para conn una matriz de 3-por-3-por-...-por-3 de ceros y unos.
Los unos definen las localizaciones de los pxeles vecinos relativas al elemento
central de conn. Por ejemplo, conn=ones( 3) define una conectividad de 8 pxeles.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 103 de 410
BW1 debe ser del tipo numer i c o l ogi cal , y debe ser no disperso. BW2 es de tipo l ogi cal .
Ejemplos de uso
Ejemplo 1: Visualizar cmo bwper i mcalcula los pxeles del permetro encontrando los
pxeles distintos de 0 conectados a pxeles igual a 0, para diferentes conectividades.
bw = [ 0 0 0 0 0 0 0
0 0 1 1 1 0 0
0 1 1 1 1 1 0
0 1 1 1 1 1 0
0 1 1 1 1 1 0
0 0 1 1 1 0 0
0 0 0 0 0 0 0 ]

%Per met r o par a conect i vi dad de 4: el pi xel debe est ar conect ado a un
cer o por nor t e, sur , est e u oest e.

per i m4 = bwper i m( bw, 4)

%Per met r o par a conect i vi dad de 8: el pi xel debe est ar conect ado a un
cer o por nor t e, nor est e, est e, sur est e, sur , sur oest e, oest e o nor oest e.

per i m8 = bwper i m( bw, 8)

%Per met r o par a conect i vi dad de 2 p xel es el super i or e i nf er i or : el
pi xel debe est ar conect ado a un cer o por el nor t e o por el sur .

conn2 = [ 0 1 0
0 1 0
0 1 0 ] ;

per i m2 = bwper i m( bw, conn2)

bw =
0 0 0 0 0 0 0
0 0 1 1 1 0 0
0 1 1 1 1 1 0
0 1 1 1 1 1 0
0 1 1 1 1 1 0
0 0 1 1 1 0 0
0 0 0 0 0 0 0

per i m4 =
0 0 0 0 0 0 0
0 0 1 1 1 0 0
0 1 0 0 0 1 0
0 1 0 0 0 1 0
0 1 0 0 0 1 0
0 0 1 1 1 0 0
0 0 0 0 0 0 0

per i m8 =
0 0 0 0 0 0 0
0 0 1 1 1 0 0
0 1 1 0 1 1 0
0 1 0 0 0 1 0
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 104 de 410
0 1 1 0 1 1 0
0 0 1 1 1 0 0
0 0 0 0 0 0 0

per i m2 =
0 0 0 0 0 0 0
0 0 1 1 1 0 0
0 1 0 0 0 1 0
0 0 0 0 0 0 0
0 1 0 0 0 1 0
0 0 1 1 1 0 0
0 0 0 0 0 0 0
Notar que como la conectividad se define para los pxeles de fondo (valor 0), con una
conectividad conn = 8 se obtiene unos pxeles con conectividad 4 en el permetro,
mientras que para una conectividad conn = 4 se obtiene unos pxeles con conectividad 8
en el permetro.
Ejemplo 1: Encontrar los pxeles del permetro de los objetos de una imagen.
BW1 = i mr ead( ' ci r cul os. t i f ' ) ;
BW2 = bwper i m( BW1, 8) ;
f i gur e, i mshow( BW1)
f i gur e, i mshow( BW2)


Figura f.48 - Imagen original (BW1) Figura f.79 - Imagen procesada (BW2) con bwperim
Funciones relacionadas
bwar ea, bwboundar i es, bweul er , bwt r aceboundar y, conndef , i mf i l l

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 105 de 410
bwselect
Seleccin de objetos en una imagen binaria
Sintaxis
BW2 = bwsel ect ( BW, c, r , n)
BW2 = bwsel ect ( BW, n)
[ BW2, i dx] = bwsel ect ( . . . )
BW2 = bwsel ect ( x, y, BW, xi , yi , n)
[ x, y, BW2, i dx, xi , yi ] = bwsel ect ( . . . )
Descripcin
BW2 = bwsel ect ( BW, c, r , n) devuelve una imagen binaria con todos los objetos de la
imagen binaria BWque se superponen al pixel de coordenadas (r , c). r y c pueden ser
escalares o vectores de igual longitud. Si r y c son vectores, BW2 contiene el conjunto de
objetos que se superponen a cualquiera de los pxeles( r ( k) , c( k) ) . n puede valer 4 o 8
(por defecto), donde 4 significa conectividad-4 y 8 significa conectividad-8. Los objetos
son conjuntos de pxeles activos conectados.
BW2 = bwsel ect ( BW, n) muestra la imagen BWen pantalla permitiendo que se puedan
seleccionar las coordenadas (r , c) con el ratn. Si se omite BW, bwsel ect opera en a
imagen con los ejes en uso. Los puntos se aaden haciendo clic con el ratn y se borran
usando las teclas de retroceso o borrado. El ltimo punto se aade con un clic derecho o un
doble clic; presionando retroceso se finaliza la seleccin si aadir ningn punto.
[ BW2, i dx] = bwsel ect ( . . . ) devuelve los ndices lineales del pixel correspondiente a
los objetos seleccionados.
BW2 = bwsel ect ( x, y, BW, xi , yi , n) usa los vectores x e y para establecer un sistema de
coordenadas para BW1. xi e yi son escalares o vectores de igual longitud que especifican la
localizacin en este sistema de coordenadas.
[ x, y, BW2, i dx, xi , yi ] = bwsel ect ( . . . ) devuelve los parmetros XDat a e YDat a en x e
y, la imagen de salida en BW2, los ndices lineales para todos los pxeles pertenecientes a
los objetos seleccionados en i dx, y las coordenadas espaciales especificadas en xi e yi .
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 106 de 410
Si se llama a bwsel ect sin argumentos de salida, la imagen resultante se muestra en una
nueva figura.
La imagen de entrada BWpuede ser del tipo numer i c o l ogi cal y debe ser 2-D y no
dispersa. La imagen de salida BW2 es de tipo l ogi cal .
Ejemplos de uso
Ejemplo 1: Seleccionar objetos a partir de coordenadas en una imagen binaria.
BW1 = i mr ead( ' t ext o. t i f ' ) ;
i mshow( BW1) ;
c = [ 316 356] ;
r = [ 69 141] ;
BW2 = bwsel ect ( BW1, c, r , 4) ;
f i gur e, i mshow( BW2)


Figura f.80 - Imagen original (BW1) Figura f.81 - Imagen procesada (BW2) con bwselect
Funciones relacionadas
bwl abel , i mf i l l , i mpi xel , r oi pol y, r oi f i l l

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 107 de 410
bwtraceboundary
Clculo de la frontera de un objeto en una imagen binaria
Sintaxis
B = bwt r aceboundar y( BW, P, fstep)
B = bwt r aceboundar y( BW, P, fstep, conn)
B = bwt r aceboundar y( . . . , N, dir)
Descripcin
B = bwt r aceboundar y( BW, P, fstep) calcula la lnea exterior de un objeto en la imagen
binaria BWempezando desde las coordenadas en fila y columna del punto en la frontera
especificado en el vector de dos elementos P. Los pxeles distintos de cero forman parte de
un objeto y los pxeles de valor 0 constituyen el fondo. A diferencia de la funcin
bwboundar i es, que calcula todas las fronteras de todos los objetos y huecos,
bwt r aceboundar y solo calcula la frontera de un objeto.
fstep es una cadena que especifica la direccin de bsqueda inicial para el siguiente pixel
de objeto conectado a P. Se usan cadenas como ' N' para Norte o ' NE' para Noreste, para
especificar la direccin. La siguiente figura ilustra todos los posibles valores que puede
tomar f st ep.

Figura f.82 - Valores de fstep
bwt r aceboundar y devuelve B, una matriz de Q-por-2 donde Q es el nmero de pxeles
frontera de la regin. B guarda las coordenadas fila y columna de los pxeles frontera.
B = bwt r aceboundar y( bw, P, f st ep, conn) especifica la conectividad a usar cuando
se traza la frontera. conn puede tener cualquiera de los siguientes valores escalares:

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 108 de 410
Valor Significado
4 Vecindad de 4 pxeles.
Nota: Con esta conectividad, f st ep est limitado a los siguientes valores:
' N' , ' E' , ' S' , y ' W' .
8 Vecindad de 8 pxeles. (Por defecto)
B = bwt r aceboundar y( . . . , N, dir) especifica n, el nmero mximo de pxeles frontera,
y di r , la direccin en la que trazar la frontera. Cuando N vale I nf (infinito) (por defecto) el
algoritmo identifica todos los pxeles de la frontera. dir puede tener cualquiera de los
siguientes valores:
Valor Significado
' cl ockwi se'
Bsqueda en direccin de las agujas del reloj. (Por defecto)
' count er cl ockwi se'
Bsqueda en direccin contraria a las agujas del reloj.
BWpuede ser del tipo numer i c o l ogi cal y debe ser real, 2-D y no disperso. B, P, conn y N
son de tipo doubl e. di r y f st ep son cadenas de caracteres.
Ejemplos de uso
Ejemplo 1: Dibujar y representar la frontera de un objeto en una imagen binaria dada
mediante la funcin bwt r aceboundar y y luego dibujar y representar todas las fronteras
mediante la funcin bwboundar i es.
%Leemos y most r amos l a i magen.

BW= i mr ead( ' ci r cul os. t i f ' ) ;
i mshow( BW)

%Det er mi namos l as coor denadas ( f i l a y col umna) del pi xel di st i nt o de
cer o de l a f r ont er a del obj et o desde el que quer amos que empi ece a
t r azar . En nuest r o caso el pr i mer obj et o de ar r i ba a l a i zqui er da, que
est apr oxi madament e en 1/ 3 del ancho t ot al .

di m= si ze( BW)
col = r ound( di m( 2) / 3) ;
r ow = mi n( f i nd( BW( : , col ) ) )

%Ll amamos a bwt r aceboundar y par a t r azar l a f r ont er a del obj et o empezando
en ese punt o. Usamos l as opci ones m ni mas.

boundar y = bwt r aceboundar y( BW, [ r ow, col ] , ' N' ) ;

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 109 de 410
%Most r amos l a i magen or i gi nal y l a f r ont er a cr eada bwt r aceboundar y.

f i gur e, i mshow( BW)
hol d on;
pl ot ( boundar y( : , 2) , boundar y( : , 1) , ' g' , ' Li neWi dt h' , 3) ;

%Par a t r azar l as f r ont er as de t odos l os obj et os en l a i magen usamos l a
f unci n bwboundar i es que por def ect o encuent r a t odas l as f r ont er as de
t odos l os obj et os de l a i magen, i ncl ui dos l os obj et os dent r o de obj et os.
Par a evi t ar huecos en negr o dent r o de l os obj et os pr i nci pal es que puedan
ser i nt er pr et ados como ot r os obj et os, r el l enamos l os obj et os pr i nci pal es
con l a f unci n i mf i l l .

BW_f i l l ed = i mf i l l ( BW, ' hol es' ) ;
boundar i es = bwboundar i es( BW_f i l l ed) ;

%bwboundar i es devuel ve una mat r i z de cel das donde cada cel da cont i ene
l as coor denadas ( f i l a- col umna) de un obj et o en l a i magen. Most r amos l os
bor des de t odos l os obj et os usando est as coor denadas devuel t as por l a
f unci n.

f or k=1: 10
b = boundar i es{k};
pl ot ( b( : , 2) , b( : , 1) , ' g' , ' Li neWi dt h' , 3) ;
end


Figura f.48 - Imagen original (BW)


Figura f.83 - Imagen original (BW) con trazo de la
frontera de un objeto
Figura f.84 - Imagen original (BW) con trazo de la
frontera de todos los objetos
Funciones relacionadas
bwboundar i es, bwper i m
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 110 de 410
bwulterode
Erosin ltima de una imagen binaria
Sintaxis
BW2 = bwul t er ode( BW)
BW2 = bwul t er ode( BW, method, conn)
Descripcin
BW2 = bwul t er ode( BW) calcula la erosin ltima de la imagen binaria BW. La erosin
ltima es el resultado de varios procesos de erosin que paran justo antes de eliminar los
ltimos pxeles aislados. La erosin ltima de BWconsiste en el mximo regional (pxeles
con un valor h tal que cada pixel en la vecindad del mximo tiene un valor menor que h) de
la Transformada de distancia eucldea del complemento de BW.
La conectividad por defecto para el calculo del mximo regional es 8 para 2 dimensiones,
26 para tres dimensiones y conndef ( ndi ms( BW) , ' maxi mal ' ) para dimensiones mayores.
BW2 = bwul t er ode( BW, method, conn) especifica el mtodo de la transformada de
distancia y la conectividad del mximo regional. El mtodo se define con la variable
method y puede ser: ' eucl i dean' , ' ci t ybl ock' , ' chessboar d' y ' quasi - eucl i dean' .
La conectividad del mximo regional definida en conn puede ser cualquiera de las
siguientes (siempre simtrica respecto su elemento central):
Valor Significado
Conectividades Bidimensionales
4
Vecindad de 4 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos y
conectados en vertical u horizontal.

Figura f.32 - vecindad 4
8
Vecindad de 8 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos.
(Por defecto)

Figura f.33 - vecindad 8
Conectividades Tridimensionales
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 111 de 410
6
Vecindad de 6 pxeles.
18
Vecindad de 18 pxeles.
26
Vecindad de 26 pxeles. (Por defecto)
Nota: La conectividad se puede definir para cualquier dimensin de forma ms
general utilizando para conn una matriz de 3-por-3-por-...-por-3 de ceros y unos.
Los unos definen las localizaciones de los pxeles vecinos relativas al elemento
central de conn. Por ejemplo, conn=ones( 3) define una conectividad de 8 pxeles.
BWpuede ser del tipo numer i c o l ogi cal y debe ser no disperso. Puede tener cualquier
dimensin. El valor devuelto BW2 es siempre un array tipo l ogi cal .
Ejemplos de uso
Ejemplo 1: Aplicar una erosin ltima a una imagen binaria.
BW= i mr ead( ' cuadr os. t i f ' ) ;
i mshow( BW)
ul t i mat eEr osi on = bwul t er ode( BW) ;
f i gur e, i mshow( ul t i mat eEr osi on)


Figura f.50 - Imagen original (BW) Figura f.85 - Imagen erosionada
Funciones relacionadas
bwdi st , conndef , i mr egi onal max

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 112 de 410
bwunpack
Desempaquetado de una imagen binaria
Sintaxis
BW= bwunpack( BWP, M)
Descripcin
BW= bwunpack( BWP, M) desempaqueta la imagen binaria BWP. BWP es un array en formato
ui nt 32. Cuando se desempaqueta BWP, bwunpack asigna el bit menos significativo de la
primera fila de BWP al primer pixel en la primera fila de BW. El bit ms significativo del
primer elemento de BWP se asigna al primer pixel en la fila nmero 32 de BW, y as
sucesivamente. BWtiene un tamao de M-por-N, donde N es el nmero de columnas de BWP.
Si se omite M, el valor por defecto es 32*si ze( BWP, 1) .
bwpack se utiliza para empaquetar imgenes binarias.
BWP es de tipo ui nt 32 y debe ser real, de 2-D y no dispersa. El valor devuelto por BWes de
tipo ui nt 8.
Ejemplos de uso
Ejemplo 1: Empaquetar, dilatar y desempaquetar una imagen binaria.
BW= i mr ead( ' t ext o. t i f ' ) ;
i mshow( BW)

%Empaquet ar , di l at ar y desempaquet ar usando una di agonal como
est r uct ur a.

BWP = bwpack( BW) ;
se = st r el ( eye( 9) , r ot 90( eye( 9) ) ) ;
BWPD = i mdi l at e( BWP, se, ' i spacked' ) ;
BWD = bwunpack( BWPD) ;
f i gur e, i mshow( BWD)
Funciones relacionadas
bwunpack, i mdi l at e, i mer ode

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 113 de 410
checkerboard
Creacin de una imagen con patrn de tablero de damas
Introduccin
La imagen generada por la funcin checker boar d es de gran utilidad si se utiliza como
patrn de pruebas debido a que se puede redimensionar sin afectar a sus principales
caractersticas y sobre ella se pueden visualizar muy bien ciertas operaciones como las
transformaciones geomtricas o las operaciones booleanas. Tambin resulta de utilidad
para visualizar zonas de una imagen superponiendo el patrn sobre la imagen.
Sintaxis
I = checker boar d
I = checker boar d( n)
I = checker boar d( n, p, q)
Descripcin
I = checker boar d crea un cuadrado de 8-por-8 con patrn de tablero de damas y cuatro
esquinas identificables. Cada cuadrado tiene 10 pxeles por lado. Los cuadrados claros en
la mitad izquierda del tablero son blancos y los cuadrados claros en la mitad derecha del
tablero son grises.
I = checker boar d( n) crea una imagen con patrn de tablero de damas donde cada
cuadrado tiene n pxeles por lado.
I = checker boar d( n, p, q) crea una imagen rectangular con patrn de tablero de damas
donde p especifica el nmero de filas (baldosas de 4 cuadrados) y q especifica el nmero
de columnas (baldosas de 4 cuadrados). Si se omite q, se le da el valor de p por defecto y la
imagen resultante es cuadrada.
Cada fila y columna est hecha de baldosas (tiles) de cuatro cuadrados y n
pxeles por lado, definida cada una como:
TI LE = [ DARK LI GHT; LI GHT DARK]

Figura f.61 -
Baldosa o tile
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 114 de 410
Ejemplos de uso
Ejemplo 1: Crear una imagen con patrn de tablero de damas donde el lado de cada
cuadrado sea de 20 pxeles de longitud.
I = checker boar d( 20) ;
f i gur e, i mshow( I )

Figura f.86 - Tablero (I)
Ejemplo 2: Crear una imagen con patrn de tablero de damas con cuadrados de 10 pxeles
de lado, 2 filas o baldosas de 4 cuadrados de alto y 3 de ancho.
J = checker boar d( 10, 2, 3) ;
f i gur e, i mshow( J )


Figura f.87 - Tablero (J)
Ejemplo 3: Crear una imagen con patrn de tablero de damas de color blanco y negro.
K = ( checker boar d > 0. 5) ;
f i gur e, i mshow( K)

Figura f.88 - Tablero (K)
Ejemplo 4: Observar las diferencias entre la imagen de una mamografa antigua y la de
una mamografa reciente superponiendo cada imagen en uno de los colores de un patrn de
damas.
%Leemos l as i mgenes poni endo una enci ma de ot r a y most r amos l as
or i gi nal es.

I = i mr ead( ' A. t i f ' ) ;
i mshow( I ) ;
I 2 = i mr ead( ' B. t i f ' ) ;
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 115 de 410
hol d on
h = i mshow( I 2) ; %guar damos el punt er o par a l uego.
hol d of f
f i gur e, i mshow( I ) ; f i gur e, i mshow( I 2)

%Cal cul amos l as f i l as y col umnas de l os cuadr ados del pat r n.

[ M, N] = si ze( I 2) ;
t ambl oques = 40;
P = cei l ( M / t ambl oques) ;
Q = cei l ( N / t ambl oques) ;

%Cr eamos el pat r n de damas r ect angul ar de P f i l as ( bal dosas de 4
cuadr ados) por Q col umnas ( bal dosas de 4 cuadr ados) en bl anco y negr o.

al pha_dat a = checker boar d( t ambl oques, P, Q) > 0;

%El pat r n cr eado t i ene t amao mayor que l a i magen por que usa cuat r o
cuadr ados por bal dosa, as que l o r educi mos al t amao de l a i magen.

al pha_dat a = al pha_dat a( 1: M, 1: N) ;

%Super ponemos cada i magen en un col or del pat r n ut i l i zando l a pr opi edad
de t r anspar enci a ' Al phaDat a' ut i l i zando l as posi ci ones del t abl er o.

set ( h, ' Al phaDat a' , al pha_dat a) ;


Figura f.89 - Imagen original (I)
[10]

Figura f.90 - Imagen original (I2) Figura f.91 - Imagen procesada
combinada de I e I2
Funciones relacionadas
cp2t f or m, i mt r ansf or m, maket f or m
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 116 de 410
adapter.close
Cerrado de un objeto de clase ImageAdapter
Introduccin
I mageAdapt er es una clase abstracta que especifica la interfaz para la lectura y escritura de
archivos por bloques o regiones, definiendo los mtodos que la funcin bl ockpr oc usar
para leer y escribir imgenes en el disco. Aunque la funcin bl ockpr oc solo admite
determinados tipos de archivos, se puede conseguir trabajar con otro tipo de imgenes
construyendo para ellos una clase que herede de la clase I mageAdapt er y encapsule el
cdigo necesario.
Las clases I mageAdapt er (para cada tipo de archivo) que heredan de la superclase
I mageAdapt er deben implementar obligatoriamente los mtodos r eadRegi on (lectura de
una regin de la imagen) y cl ose (cerrar objeto I mageAdapt er ) para permitir una lectura
bsica de imgenes.
Sintaxis
adapt er . cl ose
Descripcin
adapt er . cl ose cierra el objeto I mageAdapt er y realiza cualquier operacin de limpieza
necesaria como el cierre de los descriptores de archivo. Cuando se construye una clase que
hereda de la clase I mageAdapt er se debe implementar este mtodo.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 117 de 410
col2im
Reordenacin de las columnas de una matriz en bloques
Introduccin
La funcin i m2col reordena bloques de una imagen en columnas, mientras que col 2i m
realiza la operacin complementaria. El uso de estas funciones es bastante confuso por lo
que se suele intentar evitarlas utilizando otras funciones ms avanzadas y especficas como
r eshape, bl ockpr oc o nl f i l t er . Se recomienda consultar tambin la funcin i m2col .
Sintaxis
A = col 2i m( B, [ mn] , [ mmnn] , ' di st i nct ' )
A = col 2i m( B, [ mn] , [ mmnn] , ' sl i di ng' )
Descripcin
A = col 2i m( B, [ m n] , [ mm nn] , ' di st i nct ' ) reordena cada columna de B en un bloque
distinto de m-por-n para crear la matriz A de tamao mm-por-nn. Si B = [ A11( : ) A21( : )
A12( : ) A22( : ) ] , donde cada columna tiene la longitud de m*n, entonces A = [ A11 A12;
A21 A22] donde cada Ai j es de tamao m-por-n.
A = col 2i m( B, [ m n] , [ mm nn] , ' sl i di ng' ) reordena el vector fila B en una matriz de
tamao( mm- m+1) -por-( nn- n+1) . B debe ser un vector de tamao 1-por-( mm- m+1) *( nn-
n+1) , que es normalmente el resultado de procesar la salida de i m2col ( . . . , ' sl i di ng' )
con alguna funcin de compresin de columna (como sumo mean por ejemplo).
col 2i m( B, [ mn] , [ mmnn] ) es lo mismo que col 2i m( B, [ mn] , [ mmnn] , ' sl i di ng' ) .
B puede ser del tipo numer i c o l ogi cal . El valor devuelto A ser de la misma clase que B.
Ejemplos de uso
Ejemplo 1: Reordenar B en bloques distintos de 2-por-2 en una matriz de 4-por4.
A11 = [ 1; 2; 3; 4] ;
A21 = [ 5; 6; 7; 8] ;
A12 = [ 9; 10; 11; 12] ;
A22 = [ 13; 14; 15; 16] ;
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 118 de 410

B = [ A11 A21 A12 A22]

A = col 2i m( B, [ 2 2] , [ 4 4] , ' di st i nct ' )

B =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16

A =
1 3 9 11
2 4 10 12
5 7 13 15
6 8 14 16

%Cor r esponde ef ect i vament e a A = [ A11 A12; A21 A22] .

Ejemplo 2: Reorganizar un array en columnas con la funcin i m2col y recuperar el array
original con la funcin inversa.
A = [ 1: 10; 11: 20; 21: 30; 31: 40]
B = i m2col ( A, [ 2, 5] , ' di st i nct ' )
C = col 2i m( B, [ 2, 5] , [ 4, 10] , ' di st i nct ' )

A =
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 34 35 36 37 38 39 40

B =
1 21 6 26
11 31 16 36
2 22 7 27
12 32 17 37
3 23 8 28
13 33 18 38
4 24 9 29
14 34 19 39
5 25 10 30
15 35 20 40

C =
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 34 35 36 37 38 39 40
Funciones relacionadas
bl ockpr oc, col f i l t , i m2col , nl f i l t er
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 119 de 410
colfilt
Operaciones de vecindad en columnas - filtrado espacial no lineal
Introduccin
Las funciones col f i l t y nl f i l t er se utilizan principalmente para aplicar un filtrado
espacial no lineal. Este filtrado se basa en operaciones de vecindad y a diferencia del
filtrado espacial lineal, que calcula la suma de productos (operacin lineal), este utiliza
operaciones no lineales que involucran a los pxeles de una vecindad. Por ejemplo, el hacer
que la respuesta a cada punto sea igual al mximo valor en su vecindad es una operacin
de filtrado no lineal.
La funcin nl f i l t er realiza operaciones directamente en 2 dimensiones mientras que
col f i l t organiza los datos en forma de columnas. col f i l t necesita ms memoria para
operar pero lo hace de forma ms rpida que nl f i l t er , por lo que suele ser la elegida en
la mayora de aplicaciones de procesado digital de imgenes. Solo se suele prescindir de
nl f i l t er cuando el filtrado puede aplicarse alternativamente con funciones especficas
como por ejemplo i mf i l t er , or df i l t 2 o spf i l t que consumen mucha menos memoria.
Sintaxis
B = col f i l t ( A, [ mn] , block_type, f un)
B = col f i l t ( A, [ mn] , [ mbl ock nbl ock] , bl ock_t ype, f un)
B = col f i l t ( A, ' i ndexed' , . . . )
Descripcin
B = col f i l t ( A, [ m n] , block_type, f un) procesa la imagen A recolocando cada bloque
de m-por-n en una columna de una matriz temporal segn el modo especificado en
block_type y aplicndole despus la funcin f un que debe ser una referencia o puntero a
una funcin (function handle). Si es necesario se usa la funcin col f i l t para rellenar con
ceros la matriz A.
Antes de llamar a f un, col f i l t llama a i m2col para crear la matriz temporal. Despus,
col f i l t recoloca las columnas de la matriz de nuevo en m-por-n bloques usando col 2i m.
block_type es una cadena que puede tener uno de los siguientes valores:
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 120 de 410
Valor Descripcin
' di st i nct '
Recoloca cada bloque distinto de m-por-n de A en una columna de una
matriz temporal y despus le aplica la funcin f un que debe devolver una
matriz del mismo tamao que la matriz temporal. Luego col f i l t recoloca
las columnas de la matriz devuelta por f un en m-por-n bloques diferentes.
' sl i di ng'
Usa una operacin de vecindad tipo
sl i di ng que consiste en coger
sucesivamente bloques rectangulares de m-
por-n pxeles para cada pixel de entrada y
posteriormente obtener el pixel de salida
aplicando una funcin a los pxeles vecinos.
Recoloca cada bloque de m-por-n de A en
una columna de una matriz temporal y
despus le aplica la funcin f un. f un debe
devolver un vector fila que contenga un
valor individual para cada columna de la
matriz temporal. (Funciones de compresin
de columnas como sumdevuelven el tipo de
salida apropiado). col f i l t finalmente
recoloca el vector devuelto por f un en una
matriz del mismo tamao que A.
Figura f.92 - Bloques sliding
para operaciones de vecindad tipo
sliding

B = col f i l t ( A, [ mn] , [ mbl ock nbl ock] , bl ock_t ype, f un) procesa la matriz A pero en
bloques de tamao mbl ock-por-nbl ock para ahorrar memoria. Notar que usando el
argumento [ mbl ock nbl ock] no cambia el resultado de la operacin.
B = col f i l t ( A, ' i ndexed' , . . . ) procesa A como una imagen indexada, rellenando con
0's si la clase de A es ui nt 8 o ui nt 16, o 1's si la clase de A es doubl e o si ngl e.
Para evitar los problemas de bordes inherentes al filtrado espacial se debe rellenar con
ceros la imagen de entrada antes del filtrado. La mejor forma de hacerlo es mediante la
funcin padar r ay que para funciones en 2 dimensiones tiene la siguiente sintaxis: f p =
padar r ay( f , [ r c] , met hod, di r ect i on) donde f es la imagen de entrada, f p la de
salida rellenada, y las variables met hod y di r ect i on definen la forma y direccin de
relleno. A continuacin se incluye un ejemplo utilizando esta funcin.
Nota: Para ahorrar memoria, la funcin col f i l t podra dividir A en sub-imgenes
y procesar una cada vez. Esto implica que se llamara varias veces a f un y que el
primer argumento de f un tendra diferente nmero de columnas cada vez.
col f i l t opera de forma similar pero ms rpido que bl ockpr oc y nl f i l t er .
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 121 de 410
La imagen de entrada A puede ser de cualquier clase que soporte f un. La clase de B
depende de la clase de la salida de f un.
Ejemplos de uso
Ejemplo 1: Asignar a cada pixel de salida el valor medio de la vecindad de 5-por-5 del
pixel (operacin de vecindad tipo sliding).
I = i mr ead( ' r ueda. t i f ' ) ;
f i gur e, i mshow( I )
I 2 = ui nt 8( col f i l t ( I , [ 5 5] , ' sl i di ng' , @mean) ) ;
f i gur e, i mshow( I 2)


Figura f.93 - Imagen original (I) Figura f.94 - Imagen procesada (I2)
Ejemplo 1: Comparar el resultado de aplicar un filtrado espacial no lineal a una imagen
utilizando relleno y sin utilizarlo. La respuesta a este filtro en cualquier punto debe ser la
media geomtrica de la intensidad de los pxeles de la vecindad correspondiente (producto
de los valores de intensidad en la vecindad elevados a 1/mn donde m x n es el tamao de la
vecindad).
%Cr eamos pr i mer o l a f unci n de f i l t r ado con el nombr e gmean en un
ar chi vo gmean. mapar t e.

f unct i on v = gmean( A)
mn = si ze( A, 1) ; %l a l ongi t ud de l as col umnas de A si empr e es mn.
v = pr od( A, 1) . ^( 1/ mn) ;

%Ej ecut amos el f i l t r ado l l amando a l a f unci n desde l a l nea de
comandos.

I = i m2doubl e( i mr ead( ' r ueda. t i f ' ) ) ; i mshow( I )
P = col f i l t ( I , [ 5 5] , ' sl i di ng' , @gmean) ; f i gur e, i mshow( P)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 122 de 410
%Repet i mos per o r el l enando l a i magen par a evi t ar er r or es en l os bor des.

I 2 = padar r ay( I , [ 5 5] , ' r epl i cat e' ) ;
P2 = col f i l t ( I 2, [ 5 5] , ' sl i di ng' , @gmean) ; f i gur e, i mshow( P2)

Figura f.93 - Imagen original (I)

Figura f.95 - Imagen procesada (P) Figura f.96 - Imagen procesada (P2)
No se aprecia muy bien la diferencia entra P y P2 pero la primera tiene un borde negro que
se come parte de la imagen mientras la segunda al tener un borde (relleno) de margen antes
de ser procesada, el borde del procesado le cae en el borde de margen y no en la imagen,
sin prdida de informacin. Esto es similar a lo que ocurre en el filtrado espacial lineal
aunque para evitarlo se puede hacer desde la propia funcin (i mf i l t er ).
Funciones relacionadas
bl ockpr oc, col 2i m, f unct i on_handl e, i m2col , nl f i l t er
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 123 de 410
conndef
Creacin de un array de conectividades
Sintaxis
conn = conndef ( num_di ms, type)
Descripcin
conn = conndef ( num_di ms, type) devuelve el array de conectividades de dimensin
num_di ms definido por type. Los valores que puede tomar type son los siguientes:
Valor Descripcin
' mi ni mal '
Define una vecindad cuyos vecinos estn tocando el elemento central de una
superficie de dimensin (N-1) para el caso de dimensin N.
' maxi mal '
Define una vecindad que incluye a vecinos que tocan el elemento central de
cualquier manera.
Varias funciones de la toolbox para el Procesado de Imgenes usan esta funcin para crear
la conectividad por defecto del argumento de entrada.
Ejemplos de uso
Ejemplo 1: Obtener la conectividad mnima y mxima para un array de dos dimensiones:
%Conect i vi dad m ni ma. Vemos como i ncl uye a l os veci nos que est n t ocando
el el ement o cent r al a l o l ar go de una l nea.

Connmi n = conndef ( 2, ' mi ni mal ' )

%Conect i vi dad mxi ma. Vemos como i ncl uye a t odos l os veci nos que t ocan
al el ement o cent r al .

Connmax = conndef ( 2, ' maxi mal ' )

Connmi n =
0 1 0
1 1 1
0 1 0

Connmax =
1 1 1
1 1 1
1 1 1
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 124 de 410
convmtx2
Matriz de convolucin en 2-D
Sintaxis
T = convmt x2( H, m, n)
T = convmt x2( H, [ mn] )
Descripcin
T = convmt x2( H, m, n) devuelve la matriz de convolucin T para la matriz H. Si X es una
matriz de m-por-n, entonces r eshape( T*X( : ) , si ze( H) +[ m n] - 1) es lo mismo que
conv2( X, H) .
T = convmt x2( H, [ mn] ) devuelve la matriz de convolucin donde las dimensiones my n
son un vector de dos elementos.
Las variables de entrada son de tipo doubl e. La matriz de salida T es de tipo spar se o
disperso. El nmero de elementos distintos de cero en T no es mayor que
pr od( si ze( H) ) *m*n.
Esta matriz se puede usar en una multiplicacin de matrices/vectores para realizar una
convolucin en 2 dimensiones.
Ejemplo 1: Calcular la convolucin de A y B de forma directa e indirecta.
%Cal cul amos l a convol uci n de A y B.

A = r and( 10) ; B = r and( 10) ;
C = conv2( A, B) ;

%Sacamos l a mat r i z de convol uci n de A y compr obamos que r eor denando
obt enemos l a mi sma convol uci n que ant es.

D = convmt x2( A, 10, 10) ;
E = r eshape( D*r eshape( B, 100, 1) , 19, 19) ;
i sequal ( C, E)

ans =
1
Funciones relacionadas
conv2
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 125 de 410
corner
Bsqueda de los puntos esquina de una imagen
Introduccin
Las esquinas son la forma ms fiable de encontrar la
correspondencia (puntos homlogos) entre imgenes.
Su definicin la podemos hacer a partir de tres pxeles,
uno dentro de la imagen, otro en el borde y otro en la
esquina. Si un pixel se encuentra dentro de un objeto,
sus alrededores (cuadrado slido) se corresponden con
los alrededores de sus vecinos (cuadrado punteado), en
cualquier direccin. Si un pixel se encuentra en el borde de un objeto, sus alrededores
difieren de los de sus vecinos en una direccin mientras que coinciden en otra (la
perpendicular). Un pixel esquina tiene alrededores diferentes en todos sus vecinos en
cualquier direccin.
Las funciones cor ner y cor ner met r i c detectan las esquinas de una imagen. En mayora
de aplicaciones es mejor usar la funcin cor ner para encontrar las esquinas en un solo
paso. Si se quiere ms control sobre la seleccin de esquinas es mejor usar la funcin
cor ner met r i c que calcula una matriz de medida de esquinas y despus se puede utilizar
un algoritmo propio para encontrar los valores ms altos.
Sintaxis
C = cor ner ( I )
C = cor ner ( I , met hod)
C = cor ner ( I , N)
C = cor ner ( I , met hod, N)
C = cor ner ( . . . , Name, Val or )
Descripcin
C = cor ner ( I ) detecta las esquinas en la imagen I y devuelve su posicin en la matriz C
que almacena sus coordenadas X e Y.
C = cor ner ( I , met hod) detecta las esquinas en la imagen I utilizando el mtodo
especificado en la variable met hod. Los mtodos que se pueden utilizar son:
Figura f.68 - Definicin de esquina
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 126 de 410
Valor Descripcin
' Har r i s'
Detector de esquinas Harris. (Por defecto)
' Mi ni mumEi genVal or '
Mtodo del mnimo valor eigen de Shi & Tomasi.
C = cor ner ( I , N) detecta las esquinas en la imagen I y devuelve un mximo de N
esquinas.
C = cor ner ( I , met hod, N) detecta las esquinas utilizando el mtodo especificado en la
variable met hod y devuelve un mximo de N esquinas.
C = cor ner ( . . . , Name, Val or ) especifica parmetros que permiten el control de varios
aspectos del algoritmo de deteccin de esquinas. Se pueden definir pares de valores
Name, Val or donde Name es el nombre del argumento y Val or es su valor correspondiente.
Estos son los parmetros posibles:
Parmetro Descripcin
'Fi l t er Coef f i ci ent s' Un vector V de coeficientes del filtro para el filtro de suavizado
separable. El filtro completo se obtiene mediante el producto
V*V' . Vlido para los mtodos ' Har r i s' y
' Mi ni mumEi genVal or ' .
(Por defecto: f speci al ( ' gaussi an' , [ 5 1] , 1. 5) )
'Qual i t yLevel ' Valor escalar Q donde 0 < Q < 1 y que especifica la mnima
calidad aceptable de las esquinas. Usar valores elevados de Q
para evitar errores.
(Por defecto: 0. 01)
'Sensi t i vi t yFact or ' Valor escalar K donde 0 < K < 0. 25 y que especifica el factor
de sensibilidad a usar en el algoritmo de deteccin Harris.
Cuanto menor sea el valor de K, el algoritmo detectar mejor las
esquinas puntiagudas. Usar este parmetro solo con el mtodo
' Har r i s' .
(Por defecto: 0. 04)
I es un array numrico no disperso. C es una matriz de M- por - 2 de tipo doubl e.
Ejemplos de uso
Ejemplo 1: Encontrar y mostrar las esquinas en una imagen patrn de tablero de ajedrez.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 127 de 410
I = checker boar d( 50, 2, 2) ;
C = cor ner ( I ) ;
i mshow( I )
hol d on
pl ot ( C( : , 1) , C( : , 2) , ' r *' ) ;


Figura f.97 - Esquinas encontradas
Funciones relacionadas
cor ner met r i c

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 128 de 410
cornermetric
Creacin de una matriz de medida de esquinas a partir de una imagen
Descripcin
CM = cor ner met r i c( I ) ) genera una matriz de medida de esquinas para la imagen I en
escala de grises o formato l ogi cal . La matriz CM se usa para detectar candidatos a
esquinas en I y tiene el mismo tamao que I . Los valores ms altos en CM se corresponden
con los pxeles en I con una mayor probabilidad de ser esquinas.
CM = cor ner met r i c( I , met hod) genera una matriz de medida de esquinas para la
imagen I en escala de grises o formato l ogi cal usando el mtodo especificado en la
variable met hod., que puede tomar los siguientes valores:
Valor Descripcin
' Har r i s'
Detector de esquinas Harris. (Por defecto)
' Mi ni mumEi genVal or '
Mtodo del mnimo valor eigen de Shi & Tomasi.
CM = cor ner met r i c( . . . , par am1, val 1, par am2, val 2, . . . ) ) genera una matriz
de medida de esquinas para la imagen I , especificando parmetros y valores que controlan
varios aspectos del algoritmo de clculo de la matriz. Estos parmetros pueden ser:
Parmetro Descripcin
' Fi l t er Coef f i ci ent s'
Un vector V de coeficientes del filtro para el filtro de suavizado
separable. El filtro completo se obtiene mediante el producto
V*V' . Vlido para los mtodos ' Har r i s' y
' Mi ni mumEi genVal or '
(Por defecto: f speci al ( ' gaussi an' , [ 5 1] , 1. 5) )
' Sensi t i vi t yFact or '
Valor escalar K donde 0 < K < 0. 25 y que especifica el factor
de sensibilidad a usar en el algoritmo de deteccin Harris.
Cuando menor sea el valor de K, el algoritmo detectar mejor las
esquinas puntiagudas. Usar este parmetro solo con el mtodo
' Har r i s' .
(Por defecto: 0. 04)
I es un array numrico no disperso. CM es una matriz de tipo doubl e.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 129 de 410
Ejemplos de uso
Ejemplo 1: Encontrar y mostrar las esquinas en una imagen patrn de tablero de ajedrez.
I = checker boar d( 50, 2, 2) ;
i mshow( I )

%Los pi cos de l a mat r i z CM son l as esqui nas ms pr obabl es. Cal cul amos
l os mxi mos r egi onal es de l a mat r i z CM que nos da l os pi cos de l os
l ugar es ms pr obabl es donde hay una esqui na.

CM = cor ner met r i c( I ) ;
cor ner _peaks = i mr egi onal max( CM) ;

%Encont r amos su posi ci n.

[ cr ow, ccol ] = f i nd( cor ner _peaks == t r ue) ;

%Le damos col or a l os p xel es esqui na y most r amos.

hol d on
pl ot ( cr ow, ccol , ' r *' ) ;


Figura f.97 - Esquinas encontradas
Funciones relacionadas
cor ner , edge, i mmovi e, i mshow

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 130 de 410
corr2
Coeficiente de correlacin en 2-D
Sintaxis
r = cor r 2( A, B)
Descripcin
r = cor r 2( A, B) calcula el coeficiente de correlacin entre A y B, donde A y B son matrices
o vectores del mismo tamao.
A y B pueden ser tipo numer i c o l ogi cal . El valor devuelto r es un escalar tipo doubl e.
Ejemplos de uso
Ejemplo 1: Calcular el coeficiente de correlacin entre una imagen y la misma imagen
procesada con un filtro de mediana.
I = i mr ead( ' pout . t i f ' ) ;
J = medf i l t 2( I ) ;
R = cor r 2( I , J )

R =
0. 9959
Funciones relacionadas
st d2, cor r coef

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 131 de 410
cp2tform
Deduccin de la matriz de transformacin a partir de pares de puntos de
control
Introduccin
El registro o alineacin de imgenes es un proceso a travs del cual se alinean dos o ms
imgenes de una misma escena compensando las aberraciones geomtricas que se hayan
podido generar. Existe una imagen base o de referencia y otra imagen distorsionada que se
comparan para obtener la matriz de transformacin y posteriormente aplicar la
transformacin geomtrica para alinear ambas imgenes.
La IPT soporta el registro de imgenes basado en el uso de puntos de control, que son un
subconjunto de pxeles cuyas localizaciones en ambas imgenes a alinear se pueden
seleccionar de forma interactiva mediante la funcin cpsel ect . Una vez seleccionado un
nmero suficiente de puntos, la funcin cp2t f or mse encarga de obtener la matriz de
transformacin que permitir luego la alineacin de las imgenes transformando
inversamente la imagen distorsionada mediante la funcin i mt r ansf or m.
Sintaxis
TFORM = cp2t f or m( i nput _poi nt s, base_poi nt s, transformtype)
TFORM = cp2t f or m( CPSTRUCT, transformtype)
[ TFORM, i nput _poi nt s, base_poi nt s] = cp2t f or m( CPSTRUCT, . . . )
TFORM = cp2t f or m( . . . , ' pol ynomi al ' , order)
TFORM = cp2t f or m( . . . , ' l wm' , N)
[ TFORM, i nput _poi nt s, base_poi nt s, i nput _poi nt s_bad, base_poi nt s_bad] =
cp2t f or m( . . . , ' pi ecewi se l i near ' )
Descripcin
TFORM = cp2t f or m( i nput _poi nt s, base_poi nt s, transformtype) deduce una
transformacin a partir de pares de puntos de control y devuelve la transformacin como
una estructura TFORM. i nput _poi nt s es una matriz m-por-2 en formato doubl e que
contiene las coordenadas x e y de los puntos de control en la imagen distorsionada que se
quiere transformar. base_poi nt s es una matriz de m-por-2 en formato doubl e que
contiene las coordenadas x e y de los puntos de control especificados en la imagen base o
referencia. transformtype especifica el tipo de transformacin espacial a deducir.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 132 de 410
TFORM = cp2t f or m( CPSTRUCT, transformtype) trabaja en una estructura CPSTRUCT que
contiene las matrices de puntos de control para la imagen de entrada y la imagen base. Se
usa la herramienta de seleccin cpsel ect para crear la estructura CPSTRUCT.
[ TFORM, i nput _poi nt s, base_poi nt s] = cp2t f or m( CPSTRUCT, . . . ) devuelve los
puntos de control que han sido usados en los i nput _poi nt s y base_poi nt s.
La siguiente tabla muestra las posibles transformaciones al usar cp2t f or men orden
creciente de complejidad:
Tipo de
Transformacin
Descripcin Puntos de
Control
mnimos
Ejemplo
' nonr ef l ect i ve
si mi l ar i t y'
Usar esta transformacin cuando
las formas en la imagen de
entrada no cambian pero la
imagen est distorsionada con
alguna combinacin de
traslacin, rotacin y escalado.
Las lneas rectas se mantienen
rectas y las paralelas se
mantienen paralelas.
2 pares

Figura f.98 -
Transformacin
nonreflective similarity

' si mi l ar i t y'
Igual que ' nonr ef l ect i ve
si mi l ar i t y' con la adicin de
una reflexin opcional.
3 pares

Figura f.99 -
Transformacin
similarity
' af f i ne'
Usar esta transformacin cuando
las formas en la imagen de
entrada exhiben deformacin de
cizalla. Las lneas rectas se
mantienen rectas y las paralelas
se mantienen paralelas pero los
rectngulos se convierten en
paralelogramos.
3 pares
Figura f.100 -
Transformacin affine
' pr oj ect i ve'
Usar esta transformacin cuando
la imagen aparezca inclinada. Las
lneas rectas se mantienen rectas
pero las lneas paralelas
convergen hacia puntos de fuga
que pueden o no caer dentro de la
imagen.
4 pares

Figura f.101 -
Transformacin
projective

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 133 de 410
' pol ynomi al '

Usar esta transformacin cuando
los objetos de la imagen estn
curvados. Cuando ms grande sea
el grado del polinomio mejor
encajar, pero el resultado podr
tener ms curvas que la imagen
de referencia.
6 pares
(orden 2)
10 pares
(orden 3)
15 pares
(orden 4)

Figura f.102 -
Transformacin
polynomial

' pi ecewi se
l i near '

Usar esta transformacin cuando
haya partes en la imagen
distorsionadas de forma diferente.
4 pares

Figura f.103 -
Transformacin
piecewise linear
' l wm' (local
weighted mean)

Usar esta transformacin cuando
la distorsin vara localmente y la
transformacin pi ecewi se
l i near no es suficiente.
6 pares
(recomendad
o 12)

Figura f.104 -
Transformacin lwm
Sintaxis para transformaciones especficas:
TFORM = cp2t f or m( . . . , ' pol ynomi al ' , order) devuelve una estructura TFORM
especificando una transformacin tipo ' pol ynomi al ' donde or der es el orden del
polinomio a usar, cuyo valor puede ser 2, 3 (por defecto), o 4.
TFORM = cp2t f or m( . . . , ' l wm' , N) devuelve una estructura TFORM especificando una
transformacin tipo ' l wm' donde N especifica el nmero de puntos usados para deducir
cada polinomio. Los N puntos ms cercanos se usan para deducir un polinomio de orden 2
para cada par de punto de control. Si se omite N, por defecto es 12. N puede ser mnimo 6,
pero hacerlo pequeo tiene riesgo de generar polinomios condicionados de forma
incorrecta.
[ TFORM, i nput _poi nt s, base_poi nt s, i nput _poi nt s_bad, base_poi nt s_bad] =
cp2t f or m( . . . , ' pi ecewi se l i near ' ) devuelve una estructura TFORM especificando una
transformacin tipo ' pi ecewi se l i near ' . Devuelve los puntos de control usados en las
variables i nput _poi nt s y base_poi nt s, y devuelve los puntos de control eliminados
cuando no tienen un orden apropiado.
Ejemplos de uso
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 134 de 410
Ejemplo 1: Alinear una imagen original con la misma imagen a la que se la ha aplicado
una rotacin. Usamos cp2t f or mpara obtener la matriz de transformacin.
%Leemos l as i magen or i gi nal y l a r ot amos 10 gr ados par a obt ener l a
i magen de ent r ada di st or si onada.

I 1 = i mr ead( ' cal at r ava. t i f ' ) ;
I 2 = i mr ot at e( I 1, - 10, ' bi l i near ' ) ;

%I nt r oduci mos manual ment e l os punt os de cont r ol ( 2 par es m ni mo par a l a
t r ansf or maci n el egi da) .

[ i nput _poi nt s, base_poi nt s] = cpsel ect ( I 2, I 1, ' Wai t ' , t r ue) ;

%Real i zamos el Regi st r o de l a i magen que consi st e en encont r ar l a
t r ansf or maci n que haga pasar I 2 a I 1 usando l os punt os de cont r ol .

t = cp2t f or m( i nput _poi nt s, base_poi nt s, ' nonr ef l ect i ve si mi l ar i t y' ) ;

%Tr ansf or mamos I 2 par a que est al i neada con I 1 r el l enando l a i magen con
col or bl anco.

[ I I 2] = i mt r ansf or m( I 2, t , ' Fi l l Val ues' , 255) ;

%Compar amos r esul t ados.

f i gur e( ' menu' , ' none' )
subpl ot ( 131) , i mshow( I 1) , t i t l e( ' I 1' )
subpl ot ( 132) , i mshow( I 2) , t i t l e( ' I 2' )
subpl ot ( 133) , i mshow( I I 2) , t i t l e( ' I 2 ( al i neada) ' )

Figura f.105 - Detalle de puntos de control especificados

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 135 de 410
Figura f.106 - Imagen base (I1), distorsionada (I2) y alineada (II2)
Funciones relacionadas
cpcor r , cpsel ect , cpst r uct 2pai r s, i mt r ansf or m, t f or mf wd, t f or mi nv

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 136 de 410
cpcorr
Afinado de la localizacin de los puntos de control mediante correlacin
cruzada
Sintaxis
i nput _poi nt s = cpcor r ( i nput _poi nt s_i n, base_poi nt s_i n, i nput , base)
Descripcin
i nput _poi nt s = cpcor r ( i nput _poi nt s_i n, base_poi nt s_i n, i nput , base) usa
una correlacin cruzada normalizada para ajustar cada par de puntos de control de las
imgenes de entrada y referencia i nput y base especificados en las variables
i nput _poi nt s_i n y base_poi nt s_i n.
i nput _poi nt s_i n debe ser una matriz M-por-2 de clase doubl e que contiene las
coordenadas de los puntos de control de la imagen de entrada especificada en la variable
i nput . base_poi nt s_i n es una matriz M-por-2 de clase doubl e que contiene las
coordenadas de los puntos de control de la imagen de entrada especificada en la variable
base.
cpcor r devuelve los puntos de control ajustados en la variable i nput _poi nt s, una matriz
de tipo doubl e del mismo tamao que i nput _poi nt s_i n. Si cpcor r no puede hacer la
correlacin de una pareja de puntos de control, i nput _poi nt s contendr las mismas
coordenadas que i nput _poi nt s_i n para ese par.
cpcor r solo modifica la posicin de los puntos de control en un mximo de 4 pxeles.
cpcor r es fiable en la seleccin y adquisicin de los puntos de control pero las imgenes
de entrada y referencia i nput y base deben tener la misma escala para que cpcor r sea
efectiva.
cpcor r no puede ajustar un punto si ocurre cualquiera de los siguientes sucesos:
Los puntos estn demasiado cerca del borde de cada imagen.
Hay regiones de la imagen alrededor de los puntos que contienen valores I nf o NaN
(infinitos o indeterminados)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 137 de 410
La regin alrededor de un punto en la imagen de entrada tiene desviacin tpica
igual a cero.
Hay regiones alrededor de los puntos que estn correladas deficientemente.
Las imgenes de entrada y de referencia i nput y base pueden ser del tipo numer i c y
deben tener valores finitos. Los pares de puntos de control son de tipo doubl e.
Ejemplos de uso
Ejemplo 1: Utilizar cpcor r para ajustar los puntos de control seleccionados en una imagen
RGB. Mostrar la diferencia de valores obtenidos en cada caso.
I 1 = i mr ead( ' cal at r ava. t i f ' ) ;
I 2 = i mr ot at e( I 1, - 10, ' bi l i near ' ) ;

%I nt r oduci mos manual ment e l os punt os de cont r ol ( 2 par es m ni mo par a l a
t r ansf or maci n el egi da, sel ecci onamos 3 par es) .

[ i nput _poi nt s, base_poi nt s] = cpsel ect ( I 2, I 1, ' Wai t ' , t r ue)

%Af i namos l a sel ecci n pasando sol o un canal de l a i magen RGB.

i nput _poi nt s_adj = cpcor r ( i nput _poi nt s, base_poi nt s, I 2( : , : , 1) , I 1( : , : , 1) )

i nput _poi nt s =
388. 2500 131. 2500
356. 7500 306. 7500
342. 7500 388. 2500

base_poi nt s =
266. 7500 86. 7500
266. 2500 264. 7500
268. 7500 346. 7500

i nput _poi nt s_adj =
387. 6500 131. 4500
356. 7500 306. 7500
345. 2500 387. 7500

Funciones relacionadas
cp2t f or m, cpsel ect , i mt r ansf or m, nor mxcor r 2
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 138 de 410
cpselect
Herramienta de seleccin de puntos de control en imgenes
Introduccin
La IPT soporta el registro o alineacin de imgenes basado en el uso de puntos de control,
que son un subconjunto de pxeles cuyas localizaciones en ambas imgenes se pueden
seleccionar de forma interactiva mediante la funcin cpsel ect . Una vez seleccionado un
nmero suficiente de puntos, la funcin cp2t f or mse encarga de obtener la matriz de
transformacin que permitir luego la alineacin de las imgenes transformando
inversamente la imagen distorsionada mediante la funcin i mt r ansf or m. Ms informacin
y ejemplos de este proceso en la pgina de la funcin cp2t f or m.
Sintaxis
cpsel ect ( i nput , base)
cpsel ect ( i nput , base, CPSTRUCT_I N)
cpsel ect ( i nput , base, xyi nput _i n, xybase_i n)
h = cpsel ect ( i nput , base, . . . )
cpsel ect ( . . . , par am1, val 1, . . . )
Descripcin
cpsel ect ( i nput , base) inicia la herramienta de seleccin de puntos de control, una
interfaz de usuario que permite seleccionar puntos de control en dos imgenes relacionadas
imagen de entrada (normalmente distorsionada) e imagen base o referencia. La imagen de
entrada o i nput es la imagen que necesita ser transformada para ponerla en el sistema de
coordenadas de la imagen original o base. i nput y base pueden ser ambas variables que
contengan imgenes en escala de grises, en color verdadero o imgenes binarias, o cadenas
que identifiquen archivos que contengan esas imgenes. La herramienta de seleccin de
puntos de control devuelve los puntos de control en una estructura CPSTRUCT.
cpsel ect ( i nput , base, CPSTRUCT_I N) inicia cpsel ect con un conjunto inicial de
puntos de control que se guardan en CPSTRUCT_I N. Esta sintaxis permite reiniciar
cpsel ect al estado anterior de los puntos de control guardados en CPSTRUCT_I N.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 139 de 410
cpsel ect ( i nput , base, xyi nput _i n, xybase_i n) inicia cpsel ect con un conjunto
inicial de puntos de control guardados en las variables xyi nput _i n e xybase_i n que son
matrices m-por-2 con las coordenadas de las imgenes i nput y base respectivamente.
h = cpsel ect ( i nput , base, . . . ) devuelve un puntero h a la herramienta. Se puede usar
el comando cl ose( h) para cerrar la herramienta desde la lnea de comandos.
cpsel ect ( . . . , par am1, val 1, . . . ) inicia cpsel ect especificando ciertos parmetros y
valores que controlan varios aspectos de la herramienta. Los nombres de parmetro se
pueden abreviar y no hay sensibilidad a las maysculas. Estos parmetros incluyen:
Parmetro Descripcin
' Wai t '
Escalar en formato Logi cal que controla si cpsel ect espera a que el
usuario cierre la herramienta para finalizar la seleccin de puntos de control.
Si se deja en f al se (por defecto) se puede ejecutar cpsel ect al mismo
tiempo que se ejecutan otros programas en MATLAB. Si se pone a t r ue, se
debe finalizar la tarea de seleccin para continuar con la ejecucin del
programa y de cualquier otra cosa en MATLAB.
Cuando ' Wai t ' se pone a t r ue, cpsel ect devuelve los pares de puntos
seleccionados, no un puntero a la herramienta:
[ xyi nput _out , xybase_out ] = cpsel ect ( . . . , ' Wai t ' , t r ue)
donde xyi nput _out y xybase_out son matrices de P-por-2 que guardan las
coordenadas de entrada y de referencia respectivamente.

Las imgenes pueden ser en escala de grises, color verdadero o binarias. Una imagen en
escala de grises puede ser de tipo ui nt 8, ui nt 16, i nt 16, si ngl e, o doubl e. Una imagen
en color verdadero puede ser ui nt 8, ui nt 16, si ngl e, o doubl e. Una imagen binaria tiene
que ser de tipo l ogi cal .
Ejemplos de uso
Ejemplo 1: Iniciar la herramienta de seleccin de puntos de control con una imagen
original y otra rotada pasndole unos puntos de control determinados.
I = checker boar d;
J = i mr ot at e( I , 30) ;
base_poi nt s = [ 11 11; 41 71] ;
i nput _poi nt s = [ 14 44; 70 81] ;
cpsel ect ( J , I , i nput _poi nt s, base_poi nt s) ;
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 140 de 410
Ejemplo 2: Iniciar la herramienta de seleccin de puntos de control con una imagen
original y otra rotada, seleccionar los puntos de control y recogerlos en dos variables
usando la funcin cpst r uct 2pai r s.
I = checker boar d;
J = i mr ot at e( I , 30) ;
cpsel ect ( J , I ) ;
[ i nput _poi nt s, base_poi nt s] = cpst r uct 2pai r s( cpst r uct )
Ejemplo 3: Utilizar cpsel ect especificando el parmetro ' wai t ' para que el programa se
pare hasta que se termine la seleccin de puntos de control y se cierre la herramienta
recibiendo los puntos de control en dos variables.
I 1 = i mr ead( ' cal at r ava. t i f ' ) ;
I 1 = r gb2gr ay( I 1) ;
I 2 = i mr ot at e( I 1, - 10, ' bi l i near ' , ' cr op' ) ;

[ i nput _poi nt s, base_poi nt s] = cpsel ect ( I 2, I 1, ' Wai t ' , t r ue)
i nput _poi nt s_adj = cpcor r ( i nput _poi nt s, base_poi nt s, I 2( : , : , 1) , I 1( : , : , 1) )
Funciones relacionadas
cpcor r , cp2t f or m, cpst r uct 2pai r s, i mt r ansf or m
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 141 de 410
cpstruct2pairs
Conversin de la estructura CPSTRUCT a un par de puntos de control
vlidos
Sintaxis
[ i nput _poi nt s, base_poi nt s] = cpst r uct 2pai r s ( CPSTRUCT)
Descripcin
[ i nput _poi nt s, base_poi nt s] = cpst r uct 2pai r s ( CPSTRUCT) recoge una estructura
CPSTRUCT creada a partir de la funcin cpsel ect y devuelve el array de coordenadas de
pares de puntos de control vlidos en las variables i nput _poi nt s y base_poi nt s.
cpst r uct 2pai r s elimina puntos no emparejados y puntos previsibles.
Ejemplos de uso
Ejemplo 1: Iniciar la herramienta de seleccin de puntos de control con una imagen
original y otra rotada, seleccionar los puntos de control y recogerlos en dos variables
usando la funcin cpst r uct 2pai r s.
I = checker boar d;
J = i mr ot at e( I , 30) ;
cpsel ect ( J , I ) ;
[ i nput _poi nt s, base_poi nt s] = cpst r uct 2pai r s( cpst r uct )
Nota: En la herramienta de seleccin de puntos de control se deben salvar los
puntos de control desde el men File-Export Points To Workspace y
posteriormente indicar que es una estructura de nombre cpstruct con todos los
puntos de control.
Funciones relacionadas
cp2t f or m, cpsel ect , i mt r ansf or m

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 142 de 410
dct2
Transformada de Coseno discreta en 2-D
Introduccin
La Transformada de Coseno Discreta (DCT) representa una imagen como una suma de
sinusoides de magnitudes y frecuencias oscilantes. La DCT tiene la propiedad de que para
una imagen corriente, la mayora de informacin o energa importante para su
visualizacin se localiza solo en unos pocos coeficientes de la DCT. Por eso es la
transformada ms utilizada en los estndares de compresin de imgenes, como en la
compresin J PEG.
En MATLAB existen dos formas de calcular la DCT con la toolbox de procesado de
imgenes. La primera forma es mediante la funcin dct 2, que usa un algoritmo basado en
la Transformada rpida de Fourier (FFT) para clculos ms rpidos con entradas grandes.
La segunda forma es mediante la matriz de transformacin DCT, que se obtiene con la
funcin dct mt x y puede ser ms eficiente cuando se trabaja con entradas pequeas, sobre
todo si son cuadradas de 8-por-8 o 16-por-16, tpicas dimensiones en el procesado por
bloques. La Transformada de coseno discreta inversa se calcula mediante la funcin i dct 2.
Sintaxis
B = dct 2( A)
B = dct 2( A, m, n)
B = dct 2( A, [ mn] )
Descripcin
B = dct 2( A) devuelve la transformada de coseno discreta bidimensional de A. La matriz B
es del mismo tamao que A y contiene los coeficientes B(k
1
,k
2
) de la transformada de
coseno discreta.
B = dct 2( A, m, n) rellena la matriz A con ceros hasta el tamao m-por-n antes de realizar la
transformacin. Si mo n es ms pequeo que la dimensin correspondiente de A, dct 2
trunca A.
B = dct 2( A, [ mn] ) igual que la sintaxis anterior.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 143 de 410
A puede ser del tipo numer i c o l ogi cal . La matriz devuelta B es de clase doubl e.
Ejemplos de uso
Ejemplo 1: Calcular la transformada de coseno discreta de una imagen y observar dnde
se concentra la mayor parte de la energa. A partir de esta observacin se podra comprimir
la imagen eliminado la informacin que tiene mayor energa y por tanto es la ms
redundante (situada en la esquina superior izquierda).
%Leemos una i magen en col or y l a conver t i mos a escal a de gr i ses.

RGB = i mr ead( ' aut umn. t i f ' ) ;
i mshow( RGB)
I = r gb2gr ay( RGB) ;

%Sacamos l a DCT de l a i magen y l a r epr esent amos.

J = dct 2( I ) ;
f i gur e, i mshow( l og( abs( J ) ) , [ ] ) , col or map( j et ( 64) ) , col or bar ;



Figura f.107 - Imagen original (RGB) Figura f.108 - Energa de la imagen procesada J
Funciones relacionadas
f f t 2, i dct 2, i f f t 2

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 144 de 410
dctmtx
Matriz DCT (Transformada de coseno discreta)
Introduccin
La Transformada de Coseno Discreta (DCT) representa una imagen como una suma de
sinusoides de magnitudes y frecuencias oscilantes. La DCT tiene la propiedad de que para
una imagen corriente, la mayora de informacin o energa importante para su
visualizacin se localiza solo en unos pocos coeficientes de la DCT. Por eso es la
transformada ms utilizada en los estndares de compresin de imgenes, como en la
compresin J PEG.
En MATLAB existen dos formas de calcular la DCT con la toolbox de procesado de
imgenes. La primera forma es mediante la funcin dct 2, que usa un algoritmo basado en
la Transformada rpida de Fourier (FFT) para clculos ms rpidos con entradas grandes.
La segunda forma es mediante la matriz de transformacin DCT, que se obtiene con la
funcin dct mt x y puede ser ms eficiente cuando se trabaja con entradas pequeas, sobre
todo si son cuadradas de 8-por-8 o 16-por-16, tpicas dimensiones en el procesado por
bloques. La Transformada de coseno discreta inversa se calcula mediante la funcin i dct 2.
Sintaxis
D = dct mt x( n)
Descripcin
D = dct mt x( n) devuelve la matriz DCT de tamao n-por-n.
Para una matriz A de n-por-n, D*A ser una matriz de n-por-n cuyas columnas contendrn la
DCT unidimensional de las columnas de A. D' *A es la DCT unidimensional inversa de las
columnas de A.
La DCT bidimensional de A se puede calcular como B=D*A*D' . Como D es una matriz real
ortonormal, su inversa es igual a su traspuesta, luego la DCT inversa bidimensional de B
ser D' *B*D.
n es un entero escalar de tipo doubl e. D es la matriz devuelta de tipo doubl e.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 145 de 410
Nota: Cuando A es cuadrada, a veces es ms rpido usar la matriz DCT que la
funcin dct 2, especialmente si se est calculando un nmero elevado de pequeas
DCTs. Por ejemplo, en la compresin de imgenes J PEG se calcula la DCT de cada
bloque de 8-por-8. Para ello se debe usar dct mt x para calcular la matriz D y
posteriormente calcular cada DCT usando D*A*D' (donde A es cada bloque de 8-
por-8). Con ello se evita calcular por separado la DCT de cada bloque de 8-por-8.
Se puede ver un ejemplo en la funcin bl ockpr oc.
Ejemplos de uso
Ejemplo 1: Calcular la DCT a partir de la matriz de DCT.
%Leemos una i magen cuadr ada en col or y l a conver t i mos a f or mat o doubl e.

RGB = i mr ead( ' aut umn. t i f ' ) ;
i mshow( RGB)
I = r gb2gr ay( RGB) ;
A = i m2doubl e( I ) ;

%Sacamos l a mat r i z DCT del t amao de l a i magen y cal cul amos l a DCT.

D = dct mt x( si ze( A, 1) ) ;
dct = D*A*D' ;
f i gur e, i mshow( dct )


Figura f.107 - Imagen original (RGB) Figura f.109 - Energa de la imagen procesada J
Funciones relacionadas
dct 2
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 146 de 410
deconvblind
Aclarado de una imagen borrosa (deblurring) usando deconvolucin
ciega
Introduccin
La IPT incluye cuatro funciones para el aclarado de imgenes borrosas (deblurring o anti-
desenfoque) listadas a continuacin en orden de mayor a menor complejidad:
deconvwnr - restaura la imagen utilizando el filtro Wiener.
deconvr eg - restaura la imagen utilizando un filtro regularizado.
deconvl ucy - restaura la imagen con el algoritmo Lucy-Richardson.
deconvbl i nd - restaura la imagen utilizando el algoritmo de deconvolucin ciega.
El efecto borroso en una imagen puede deberse a muchos factores: movimiento durante la
toma o captura de la imagen, debido a un largo periodo de exposicin, ptica desenfocada,
luz difusa, etc. Un modelo aproximado para describir a una imagen borrosa es el siguiente:
g = Hf + n, donde:
g =Imagen borrosa
H =Operador de distorsin o tambin llamado funcin de dispersin del punto (point
spread function o PSF) que en el dominio del espacio describe el grado en el que un
sistema ptico esparce o desenfoca un punto de luz. Este operador de distorsin, al
convolucionarse con la imagen, crea la distorsin. Esta distorsin creada por el
operador es solo uno de los distintos tipos de distorsin posibles.
f =La imagen original. Realmente no existe sino que representa lo que se hubiera
obtenido en condiciones perfectas.
n Ruido aditivo, introducido durante la adquisicin de la imagen y que corrompe la
imagen.
Basndonos en este modelo, la tarea fundamental para aclarar una imagen borrosa consiste
en deconvolucionar la imagen con el operador de dispersin PSF que describa exactamente
su distorsin. La deconvolucin es el proceso para revertir el efecto de la convolucin. La
calidad de la imagen aclarada depende principalmente del conocimiento del operador de
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 147 de 410
dispersin, cuya estimacin apropiada es uno de los problemas ms difciles en la
restauracin de imgenes digitales.
Todas las funciones destinadas al aclarado de una imagen borrosa en la IPT aceptan como
entrada un operador de dispersin PSF y una imagen borrosa a restaurar. Las funciones
deconvwnr y deconvr eg necesitan informacin a cerca del ruido para poder reducir la
posible amplificacin del ruido durante el proceso de enfoque o aclarado. Por otro lado, la
funcin deconvl ucy realiza mltiples iteraciones con tcnicas de optimizacin y
estadsticas de Poisson y no necesita tener informacin a cerca del ruido aditivo de la
imagen degradada, al igual que la funcin deconvbl i nd, que restaura la imagen sin el
conocimiento del operador de dispersin (deconvolucin ciega) basndose en una
estimacin inicial que se le pasa como parmetro e iterando de la misma manera que la
funcin deconvl ucy. En cualquiera de los casos siempre se tendr que iterar varias veces y
observar los resultados intermedios para encontrar la mejor aproximacin a la imagen
original.
Sintaxis
[ J , PSF] = deconvbl i nd( I , I NI TPSF)
[ J , PSF] = deconvbl i nd( I , I NI TPSF, NUMI T)
[ J , PSF] = deconvbl i nd( I , I NI TPSF, NUMI T, DAMPAR)
[ J , PSF] = deconvbl i nd( I , I NI TPSF, NUMI T, DAMPAR, WEI GHT)
[ J , PSF] = deconvbl i nd( I , I NI TPSF, NUMI T, DAMPAR, WEI GHT, READOUT)
[ J , PSF] = deconvbl i nd( . . . , FUN, P1, P2, . . . , PN)
Descripcin
La funcin deconvbl i nd realiza una deconvolucin empezando donde acab una
deconvolucin previa. Para ello se pasan la imagen de entrada I (imagen borrosa) y la
estimacin inicial del operador de dispersin PSF I NI TPSF como matrices de celdas {I } e
{I NI TPSF}. deconvbl i nd devuelve la imagen de salida J (imagen aclarada) y la
restauracin de PSF, de nuevo disponible para pasarse como array de entrada en la
siguiente llamada a la funcin deconvbl i nd.
[ J , PSF] = deconvbl i nd( I , I NI TPSF) deconvoluciona la imagen I usando el algoritmo
de mxima probabilidad, devolviendo la imagen enfocada y el operador de dispersin PSF
restaurado. Este operador PSF es un array positivo normalizado que tiene el mismo tamao
de que I NI TPSF. La restauracin de PSF est ms afectada por el tamao de la estimacin
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 148 de 410
inicial I NI TPSF que por sus valores y por ello se debe especificar I NI TPSF como un array
de unos. I puede ser un array N-dimensional.
[ J , PSF] = deconvbl i nd( I , I NI TPSF, NUMI T) especifica el nmero de iteraciones (10
por defecto) en la variable NUMI T.
[ J , PSF] = deconvbl i nd( I , I NI TPSF, NUMI T, DAMPAR) especifica en la variable
DAMPAR el umbral de desviacin de la imagen resultante a partir de la imagen de entrada I
(en trminos de la desviacin estndar del ruido de Poisson) por debajo del cual se produce
amortiguacin. Se suprimen las iteraciones para los pxeles que se desvan DAMPAR del
valor original. Esto elimina la generacin de ruido en esos pxeles y mantiene los detalles
de la imagen en el resto. El valor por defecto es 0 (sin amortiguacin).
[ J , PSF] = deconvbl i nd( I , I NI TPSF, NUMI T, DAMPAR, WEI GHT) especifica el peso
que tendrn los pxeles de la imagen de entrada I en la restauracin, reflejando la calidad
de captacin de la cmara. Si los pxeles tienen mala calidad, se les debe dar mucho peso
para que se restauren fuertemente. Por defecto WEI GHT es un array unitario del mismo
tamao que la imagen de entrada y a sus elementos se les puede asignar un valor de entre
0.0 y 1 dependiendo si se quiere que sean menos o ms considerados en la restauracin.
Por ejemplo, para excluir un pixel de ser considerado, se le debe asignar valor 0 en el
array. Se puede ajustar el peso asignado a cada pixel en funcin de la cantidad de
correccin de campo plano.
[ J , PSF] = deconvbl i nd( I , I NI TPSF, NUMI T, DAMPAR, WEI GHT, READOUT) , donde
READOUT es un array (o valor) correspondiente al ruido aditivo (p.ej. de fondo) y a la
varianza del ruido de lectura (Read out noise) de la cmara. READOUT debe estar en las
unidades de la imagen y su valor por defecto es 0.
[ J , PSF] = deconvbl i nd( . . . , FUN, P1, P2, . . . , PN) , donde FUN es una referencia o
puntero a una funcin que describe restricciones adicionales en el operador de dispersin
PSF.
A FUN se le llama al final de cada iteracin. FUN debe aceptar al operador de dispersin PSF
como primer argumento y puede aceptar parmetros adicionales P1, P2,. . . , PN. La funcin
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 149 de 410
FUN debe devolver un argumento, PSF, que tenga el mismo tamao que el PSF original y
que cumpla las restricciones de positividad y normalizacin.
Nota: La imagen de salida J podra tener ringing (artefactos oscilantes en
imgenes restauradas) introducido por la Transformada de Fourier discreta usada en
el algoritmo. Para reducirlo se debe usar I = edget aper ( I , PSF) antes de llamar a
la funcin deconvbl i nd.
La matriz de celdas de salida J contiene cuatro elementos:
J {1} contiene la imagen original I .
J {2} contiene el resultado de la ltima iteracin.
J {3} contiene el resultado de la penltima iteracin.
J {4} es un array generado por el algoritmo de iteracin.
I e I NI TPSF pueden ser tipo ui nt 8, ui nt 16, i nt 16, si ngl e, o doubl e. DAMPAR y READOUT
deben ser del mismo tipo que la imagen de entrada. El resto de variables de entrada deben
ser de tipo doubl e. La imagen de salida J (o el primer array de la matriz de celdas de
salida) tiene el mismo tipo que la imagen de entrada I . La variable de salida PSF es de tipo
doubl e.
Ejemplos de uso
Ejemplo 1: Aclarar una imagen borrosa debido a ruido gaussiano utilizando
deconvolucin ciega y comparar el resultado final e inicial tanto de la imagen como del
elemento estructurante PSF.
%Cr eamos una i magen con pat r n t abl er o de aj edr ez.

I = checker boar d( 8) ;

%Cr eamos un f i l t r o gaussi ano, nuest r o oper ador de di sper si n PSF.
Fi l t r amos l a i magen y l e aadi mos r ui do.

PSF = f speci al ( ' gaussi an' , 7, 10) ;
V = . 0001;
Bl ur r edNoi sy = i mnoi se( i mf i l t er ( I , PSF) , ' gaussi an' , 0, V) ;

%Def i ni mos el peso de l os p xel es.
WT = zer os( si ze( I ) ) ;
WT( 5: end- 4, 5: end- 4) = 1;

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 150 de 410
%Def i ni mos el oper ador de di st or si n i ni ci al I NI TPSF como ar r ay de unos
del t amao de PSF.

I NI TPSF = ones( si ze( PSF) ) ;

%Real i zamos l a deconvol uci n ci ega y compar amos l a i magen or i gi nal , l a
deconvol uci onada/ acl ar ada y l os oper ador es de di st or si n i ni ci al y f i nal .

[ J P] = deconvbl i nd( Bl ur r edNoi sy, I NI TPSF, 20, 10*sqr t ( V) , WT) ;
subpl ot ( 221) ; i mshow( Bl ur r edNoi sy)
t i t l e( ' I magen or i gi nal Rui dosa y Bor r osa' ) ;
subpl ot ( 222) ; i mshow( PSF, [ ] )
t i t l e( ' Coef i ci ent e PSF ver dader o' ) ;
subpl ot ( 223) ; i mshow( J )
t i t l e( ' I magen f i nal acl ar ada' ) ;
subpl ot ( 224) ; i mshow( P, [ ] )
t i t l e( ' Coef i ci ent e PSF r ecuper ado' ) ;


Figura f.110 - comparativa deconvblind
Funciones relacionadas
deconvl ucy, deconvr eg, deconvwnr , edget aper , f unct i on_handl e, i mnoi se,
ot f 2psf , padar r ay, psf 2ot f
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 151 de 410
deconvlucy
Aclarado de una imagen usando el mtodo Lucy-Richardson
Introduccin
La IPT incluye cuatro funciones para el aclarado de imgenes borrosas (deblurring o anti-
desenfoque) listadas a continuacin en orden de mayor a menor complejidad:
deconvwnr - restaura la imagen utilizando el filtro Wiener.
deconvr eg - restaura la imagen utilizando un filtro regularizado.
deconvl ucy - restaura la imagen con el algoritmo Lucy-Richardson.
deconvbl i nd - restaura la imagen utilizando el algoritmo de deconvolucin ciega.
La tarea fundamental para aclarar una imagen borrosa consiste en deconvolucionar la
imagen con el operador de dispersin PSF que describa exactamente su distorsin (ms
detalle en la funcin deconvbl i nd) . La deconvolucin es el proceso para revertir el efecto
de la convolucin. La calidad de la imagen aclarada depende principalmente del
conocimiento del operador de dispersin, cuya estimacin apropiada es uno de los
problemas ms difciles en la restauracin de imgenes digitales.
Todas las funciones destinadas al aclarado de una imagen borrosa en la IPT aceptan como
entrada un operador de dispersin PSF y una imagen borrosa a restaurar. Las funciones
deconvwnr y deconvr eg necesitan informacin a cerca del ruido para poder reducir la
posible amplificacin del ruido durante el proceso de enfoque o aclarado. Por otro lado, la
funcin deconvl ucy realiza mltiples iteraciones con tcnicas de optimizacin y
estadsticas de Poisson y no necesita tener informacin a cerca del ruido aditivo de la
imagen degradada, al igual que la funcin deconvbl i nd, que restaura la imagen sin el
conocimiento del operador de dispersin (deconvolucin ciega) basndose en una
estimacin inicial que se le pasa como parmetro e iterando de la misma manera que la
funcin deconvl ucy. En cualquiera de los casos siempre se tendr que iterar varias veces y
observar los resultados intermedios para encontrar la mejor aproximacin a la imagen
original.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 152 de 410
Sintaxis
J = deconvl ucy( I , PSF)
J = deconvl ucy( I , PSF, NUMI T)
J = deconvl ucy( I , PSF, NUMI T, DAMPAR)
J = deconvl ucy( I , PSF, NUMI T, DAMPAR, WEI GHT)
J = deconvl ucy( I , PSF, NUMI T, DAMPAR, WEI GHT, READOUT)
J = deconvl ucy( I , PSF, NUMI T, DAMPAR, WEI GHT, READOUT, SUBSMPL)
Descripcin
J = deconvl ucy( I , PSF) arregla una imagen I que ha sido degradada debido a una
convolucin con un operador de dispersin PSF y probablemente tambin a la adicin de
ruido aditivo. I puede ser un array N-dimensional.
J = deconvl ucy( I , PSF, NUMI T) especifica el nmero de iteraciones (10 por defecto)
en la variable NUMI T.
J = deconvl ucy( I , PSF, NUMI T, DAMPAR) especifica en la variable DAMPAR el umbral
de desviacin de la imagen resultante a partir de la imagen de entrada I (en trminos de la
desviacin estndar del ruido de Poisson) por debajo del cual se produce amortiguacin. Se
suprimen las iteraciones para los pxeles que se desvan DAMPAR del valor original. Esto
elimina la generacin de ruido en esos pxeles y mantiene los detalles de la imagen en el
resto. El valor por defecto es 0 (sin amortiguacin).
J = deconvl ucy( I , PSF, NUMI T, DAMPAR, WEI GHT) especifica el peso que tendrn los
pxeles de la imagen de entrada I en la restauracin, reflejando la calidad de captacin de
la cmara. Si los pxeles tienen mala calidad, se les debe dar mucho peso para que se
restauren fuertemente. Por defecto WEI GHT es un array unitario del mismo tamao que la
imagen de entrada y a sus elementos se les puede asignar un valor de entre 0.0 y 1
dependiendo si se quiere que sean menos o ms considerados en la restauracin. Por
ejemplo, para excluir un pixel se le debe asignar valor 0 en el array.
J = deconvl ucy( I , PSF, NUMI T, DAMPAR, WEI GHT, READOUT) donde READOUT es un
array (o valor) correspondiente al ruido aditivo (p.ej. de fondo) y la varianza del ruido de
lectura de la cmara. READOUT debe estar en las mismas unidades que la imagen y su valor
por defecto es 0.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 153 de 410
J = deconvl ucy( I , PSF, NUMI T, DAMPAR, WEI GHT, READOUT, SUBSMPL) , donde la
variable SUBSMPL significa sub-muestreo y se usa cuando el coeficiente PSF se da en una
cuadrcula que es SUBSMPL veces ms fina que la imagen. El valor por defecto es 1.
Nota: La imagen de salida J podra tener ringing (artefactos oscilantes en
imgenes restauradas) introducido por la Transformada de Fourier discreta usada en
el algoritmo. Para reducirlo se debe usar I = edget aper ( I , PSF) antes de llamar a
la funcin deconvl ucy.
Si I es una matriz de celdas, esta puede contener un array numrico nico (la imagen
borrosa) o puede ser la salida de una llamada anterior a la funcin deconvl ucy. Cuando se
le pasa una matriz de celdas como entrada, devuelve un array de celdas J de 1-por-4 en el
que:
J {1} contiene la imagen original I .
J {2} contiene el resultado de la ltima iteracin.
J {3} contiene el resultado de la penltima iteracin.
J {4} es un array generado por el algoritmo de iteracin.
I y PSF pueden ser tipo ui nt 8, ui nt 16, i nt 16, si ngl e, o doubl e. DAMPAR y READOUT
deben ser del mismo tipo que la imagen de entrada. El resto de variables de entrada deben
ser de tipo doubl e. La imagen de salida J (o el primer array de la matriz de celdas de
salida) tiene el mismo tipo que la imagen de entrada I .
Ejemplos de uso
Ejemplo 1: Aclarar una imagen borrosa debido a ruido gaussiano utilizando el mtodo
Lucy-Richardson y comparar el resultado final e inicial utilizando varios parmetros de la
funcin.
%Cr eamos una i magen con pat r n t abl er o de aj edr ez.

I = checker boar d( 8) ;

%Cr eamos un f i l t r o gaussi ano, nuest r o oper ador de di sper si n PSF.
Fi l t r amos l a i magen y l e aadi mos r ui do.

PSF = f speci al ( ' gaussi an' , 7, 10) ;
V = . 0001;
Bl ur r edNoi sy = i mnoi se( i mf i l t er ( I , PSF) , ' gaussi an' , 0, V) ;
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 154 de 410
%Def i ni mos el peso de l os p xel es.

WT = zer os( si ze( I ) ) ;
WT( 5: end- 4, 5: end- 4) = 1;

%Real i zamos l a deconvol uci n ci ega y compar amos l a i magen or i gi nal con
l os r esul t ados de l a deconvol uci n ut i l i zando var i os par met r os
( i t er aci ones, umbr al de desvi aci n y peso de l os p xel es) .

J 1 = deconvl ucy( Bl ur r edNoi sy, PSF) ;
J 2 = deconvl ucy( Bl ur r edNoi sy, PSF, 20, sqr t ( V) ) ;
J 3 = deconvl ucy( Bl ur r edNoi sy, PSF, 20, sqr t ( V) , WT) ;

subpl ot ( 221) ; i mshow( Bl ur r edNoi sy)
t i t l e( ' I magen or i gi nal Rui dosa y Bor r osa' ) ;
subpl ot ( 222) ; i mshow( J 1)
t i t l e( ' deconvl ucy( A, PSF) ' ) ;
subpl ot ( 223) ; i mshow( J 2)
t i t l e( ' deconvl ucy( A, PSF, NI , DP) ' ) ;
subpl ot ( 224) ; i mshow( J 3)
t i t l e( ' deconvl ucy( A, PSF, NI , DP, WT) ' ) ;


Figura f.111 - comparativa deconvlucy
Funciones relacionadas
deconvbl i nd, deconvr eg, deconvwnr , ot f 2psf , padar r ay, psf 2ot f
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 155 de 410
deconvreg
Aclarado de una imagen usando el mtodo del filtro normalizado
Introduccin
La IPT incluye cuatro funciones para el aclarado de imgenes borrosas (deblurring o anti-
desenfoque) listadas a continuacin en orden de mayor a menor complejidad:
deconvwnr - restaura la imagen utilizando el filtro Wiener.
deconvr eg - restaura la imagen utilizando un filtro regularizado.
deconvl ucy - restaura la imagen con el algoritmo Lucy-Richardson.
deconvbl i nd - restaura la imagen utilizando el algoritmo de deconvolucin ciega.
La tarea fundamental para aclarar una imagen borrosa consiste en deconvolucionar la
imagen con el operador de dispersin PSF que describa exactamente su distorsin (ms
detalle en la funcin deconvbl i nd) . La deconvolucin es el proceso para revertir el efecto
de la convolucin. La calidad de la imagen aclarada depende principalmente del
conocimiento del operador de dispersin, cuya estimacin apropiada es uno de los
problemas ms difciles en la restauracin de imgenes digitales.
Todas las funciones destinadas al aclarado de una imagen borrosa en la IPT aceptan como
entrada un operador de dispersin PSF y una imagen borrosa a restaurar. Las funciones
deconvwnr y deconvr eg necesitan informacin a cerca del ruido para poder reducir la
posible amplificacin del ruido durante el proceso de enfoque o aclarado. Por otro lado, la
funcin deconvl ucy realiza mltiples iteraciones con tcnicas de optimizacin y
estadsticas de Poisson y no necesita tener informacin a cerca del ruido aditivo de la
imagen degradada, al igual que la funcin deconvbl i nd, que restaura la imagen sin el
conocimiento del operador de dispersin (deconvolucin ciega) basndose en una
estimacin inicial que se le pasa como parmetro e iterando de la misma manera que la
funcin deconvl ucy. En cualquiera de los casos siempre se tendr que iterar varias veces y
observar los resultados intermedios para encontrar la mejor aproximacin a la imagen
original.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 156 de 410
Sintaxis
J = deconvr eg( I , PSF)
J = deconvr eg( I , PSF, NOI SEPOWER)
J = deconvr eg( I , PSF, NOI SEPOWER, LRANGE)
J = deconvr eg( I , PSF, NOI SEPOWER, LRANGE, REGOP)
[ J , LAGRA] = deconvr eg( I , PSF, . . . )
Descripcin
J = deconvr eg( I , PSF) deconvoluciona la imagen I utilizando el algoritmo del filtro
normalizado. La funcin devuelve la imagen aclarada J asumiendo que la imagen I se cre
a partir de la convolucin de la imagen con un operador de dispersin PSF y
probablemente con la adicin de ruido. El algoritmo est limitado de forma ptima ya que
hay el menor error cuadrado posible entre las imgenes estimadas y reales, preservando la
suavidad de la imagen. I puede ser un array N-dimensional.
J = deconvr eg( I , PSF, NOI SEPOWER) donde NOI SEPOWER es la fuerza del ruido aditivo.
Por defecto es 0.
J = deconvr eg( I , PSF, NOI SEPOWER, LRANGE) donde LRANGE es un vector que
especifica el rango en el que se buscar la solucin ptima. El algoritmo encontrar un
multiplicador Lagrange ptimo LAGRA dentro del rango LRANGE. Si LRANGE es un escalar, el
algoritmo asume que se ha dado LAGRA y que vale lo mismo que LRANGE; el valor NP se
ignorara en ese caso. El rango por defecto est comprendido entre [1e-9 y 1e9].
J = deconvr eg( I , PSF, NOI SEPOWER, LRANGE, REGOP) donde REGOP es el operador
de regularizacin que har la deconvolucin. Por defecto es el operador Laplaciano, para
mantener la suavidad de la imagen. Las dimensiones del array REGOP no deben exceder las
dimensiones de la imagen; cualquier dimensin no nica debe corresponderse con la
dimensin no nica de PSF.
[ J , LAGRA] = deconvr eg( I , PSF, . . . ) guarda el valor del multiplicador de Lagrange
en la variable LAGRA adems de restaurar la imagen J .
Nota: La imagen de salida J podra tener ringing (artefactos oscilantes en
imgenes restauradas) introducido por la Transformada de Fourier discreta usada en
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 157 de 410
el algoritmo. Para reducirlo se debe usar I = edget aper ( I , PSF) antes de llamar a
la funcin deconvr eg.
I puede ser de tipo ui nt 8, ui nt 16, i nt 16, si ngl e, o doubl e. El resto de parmetros de
entrada debern ser de tipo doubl e. J ser de la misma clase que I .
Ejemplos de uso
Ejemplo 1: Aclarar una imagen borrosa debido a ruido gaussiano utilizando el mtodo del
filtro normalizado y comparar el resultado final e inicial utilizando varios parmetros de la
funcin.
%Cr eamos una i magen con pat r n t abl er o de aj edr ez.

I = checker boar d( 8) ;

%Cr eamos un f i l t r o gaussi ano, nuest r o oper ador de di sper si n PSF.
Fi l t r amos l a i magen y l e aadi mos r ui do.

PSF = f speci al ( ' gaussi an' , 7, 10) ;
V = . 01;
Bl ur r edNoi sy = i mnoi se( i mf i l t er ( I , PSF) , ' gaussi an' , 0, V) ;

NOI SEPOWER = V*pr od( si ze( I ) ) ;

%Real i zamos l a deconvol uci n y r ecogemos l a i magen deconvol uci onada y el
mul t i pl i cador de Lagr ange.

[ J LAGRA] = deconvr eg( Bl ur r edNoi sy, PSF, NOI SEPOWER) ;

%Compar amos l a i magen or i gi nal con l os r esul t ados de l a deconvol uci n
ut i l i zando var i os par met r os ( f uer za del r ui do adi t i vo y r ango Lagr ange
di smi nui do y aument ado) .

subpl ot ( 221) ; i mshow( Bl ur r edNoi sy)
t i t l e( ' I magen or i gi nal Rui dosa y Bor r osa' ) ;
subpl ot ( 222) ; i mshow( J )
t i t l e( ' [ J LAGRA] = deconvr eg( A, PSF, NP) ' ) ;
subpl ot ( 223) ; i mshow( deconvr eg( Bl ur r edNoi sy, PSF, [ ] , LAGRA/ 10) )
t i t l e( ' deconvr eg( A, PSF, [ ] , 0. 1*LAGRA) ' ) ;
subpl ot ( 224) ; i mshow( deconvr eg( Bl ur r edNoi sy, PSF, [ ] , LAGRA*10) )
t i t l e( ' deconvr eg( A, PSF, [ ] , 10*LAGRA) ' ) ;

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 158 de 410

Figura f.112 - comparativa deconvreg
Funciones relacionadas
deconvbl i nd, deconvl ucy, deconvwnr , ot f 2psf , padar r ay, psf 2ot f

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 159 de 410
deconvwnr
Aclarado de una imagen usando un filtro Wiener
Introduccin
La IPT incluye cuatro funciones para el aclarado de imgenes borrosas (deblurring o anti-
desenfoque) listadas a continuacin en orden de mayor a menor complejidad:
deconvwnr - restaura la imagen utilizando el filtro Wiener.
deconvr eg - restaura la imagen utilizando un filtro regularizado.
deconvl ucy - restaura la imagen con el algoritmo Lucy-Richardson.
deconvbl i nd - restaura la imagen utilizando el algoritmo de deconvolucin ciega.
La tarea fundamental para aclarar una imagen borrosa consiste en deconvolucionar la
imagen con el operador de dispersin PSF que describa exactamente su distorsin (ms
detalle en la funcin deconvbl i nd) . La deconvolucin es el proceso para revertir el efecto
de la convolucin. La calidad de la imagen aclarada depende principalmente del
conocimiento del operador de dispersin, cuya estimacin apropiada es uno de los
problemas ms difciles en la restauracin de imgenes digitales.
Todas las funciones destinadas al aclarado de una imagen borrosa en la IPT aceptan como
entrada un operador de dispersin PSF y una imagen borrosa a restaurar. Las funciones
deconvwnr y deconvr eg necesitan informacin a cerca del ruido para poder reducir la
posible amplificacin del ruido durante el proceso de enfoque o aclarado. Por otro lado, la
funcin deconvl ucy realiza mltiples iteraciones con tcnicas de optimizacin y
estadsticas de Poisson y no necesita tener informacin a cerca del ruido aditivo de la
imagen degradada, al igual que la funcin deconvbl i nd, que restaura la imagen sin el
conocimiento del operador de dispersin (deconvolucin ciega) basndose en una
estimacin inicial que se le pasa como parmetro e iterando de la misma manera que la
funcin deconvl ucy. En cualquiera de los casos siempre se tendr que iterar varias veces y
observar los resultados intermedios para encontrar la mejor aproximacin a la imagen
original.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 160 de 410
Sintaxis
J = deconvwnr ( I , PSF, NSR)
J = deconvwnr ( I , PSF, NCORR, I CORR)
Descripcin
J = deconvwnr ( I , PSF, NSR) deconvoluciona la imagen I utilizando el filtro de Wiener
como algoritmo y devolviendo la imagen aclarada J . I puede ser un array N-dimensional.
PSF es el operador de dispersin con el que se convolucion la imagen I . NSR es el
coeficiente de seal a ruido del ruido aditivo y puede ser un escalar o un array del mismo
tamao que I . Dar a NSR un valor de 0 es equivalente a crear un filtro inverso ideal.
J = deconvwnr ( I , PSF, NCORR, I CORR) deconvoluciona la imagen I , con NCORR
representando la funcin de autocorrelaccin del ruido e I CORR la funcin de
autocorrelacin de la imagen original. NCORR e I CORR pueden ser de cualquier dimensin,
no excediendo la de la imagen original. Si NCORR o I CORR son arrays N-dimensionales, sus
valores corresponden con la autocorrelacin en cada dimensin. Si NCORR o I CORR son
vectores y PSF tambin, los valores representan la funcin de autocorrelaccin en la
primera dimensin. Si PSF es un array, la funcin de autocorrelacin de la primera
dimensin se extrapola por simetra a todas las dimensiones no nicas de PSF. Si NCORR o
I CORR son un escalar, su valor representa la potencia de ruido de la imagen.
Nota: La imagen de salida J podra tener ringing (artefactos oscilantes en
imgenes restauradas) introducido por la Transformada de Fourier discreta usada en
el algoritmo. Para reducirlo se debe usar I = edget aper ( I , PSF) antes de llamar a
la funcin deconvwnr .
I puede ser del tipo ui nt 8, ui nt 16, i nt 16, si ngl e, o doubl e. El resto de entradas deben
ser de clase doubl e. J ser de la misma clase que I .
Ejemplos de uso
Ejemplo 1: Aclarar una imagen borrosa debido a desenfoque por movimiento y a ruido
gaussiano utilizando el filtro Wiener y comparar el resultado final e inicial. Utilizar el filtro
directamente suponiendo que no hay ruido y tambin estimando el posible ruido.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 161 de 410

%Most r amos l a i magen or i gi nal .

I = i m2doubl e( i mr ead( ' camer aman. t i f ' ) ) ;
subpl ot ( 221) ; i mshow( I )
t i t l e( ' I magen Or i gi nal ' ) ;

%Si mul amos desenf oque por movi mi ent o.

LEN = 21;
THETA = 11;
PSF = f speci al ( ' mot i on' , LEN, THETA) ;
bl ur r ed = i mf i l t er ( I , PSF, ' conv' , ' ci r cul ar ' ) ;

%Si mul amos r ui do adi t i vo.

noi se_mean = 0;
noi se_var = 0. 0001;
bl ur r ed_noi sy = i mnoi se( bl ur r ed, ' gaussi an' , noi se_mean, noi se_var ) ;
subpl ot ( 222) ; i mshow( bl ur r ed_noi sy)
t i t l e( ' Si mul ar Rui do y Desenf oque' )

%I nt ent amos r est aur ar l a suponi endo que no hay r ui do.

est i mat ed_nsr = 0;
wnr 2 = deconvwnr ( bl ur r ed_noi sy, PSF, est i mat ed_nsr ) ;
subpl ot ( 223) ; i mshow( wnr 2)
t i t l e( ' Rest aur aci n usando NSR = 0' )

%I nt ent amos r est aur ar l a ut i l i zando una mej or est i maci n del r at i o de
seal a r ui do.

est i mat ed_nsr = noi se_var / var ( I ( : ) ) ;
wnr 3 = deconvwnr ( bl ur r ed_noi sy, PSF, est i mat ed_nsr ) ;
subpl ot ( 224) ; i mshow( wnr 3)
t i t l e( ' Rest aur aci n usando una est i maci n de NSR' ) ;

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 162 de 410

Figura f.113 - comparativa deconvwnr
Funciones relacionadas
deconvbl i nd, deconvl ucy, deconvr eg, edget aper , ot f 2psf , padar r ay, psf 2ot f

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 163 de 410
decorrstretch
Descorrelacin (decorrelation stretch) en una imagen multicanal
Introduccin
Decorrelation stretch (o simplemente descorrelacin) es una tcnica de mejora de
imgenes que saca el mximo partido a las diferencias de color en una imagen. Se empez
aplicando en teledeteccin y tiene la habilidad de destacar elementos de la imagen que son
prcticamente invisibles al ojo humano. Una de las formas de hacerlo es eliminando la
correlacin intercanal de los pxeles de entrada, de ah el nombre de decorrelation stretch.
Sintaxis
S = decor r st r et ch( I )
S = decor r st r et ch( I , ' TOL' , TOL )
Descripcin
S = decor r st r et ch( I ) aplica la tcnica de decorrelation stretch a una imagen multicanal
I y devuelve el resultado en la variable S del mismo tamao y clase que I . La media y la
varianza en cada canal o banda son las mismas que en I .
S = decor r st r et ch( I , ' TOL' , TOL) mejora el contraste despus de aplicar la tcnica
de decorrelation stretch. La mejora del contraste se controla con la variable TOL. TOL debe
estar entre 0 y 0.5.
TOL = [ LOW_FRACT HI GH_FRACT] especifica la fraccin de la imagen que se
saturar usando lmites de intensidad alta y baja.
Si TOL es un escalar, LOW_FRACT = TOL, y HI GH_FRACT = 1 - TOL, lo que hace
que se saturen fracciones de imagen iguales en baja y altas intensidades.
Nota: La tcnica de decorrelation stretch se aplica normalmente a imgenes
multicanal de 3 canales (normalmente imgenes RGB) pero decor r st r et ch trabaja
con un nmero arbitrario de canales o bandas.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 164 de 410
El principal propsito de esta tcnica es la de mejorar la visualizacin de una imagen.
Pequeos ajustes en la variable TOL pueden significar grandes cambios en la apariencia de
la salida.
La imagen de entrada debe de ser de tipo ui nt 8, ui nt 16, i nt 16, si ngl e, o doubl e.
Ejemplos de uso
Ejemplo 1: Destacar elementos importantes en unas imgenes comparando el resultado.
%Leemos l a i magen y l e apl i camos l a descor r el aci n usando di st i nt os
val or es de cont r ast e.

I = i mr ead( ' ear t h. t i f ' ) ;

S = decor r st r et ch( I , ' TOL' , 0. 01) ;
S2 = decor r st r et ch( I , ' TOL' , 0. 1) ;
TOL = [ 0. 01 0. 2] ;
S3 = decor r st r et ch( I , ' TOL' , TOL) ;

%Most r amos t odas l as i mgenes.

f i gur e, i mshow( I )
f i gur e, i mshow( S)
f i gur e, i mshow( S2)
f i gur e, i mshow( S3)

%Leemos ot r a i magen, l e apl i camos de nuevo l a descor r el aci n y
most r amos.

I S = i mr ead( ' al t ami r a. t i f ' ) ;

SS = decor r st r et ch( I S, ' TOL' , 0. 01) ;

f i gur e, i mshow( I S)
f i gur e, i mshow( SS)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 165 de 410

Figura f.114 - Imagen original (I) Figura f.115 - Imagen procesada (S)


Figura f.116 - Imagen procesada (S2) Figura f.117 - Imagen procesada (S3)


Figura f.118 - Imagen original (IS) Figura f.119 - Imagen procesada (SS)
Funciones relacionadas
i madj ust , st r et chl i m
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 166 de 410
demosaic
Conversin de una imagen en formato patrn Bayer a color verdadero
Introduccin
El filtro, mscara o mosaico de Bayer (o filtro de color) es un tipo de matriz de filtros rojos
verdes y azules, que se sita sobre un sensor digital de imagen para hacer llegar a cada
fotodiodo la informacin de luminosidad correspondiente a una seccin de los distintos
colores primarios. Interpolando las muestras de cuatro fotodiodos vecinos se obtiene un
pixel de color. El mosaico de Bayer est formado por un 50% de filtros verdes, un 25% de
rojos y un 25% de azules. Interpolando dos muestras verdes, una roja y una azul se obtiene
un pixel de color. La razn de que se use mayor cantidad de puntos verdes es que el ojo
humano es ms sensible a ese color.
[11]

Sintaxis
RGB = demosai c( I , sensor Al i gnment )
Descripcin
RGB = demosai c( I , sensor Al i gnment ) convierte una imagen codificada con un patrn
Bayer a una imagen en formato color verdadero utilizando interpolacin lineal. I es un
array de M-por-N con valores de intensidad que estn codificados en formato Bayer. I
debe tener al menos 5 filas y 5 columnas.
La funcin demosai c utiliza interpolacin para convertir la imagen bidimensional
codificada con el patrn Bayer en una imagen en formato color verdadero que es un array
de M-por-N-por-3.
sensor Al i gnment es una de las siguientes cadenas de texto que define el patrn Bayer.
Cada cadena representa el orden de los sensores rojos, verdes y azules describiendo los
cuatro pxeles en la esquina superior izquierda de la imagen (de izquierda a derecha y de
arriba a abajo):


Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 167 de 410
Valor cadena Alineacin 2-por-2 del Sensor
' gbr g'

Figura f.120 - Sensor gbrg
' gr bg'

Figura f.121 - Sensor gbrg
' bggr '

Figura f.122 - Sensor gbrg
' r ggb'

Figura f.123 - Sensor gbrg
I puede ser ui nt 8 o ui nt 16, y debe ser real. RGB es del mismo tipo que I .
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 168 de 410
Ejemplos de uso
Ejemplo 1: Convertir una imagen codificada con un patrn Bayer que ha sido tomada por
una cmara de fotos con una alineacin del sensor del tipo ' bggr ' .
%Most r amos l a i magen codi f i cada en pat r n Bayer , conver t i mos a col or
ver dader o especi f i cando l a al i neaci n del sensor y most r amos r esul t ado.

I = i mr ead( ' mandi . t i f ' ) ;
J = demosai c( I , ' bggr ' ) ;
i mshow( I )
f i gur e, i mshow( J )


Figura f.124 - Imagen original (I) patrn Bayer


Figura f.125 - Imagen procesada (J) convertida

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 169 de 410
dicomanon
Anonimizar un archivo DICOM
Introduccin
DICOM (Digital Imaging and Communication in Medicine) es el estndar en Imagen
Digital y Comunicaciones en Medicina desarrollado para que usuarios y fabricantes de
equipamiento de imagen mdica (tal como TAC, resonancia magntica, medicina nuclear y
ultrasonidos) puedan intercambiar imgenes con otros dispositivos. El Colegio
Estadounidense de Radiologa, ACR y la Asociacin Nacional de Fabricantes Elctricos,
NEMA llegaron al formato DICOM desarrollando una interfaz que permita la
comunicacin entre el equipo y cualquier otro dispositivo y un diccionario de los
elementos de datos necesarios para la visualizacin e interpretacin de las imgenes.
[12]

Sintaxis
di comanon( f i l e_i n, f i l e_out )
di comanon( . . . , ' keep' , FI ELDS)
di comanon( . . . , ' updat e' , ATTRS)
Descripcin
di comanon( f i l e_i n, f i l e_out ) elimina informacin mdica confidencial del archivo
DICOM especificado en f i l e_i n y crea un nuevo archivo f i l e_out con los valores
modificados. El resto de informacin no se modifica.
di comanon( . . . , ' keep' , FI ELDS) modifica todos los datos confidenciales a excepcin
de los que estn listados en el array FI ELDS, que es un array de celdas con nombres de
campo. Esta sintaxis es til para mantener los metadatos que no identifican al paciente de
forma nica pero que son tiles para el diagnstico (p.ej., PatientAge (edad del paciente),
PatientSex (sexo del paciente), etc.).
Nota: Mantener ciertos campos puede comprometer la confidencialidad del
paciente.
di comanon( . . . , ' updat e' , ATTRS) modifica los datos confidenciales manteniendo
ciertos campos y actualizando otros campos confidenciales particulares. ATTRS es la
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 170 de 410
estructura cuyos campos son los nombres de los atributos a conservar. Usar esta sintaxis
para mantener la jerarqua Estudios/Series/Imgenes o para reemplazar un valor especfico
con una propiedad ms genrica (p.ej., eliminar la fecha de nacimiento del paciente
(PatientBirthDate) manteniendo su edad (PatientAge)).
Para ms informacin sobre los campos que se modificarn y eliminarn, consultar el
suplemento DICOM 55 desde su web oficial http://medical.nema.org/.
Ejemplos de uso
Ejemplo 1: Eliminar todos los metadatos confidenciales de un archivo DICOM.
di comanon( ' pat i ent . dcm' , ' anonymi zed. dcm' )
Ejemplo 2: Eliminar todos los datos confidenciales de un archivo DICOM a excepcin de
la edad, el sexo y la descripcin del estudio.
di comanon( ' t umor . dcm' , ' t umor _anon. dcm' , ' keep' , {' Pat i ent Age' ,
' Pat i ent Sex' , ' St udyDescr i pci n' })
Ejemplo 3: Anonimizar una serie de imgenes manteniendo la jerarqua.
Val or s. St udyI nst anceUI D = di comui d;
Val or s. Ser i esI nst anceUI D = di comui d;

d = di r ( ' *. dcm' ) ;
f or p = 1: numel ( d)
di comanon( d( p) . name, spr i nt f ( ' anon%d. dcm' , p) , . . .
' updat e' , Val or s)
end
Funciones relacionadas
di comi nf o, di comwr i t e

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 171 de 410
dicomdict
Conseguir o activar los datos del diccionario DICOM
Introduccin
El diccionario DICOM es el diccionario de los elementos de datos necesarios para la
visualizacin e interpretacin de las imgenes en el formato DICOM.
Sintaxis
di comdi ct ( ' set ' , di ct i onar y)
di ct i onar y = di comdi ct ( ' get ' )
di comdi ct ( ' f act or y' )
Descripcin
di comdi ct ( ' set ' , di ct i onar y) asigna el diccionario DICOM al valor guardado en la
variable di ct i onar y, una cadena que contiene el nombre de archivo del diccionario. Las
funciones utilizadas en el formato DICOM usan este diccionario por defecto a menos que
se especifique otro diccionario desde la lnea de comandos.
di ct i onar y = di comdi ct ( ' get ' ) devuelve una cadena que contiene el nombre de
archivo del diccionario de los elementos de datos DICOM.
di comdi ct ( ' f act or y' ) resetea el diccionario DICOM a su valor inicial por defecto.
Nota: El diccionario es por defecto un archivo de MATLAB llamado di com-
di ct . mat . La toolbox incluye adems una versin en texto del diccionario llamada
di com- di ct . t xt . Si se quiere crear un diccionario diferente, abrir el archivo
di com- di ct . t xt en un editor de texto, modificarlo y guardarlo con otro nombre.
Ejemplos de uso
Ejemplo 1: Recoger el nombre del archivo de datos del diccionario DICOM.
di ct i onar y = di comdi ct ( ' get ' )
Funciones relacionadas
di comi nf o, di comr ead, di comwr i t e
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 172 de 410
dicominfo
Lectura de metadatos de un archivo DICOM
Sintaxis
i nf o = di comi nf o( f i l ename)
i nf o = di comi nf o( f i l ename, ' di ct i onar y' , D)
Descripcin
i nf o = di comi nf o( f i l ename) lee los metadatos del archivo en formato DICOM
especificado en la cadena f i l ename y lo guarda como estructura de metadatos en la
variable i nf o.
i nf o = di comi nf o( f i l ename, ' di ct i onar y' , D) usa el archivo de diccionario de
datos especificado en la variable D para leer el archivo en formato DICOM. El archivo
especificado en D debe estar en la ruta de bsqueda de MATLAB. El archivo de
diccionario por defecto es di com- di ct . mat .
Ejemplos de uso
Ejemplo 1: Leer los metadatos de un archivo en formato DICOM.
i nf o = di comi nf o( ' CT- MONO2- 16- ankl e. dcm' )

i nf o =
Fi l ename: [ 1x75 char ]
Fi l eModDat e: ' 18- di c- 2000 12: 06: 42'
Fi l eSi ze: 525436
For mat : ' DI COM'
For mat Ver si on: 3
Wi dt h: 512
Hei ght : 512
Bi t Dept h: 16
Col or Type: ' gr ayscal e'
Fi l eMet aI nf or mat i onGr oupLengt h: 192
Fi l eMet aI nf or mat i onVer si on: [ 2x1 ui nt 8]
Medi aSt or ageSOPCl assUI D: ' 1. 2. 840. 10008. 5. 1. 4. 1. 1. 7'
Medi aSt or ageSOPI nst anceUI D:
' 1. 2. 840. 113619. 2. 1. 2411. 1031152382. 365. 1. 736169244'
Tr ansf er Synt axUI D: ' 1. 2. 840. 10008. 1. 2'
I mpl ement at i onCl assUI D: ' 1. 2. 840. 113619. 6. 5'
I mpl ement at i onVer si onName: ' 1_2_5'
Sour ceAppl i cat i onEnt i t yTi t l e: ' CTN_STORAGE'
I dent i f yi ngGr oupLengt h: 414
I mageType: ' DERI VED\ SECONDARY\ 3D'
SOPCl assUI D: ' 1. 2. 840. 10008. 5. 1. 4. 1. 1. 7'
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 173 de 410
SOPI nst anceUI D:
' 1. 2. 840. 113619. 2. 1. 2411. 1031152382. 365. 1. 736169244'
St udyDat e: ' 1993. 04. 30'
Ser i esDat e: ' 1993. 04. 30'
Cont ent Dat e: ' 1993. 04. 30'
St udyTi me: ' 11: 27: 24'
Ser i esTi me: ' 11: 27: 24'
Cont ent Ti me: ' 11: 27: 24'
Modal i t y: ' CT'
Conver si onType: ' WSD'
Manuf act ur er : ' GE MEDI CAL SYSTEMS'
I nst i t ut i onName: ' J FK I MAGI NG CENTER'
Ref er r i ngPhysi ci anName: [ 1x1 st r uct ]
St at i onName: ' CT01OC0'
St udyDescr i pt i on: ' RT ANKLE'
Physi ci anReadi ngSt udy: [ 1x1 st r uct ]
Oper at or Name: [ 1x1 st r uct ]
Manuf act ur er Model Name: ' GENESI S_ZEUS'
Pat i ent Gr oupLengt h: 18
Pat i ent Name: [ 1x1 st r uct ]
Acqui si t i onGr oupLengt h: 10
Sof t war eVer si on: ' 03'
Rel at i onshi pGr oupLengt h: 134
St udyI nst anceUI D:
' 1. 2. 840. 113619. 2. 1. 1. 322987881. 621. 736170080. 681'
Ser i esI nst anceUI D:
' 1. 2. 840. 113619. 2. 1. 2411. 1031152382. 365. 736169244'
Ser i esNumber : 365
I nst anceNumber : 1
I magePr esent at i onGr oupLengt h: 168
Sampl esPer Pi xel : 1
Phot omet r i cI nt er pr et at i on: ' MONOCHROME2'
Rows: 512
Col umns: 512
Bi t sAl l ocat ed: 16
Bi t sSt or ed: 16
Hi ghBi t : 15
Pi xel Repr esent at i on: 1
Smal l est I magePi xel Val ue: 0
Pi xel Paddi ngVal ue: 0
Wi ndowCent er : 1024
Wi ndowWi dt h: 4095
Rescal eI nt er cept : - 1024
Rescal eSl ope: 1
Rescal eType: ' US'
Pi xel Dat aGr oupLengt h: 524296
Funciones relacionadas
di comdi ct , di comr ead, di comwr i t e, di comui d
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 174 de 410
dicomlookup
Encontrar un atributo en el diccionario de datos DICOM
Sintaxis
name = di coml ookup( gr oup, el ement )
[ gr oup, el ement ] = di coml ookup( name)
Descripcin
name = di coml ookup( gr oup, el ement ) busca un atributo en el diccionario de datos
DICOM usando las etiquetas de grupo y elemento especificadas en las variables gr oup y
el ement y devuelve una cadena que contiene el nombre del atributo. Las variables gr oup y
el ement pueden contener un valor decimal o una cadena hexadecimal.
[ gr oup, el ement ] = di coml ookup( name) busca el atributo especificado por la variable
name en el diccionario de datos DICOM actual y devuelve las etiquetas asociadas con el
atributo en las variables gr oup y el ement .
Ejemplos de uso
Ejemplo 1: Buscar algunos nombres de atributos DICOM utilizando sus etiquetas de grupo
y elemento.
name1 = di coml ookup( ' 7FE0' , ' 0010' )
name2 = di coml ookup( 40, 4)

name1 =
Pi xel Dat a

name2 =
Phot omet r i cI nt er pr et at i on
Ejemplo 2: Buscar las etiquetas grupo y elemento asociadas con el atributo
TransferSyntaxUID.
[ gr oup, el ement ] = di coml ookup( ' Tr ansf er Synt axUI D' )

gr oup =
2

el ement =
16
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 175 de 410
Ejemplo 2: Examinar los metadatos de un archivo en formato DICOM, buscando un
nombre de atributo en el archivo.
met adat a = di comi nf o( ' CT- MONO2- 16- ankl e. dcm' ) ;
met adat a. ( di coml ookup( ' 0028' , ' 0004' ) )

ans =
MONOCHROME2
Funciones relacionadas
di comdi ct , di comi nf o
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 176 de 410
dicomread
Lectura de una imagen DICOM
Sintaxis
X = di comr ead( f i l ename)
X = di comr ead( i nf o)
[ X, map] = di comr ead( . . . )
[ X, map, al pha] = di comr ead( . . . )
[ X, map, al pha, over l ays] = di comr ead( . . . )
[ . . . ] = di comr ead( f i l ename, ' f r ames' , v)
Descripcin
X = di comr ead( f i l ename) lee los datos de imagen desde el archivo DICOM
especificado en la variable f i l ename. Para imgenes simples en escala de grises, X es un
array de M-por-N. Para imgenes simples en color verdadero, X es un array de M-por-N-
por-3. Las imgenes mltiples (archivo de imagen que contiene ms de una imagen) son
siempre arrays en 4-D.
X = di comr ead( i nf o) lee los datos de imagen desde la variable i nf o, una estructura de
metadatos DICOM producida con la funcin di comi nf o.
[ X, map] = di comr ead( . . . ) devuelve la imagen en la variable X y el mapa de color en
map. Si X es una imagen en escala de grises o en color verdadero, la variable map estar
vaca.
[ X, map, al pha] = di comr ead( . . . ) devuelve la imagen en la variable X, el mapa de color
en map y una matriz de canal alfa para X en la variable al pha. Los valores en al pha sern 0
si el pixel es opaco e ndices de filas apuntando a map en caso contrario. Para usar al pha se
debe sustituir el valor RGB en map por el valor en X. al pha tiene la misma altura y anchura
que X y es de 4-D para imgenes mltiples.
[ X, map, al pha, over l ays] = di comr ead( . . . ) devuelve la imagen en la variable X, el
mapa de color en map, una matriz de canal alfa para X en la variable al pha y cualquier
superposicin en la variable over l ays. Cada superposicin (overlay) es una imagen de 1-
bit en blanco y negro con la misma altura y anchura que X. Si hay varias superposiciones
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 177 de 410
en el archivo la variable over l ays ser una imagen mltiple en 4-D. Si no hay
superposiciones, over l ays estar vaca.
[ . . . ] = di comr ead( f i l ename, ' f r ames' , v) lee solo las imgenes especificadas en el
vector v, que debe ser un escalar entero, un vector de enteros o la cadena de caracteres
' al l ' que es su valor por defecto.
X puede ser ui nt 8, i nt 8, ui nt 16, o i nt 16. map debe ser de tipo double. al pha tiene el
mismo tipo y tamao que X. over l ays es un array de tipo l ogi cal .
La funcin di comr ead soporta la lectura de archivos DICOM en formatos de compresin
J PEG-2000 tanto en su tipo reversible (lossless) como irreversible (lossy).
Ejemplos de uso
Ejemplo 1: Utilizar la funcin di comr ead para recoger el array de datos y la matriz de
mapa de color de un archivo DICOM y crear despus un montaje con las imgenes ledas.
[ X, map] = di comr ead( ' US- PAL- 8- 10x- echo. dcm' ) ;
mont age( X, map, ' Si ze' , [ 4 3] ) ;


Figura f.126 - Montaje a partir de imagen DICOM
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 178 de 410
Ejemplo 2: Llamar a di comr ead pasndole la informacin obtenida del archivo DICOM
con di comi nf o y mostrar despus la imagen utilizando la funcin i mshow. Ajustar el
contraste con la herramienta i mcont r ast .
i nf o = di comi nf o( ' CT- MONO2- 16- ankl e. dcm' ) ;
I = di comr ead( i nf o) ;
i mshow( I )
i mcont r ast ;


Figura f.127 - Imagen original (I) Figura f.128 - Imagen con contraste mejorado
Funciones relacionadas
di comdi ct , di comi nf o, di comwr i t e

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 179 de 410
dicomuid
Generacin de un identificador DICOM nico
Sintaxis
UI D = di comui d
Descripcin
UI D = di comui d crea una cadena UI D que contiene un nuevo identificador DICOM nico.
Si la funcin di comui d recibe mltiples llamadas, esta produce valores nicos globales.
Dos llamadas a la funcin siempre devuelven valores distintos.
Funciones relacionadas
di comi nf o, di comwr i t e

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 180 de 410
dicomwrite
Escritura de imgenes como archivos DICOM
Sintaxis
di comwr i t e( X, f i l ename)
di comwr i t e( X, map, f i l ename)
di comwr i t e( . . . , par am1, Val or 1, par am2, Val or 2, . . . )
di comwr i t e( . . . , ' Obj ect Type' , I OD, . . . )
di comwr i t e( . . . , ' SOPCl assUI D' , UI D, . . . )
di comwr i t e( . . . , met a_st r uct , . . . )
di comwr i t e( . . . , i nf o, . . . )
st at us = di comwr i t e( . . . )
Descripcin
di comwr i t e( X, f i l ename) escribe la imagen binaria, en escala de grises o en color
verdadero X al archivo nuevo DICOM cuyo nombre se especifica en la cadena f i l ename.
di comwr i t e( X, map, f i l ename) escribe la imagen indexada x con su mapa de color map.
di comwr i t e( . . . , par am1, Val or 1, par am2, Val or 2, . . . ) especifica metadatos
opcionales a escribir en el archivo DICOM o parmetros que afectarn a cmo se escribir
dicho archivo. par am1 es una cadena que contiene el nombre del atributo o una opcin
especfica de la funcin di comwr i t e. Val or 1 es el valor correspondiente al atributo u
opcin.
Para saber los atributos DICOM que se pueden especificar es preciso consultar el archivo
de diccionario de datos DICOM de nombre di com- di ct . t xt , incluido en la toolbox. La
siguiente tabla explica las opciones que se pueden especificar, ordenadas alfabticamente:
Opcin Descripcin
' Compr essi onMode'
Cadena que especifica el tipo de compresin a usar cuando se
guarda la imagen. Valores posibles:
' None' (por defecto)
' J PEG l ossl ess'
' J PEG l ossy'
' RLE'
' Cr eat eMode'
Especifica el mtodo utilizado para crear los datos que se
guardarn en el nuevo archivo. Los valores posibles son:
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 181 de 410
' Cr eat e' - Comprueba los valores de entrada y genera los datos
de entrada que faltan. (Por defecto)
' Copy' - Copia todos los valores de entrada y no genera ningn
dato que falta.
' Di ct i onar y'
Cadena que especifica el nombre de un diccionario de datos
DICOM.
' Endi an'
Cadena que especifica el tipo de ordenacin de byte del archivo:
(ms informacin sobre los tipos en la pgina de la funcin
anal yze75i nf o)
' Bi g'
' Li t t l e' (por defecto)
Nota: Si la variable VR vale ' Expl i ci t ' , ' Endi an' debe
ser ' Bi g' . di comwr i t e ignora este valor si se han
especificado los parmetros ' Compr essi onMode' o
' Tr ansf er Si nt axi s' .
' Tr ansf er Si nt axi s'
Especifica las opciones ' Endi an' , ' VR' y ' Compr essi onMode' .
Nota: Si se especifica, di comwr i t e ignora cualquier valor
de las opciones ' Endi an' , ' VR' , y ' Compr essi onMode' .
' VR'
Cadena que especifica si el cdigo VR debe escribirse al archivo.
' expl i ci t ' - Escribir VR al archivo.
' i mpl i ci t ' - Deducirlo desde el diccionario de datos. (Por
defecto)
Nota: Si se especifica el valor ' Endi an' como ' Bi g' ,
' VR' debe ser ' Expl i ci t ' .
' Wr i t ePr i vat e'
Valor de tipo Logi cal que indica si los datos privados se deben
escribir al archivo. Los valores posibles son:
t r ue - Escribir datos privados al archivo.
f al se - No escribir datos privados. (Por defecto)
di comwr i t e( . . . , ' Obj ect Type' , I OD, . . . ) escribe un archivo que contiene los
metadatos necesarios para un tipo particular de Objeto de Informacin DICOM (IOD,
DICOM Information Object). Los IODs permitidos son
' Secondar y Capt ur e I mage St or age' (por defecto)
' CT I mage St or age'
' MR I mage St or age'
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 182 de 410
di comwr i t e( . . . , ' SOPCl assUI D' , UI D, . . . ) proporciona un mtodo alternativo para
especificar el IOD a crear. UID es el identificador nico DICOM que corresponde con uno
de los IODs listados anteriormente.
di comwr i t e( . . . , met a_st r uct , . . . ) especifica metadatos opcionales o opciones de
archivo en la estructura met a_st r uct . Los nombres de los campos en la estructura
met a_st r uct deben ser los nombres de los atributos/opciones del archivo DICOM. El
valor de cada campo es el valor que se quiere asignar al atributo o a la opcin.
di comwr i t e( . . . , i nf o, . . . ) especifica metadatos en la estructura i nf o generada con la
funcin di comi nf o. La estructura puede contener muchos campos. Para ms informacin
sobre esta estructura, consultar la pgina de la funcin di comi nf o.
st at us = di comwr i t e( . . . ) devuelve informacin sobre los metadatos y la
desencriptacin utilizada para generar el archivo DICOM. Esta sintaxis puede ser til
cuando se especifica una estructura i nf o creada por la funcin di comi nf o. Si no se
especifica ningn metadato, di comwr i t e devuelve una matriz vaca ([ ] ).
La estructura devuelta por di comwr i t e contiene los siguientes campos:
Campo Descripcin
' BadAt t r i but e'
La descripcin interna del atributo est mal. No se debe poder
encontrar desde el diccionario de datos o debe tener datos
incorrectos en su descripcin.
' Mi ssi ngCondi t i on'
El atributo es condicional pero no se ha especificado ninguna
condicin de cundo usarlo.
' Mi ssi ngDat a'
No se ha especificado ningn dato para un atributo necesario en el
archivo.
' Suspect At t r i but e'
Los datos del atributo no coinciden con las especificaciones
DICOM.
Nota: Las especificaciones del formato DICOM hablan de varias definiciones de
objetos de informacin (IODs) que se pueden crear. Estas IODs corresponden a
imgenes y metadatos producidos por modalidades distintas en la vida real (p.ej.,
MR, Rayos X, Ultrasonidos, etc.). Para cada tipo de IOD, las especificaciones
DICOM definen el conjunto de metadatos que deben aparecer y los posibles valores
de otros metadatos.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 183 de 410
di comwr i t e implementa un nmero limitado de estos IODs (listados arriba en el
parmetro Obj ect Type) con los que verifica que todos los atributos estn presentes,
creando los atributos que faltan si es necesario. Sin embargo, si se quiere escribir
archivos DICOM para IODs que no estn implementados en di comwr i t e, se debe
utilizar el valor ' Copy' del parmetro Cr eat eMode para que di comwr i t e escriba
todos datos de imagen. De este modo se pueden coger los metadatos de un archivo
del mismo tipo o IOD y usarlos para crear un nuevo archivo DICOM con diferentes
datos de imagen. El inconveniente es que se corre el riesgo de copiar informacin
no verificada por la funcin y que podra generar un archivo DICOM que no
cumpliera con el estndar.
Ejemplos de uso
Ejemplo 1: Leer una imagen CT desde el archivo DICOM de ejemplo incluido con la
toolbox y escribir la imagen en otro archivo, creando una segunda captura de la imagen.
X = di comr ead( ' CT- MONO2- 16- ankl e. dcm' ) ;
di comwr i t e( X, ' sc_f i l e. dcm' ) ;
Ejemplo 2: Escribir la imagen X con sus metadatos en un nuevo archivo DICOM, usando
la funcin di comi nf o para obtener los metadatos de otro archivo DICOM.
met adat a = di comi nf o( ' CT- MONO2- 16- ankl e. dcm' ) ;
di comwr i t e( X, ' ct _f i l e. dcm' , met adat a) ;
Ejemplo 3: Copiar todos los metadatos desde un archivo a otro. De esta forma la funcin
di comwr i t e no verifica los metadatos escritos.
di comwr i t e( X, ' ct _copy. dcm' , met adat a, ' Cr eat eMode' , ' copy' ) ;
Funciones relacionadas
di comdi ct , di comi nf o, di comr ead, di comui d

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 184 de 410
edge
Deteccin de bordes en una imagen en escala de grises
Sintaxis
BW= edge( I )

BW= edge( I , ' sobel ' )
BW= edge( I , ' sobel ' , t hr esh)
BW= edge( I , ' sobel ' , t hr esh, di r ect i on)
[ BW, t hr esh] = edge( I , ' sobel ' , . . . )

BW= edge( I , ' pr ewi t t ' )
BW= edge( I , ' pr ewi t t ' , t hr esh)
BW= edge( I , ' pr ewi t t ' , t hr esh, di r ect i on)
[ BW, t hr esh] = edge( I , ' pr ewi t t ' , . . . )

BW= edge( I , ' r ober t s' )
BW= edge( I , ' r ober t s' , t hr esh)
[ BW, t hr esh] = edge( I , ' r ober t s' , . . . )

BW= edge( I , ' l og' )
BW= edge( I , ' l og' , t hr esh)
BW= edge( I , ' l og' , t hr esh, si gma)
[ BW, t hr eshol d] = edge( I , ' l og' , . . . )

BW= edge( I , ' zer ocr oss' , t hr esh, h)
[ BW, t hr esh] = edge( I , ' zer ocr oss' , . . . )

BW= edge( I , ' canny' )
BW= edge( I , ' canny' , t hr esh)
BW= edge( I , ' canny' , t hr esh, si gma)
[ BW, t hr eshol d] = edge( I , ' canny' , . . . )
Introduccin
La deteccin de bordes es la forma ms utilizada en segmentacin para encontrar
discontinuidades en valores de intensidad. Se lleva a cabo mediante derivadas de primer y
segundo orden y la IPT cuenta con una funcin especfica para ello, la funcin edge, desde
la que se puede detectar los bordes de una imagen utilizando diferentes mtodos.
Descripcin
BW= edge( I ) recibe como entrada una imagen binaria o en escala de grises I y devuelve
una imagen binaria BWdel mismo tamao que I , con 1's donde la funcin haya encontrado
bordes y 0's en el resto. I es un array disperso tipo numer i c. BWes de tipo l ogi cal .
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 185 de 410
edge utiliza por defecto el mtodo Sobel para detectar los bordes, pero se pueden utilizar
otros mtodos que se listan a continuacin:
El mtodo Sobel detecta los bordes usando la aproximacin Sobel. Suele obtener
buenos resultados con las opciones por defecto. (Por defecto)
El mtodo Prewitt detecta los bordes usando la aproximacin Prewitt. Suele obtener
resultados parecidos a los obtenidos con el mtodo Sobel.
El mtodo Roberts detecta los bordes usando la aproximacin Roberts. Uno de los
mtodos ms simples y antiguos de deteccin de bordes. No suele usarse mucho
salvo que se necesite simpleza y rapidez.
El mtodo del Laplaciano del Gaussiano detecta los bordes buscando cortes con
cero despus de filtrar I con un filtro Laplaciano o Gaussiano. Obtiene
normalmente mejores resultados que el mtodo Sobel pero a costa de tener que
modificar los parmetros por defecto.
El mtodo de cruce por cero detecta los bordes buscando cruces con cero despus
de filtrar I con el filtro que se especifique. Est basado en el mismo concepto que
el mtodo del Laplaciano del Gaussiano pero se utiliza un filtro especificado para
realizar la convolucin.
El mtodo Canny detecta los bordes buscando mximos locales del gradiente de I .
Este mtodo es el ms potente de todos y por ello es el ms utilizado. Es menos
propenso a confundirse por el ruido y ms propenso a detectar bordes dbiles. Para
obtener el mejor resultado normalmente se necesitan modificar sus parmetros por
defecto.
Normalmente los mtodos de Sobel, Prewitt y Roberts detectan menos bordes de los
necesarios utilizando las opciones por defecto (utilizan mayor umbral de deteccin)
mientras que los mtodos del Laplaciano del Gaussiano, de cruce por cero y de Sobel
suelen detectar ms bordes de los necesarios por defecto (menor umbral).
Los parmetros que se pueden utilizar dependen del tipo de mtodo elegido aunque son
bastante parecidos en todos ellos:
Mtodo Sobel (por defecto)
BW= edge( I , ' sobel ' ) especifica que se usar el mtodo Sobel.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 186 de 410
BW= edge( I , ' sobel ' , t hr esh) especifica el umbral de sensibilidad del mtodo Sobel en
la variable t hr esh. edge ignora todos los bordes que no son ms fuertes que el umbral
especificado. Si no se especifica la variable t hr esh, o t hr esh est vaca ([ ] ), edge elige
su valor automticamente.
BW = edge( I , ' sobel ' , t hr esh, di r ect i on) especifica la direccin de deteccin del
mtodo Sobel en la variable di r ect i on, una cadena que indica si se debe buscar por
bordes horizontales (' hor i zont al ' ) , verticales (' ver t i cal ' ) o ambos (' bot h' ) (por
defecto).
BW = edge( I , ' sobel ' , . . . , opt i ons) especifica opciones extra. La cadena
' not hi nni ng' acelera la operacin del algoritmo saltando la etapa adicional de thinning o
adelgazamiento del borde. Cuando se especifca la cadena ' t hi nni ng' (por defecto) el
algoritmo aplica thinning o adelgazamiento del borde.
[ BW, t hr esh] = edge( I , ' sobel ' , . . . ) devuelve el valor del umbral.
[ BW, t hr esh, gv, gh] = edge( I , ' sobel ' , . . . ) devuelve bordes verticales y horizontales
de respuesta a los operadores de Sobel.
Mtodo Prewitt
BW= edge( I , ' pr ewi t t ' ) especifica que se usar el mtodo de Prewitt.
BW = edge( I , ' pr ewi t t ' , t hr esh) especifica el umbral de sensibilidad del mtodo
Prewitt en la variable t hr esh. edge ignora todos los bordes que no son ms fuertes que
t hr esh. Si no se especifica la variable t hr esh, o t hr esh est vaca ([ ] ), edge elige su
valor automticamente.
BW = edge( I , ' pr ewi t t ' , t hr esh, di r ect i on) especifica la direccin de deteccin del
mtodo Prewitt en la variable di r ect i on, una cadena que indica si se debe buscar por
bordes horizontales (' hor i zont al ' ) , verticales (' ver t i cal ' ) o ambos (' bot h' ) (por
defecto).
[ BW, t hr esh] = edge( I , ' pr ewi t t ' , . . . ) devuelve el valor del umbral.
Mtodo Roberts
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 187 de 410
BW= edge( I , ' r ober t s' ) especifica que se usar el mtodo de Roberts.
BW = edge( I , ' r ober t s' , t hr esh) especifica el umbral de sensibilidad del mtodo
Roberts en la variable t hr esh. edge ignora todos los bordes que no son ms fuertes que
t hr esh. Si no se especifica la variable t hr esh, o t hr esh est vaca ([ ] ), edge elige su
valor automticamente.
BW = edge( I , ' r ober t s' , . . . , opt i ons) especifica opciones extra. La cadena
' not hi nni ng' acelera la operacin del algoritmo saltando la etapa adicional de thinning o
adelgazamiento del borde. Cuando se especifca la cadena ' t hi nni ng' (por defecto) el
algoritmo aplica thinning o adelgazamiento del borde.
[ BW, t hr esh] = edge( I , ' r ober t s' , . . . ) devuelve el valor del umbral.
[ BW, t hr esh, g45, g135] = edge( I , ' r ober t s' , . . . ) devuelve respuestas de bordes de
45 grados y 135 grados a los operadores Roberts.
Mtodo Laplaciano del Gaussiano
BW= edge( I , ' l og' ) especifica que se usar el mtodo Laplaciano del Gaussiano.
BW= edge( I , ' l og' , t hr esh) especifica el umbral de sensibilidad del mtodo Laplaciano
del Gaussiano en la variable t hr esh. edge ignora todos los bordes que no son ms fuertes
que t hr esh. Si no se especifica la variable t hr esh, o t hr esh est vaca ([ ] ), edge elige su
valor automticamente. Si se especifica un umbral de 0, la imagen de salida tendr
contornos cerrados porque incluir todos los cruces por cero de la imagen de entrada.
BW = edge( I , ' l og' , t hr esh, si gma) especifica que se usar el mtodo Laplaciano del
Gaussiano usando la variable si gma como la desviacin estndar del filtro LoG
(Laplaciano del Gaussiano). El valor por defecto de si gma es 2; el tamao del filtro es n-
por-n, donde n = cei l ( si gma*3) *2+1.
[ BW, t hr esh] = edge( I , ' l og' , . . . ) devuelve el valor del umbral.
Mtodo de Cruce por cero
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 188 de 410
BW = edge( I , ' zer ocr oss' , t hr esh, h) especifica que se usar el mtodo de Cruce por
cero usando el filtro h con el umbral definido en la variable t hr esh; si el argumento est
vaco ([ ] ), edge elige el umbral automticamente. Si el umbral es 0, la imagen de salida
tendr contornos cerrados porque incluir todos los cruces por cero de la imagen de
entrada.
[ BW, t hr esh] = edge( I , ' zer ocr oss' , . . . ) devuelve el valor del umbral.
Mtodo Canny
BW= edge( I , ' canny' ) especifica que se usar el mtodo Canny.
BW = edge( I , ' canny' , t hr esh) especifica los umbrales de sensibilidad para el mtodo
Canny en la variable t hr esh, un vector de dos elementos en el que el primer elemento es el
umbral bajo y el segundo el alto. Si se especifica un escalar en la variable t hr esh, este
valor se usar para el umbral alto y 0. 4*t hr esh para el umbral bajo. Si no se usa la
variable t hr esh, o t hr esh est vaca ([ ] ), edge elige su valor automticamente. El valor
para t hr esh es relativo al valor ms alto de la magnitud del gradiente de la imagen.
BW = edge( I , ' canny' , t hr esh, si gma) especifica que se utilizar el mtodo Canny
usando si gma como la desviacin estndar del filtro Gaussiano. El valor por defecto de
si gma es 1; el tamao del filtro se elige automticamente basndose en la variable si gma.
[ BW, t hr esh] = edge( I , ' canny' , . . . ) devuelve el valor del umbral.
Nota: En todos los casos el umbral por defecto se elige de forma heurstica segn
los datos de entrada. La mejor manera de corregir el umbral es ejecutar la funcin
edge capturando el umbral de salida y posteriormente ajustar con un umbral mayor
(menos pxeles de borde) o menor (ms pxeles de borde).
Ejemplos de uso
Ejemplo 1: Encontrar los bordes horizontales y verticales de la imagen comparando los
resultados obtenidos por los mtodos de Sobel y Prewitt con las opciones por defecto.
I = i mr ead( ' casa. t i f ' ) ;
i mshow( I )

BWHS = edge( I , ' sobel ' , ' hor i zont al ' ) ; f i gur e, i mshow( BWHS)
BWHP = edge( I , ' pr ewi t t ' , ' hor i zont al ' ) ; f i gur e, i mshow( BWHP)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 189 de 410

BWVS = edge( I , ' sobel ' , ' ver t i cal ' ) ; f i gur e, i mshow( BWVS)
BWVP = edge( I , ' pr ewi t t ' , ' ver t i cal ' ) ; f i gur e, i mshow( BWVP)


Figura f.129 - Imagen original (I)


Figura f.130 - Bordes horizontales con el mtodo
Sobel (BWHS)
Figura f.131 - Bordes horizontales con el mtodo
Prewitt (BWHP)


Figura f.132 - Bordes verticales con el mtodo Sobel
(BWVS)
Figura f.133 - Bordes verticaales con el mtodo
Prewitt (BWVP)
Vemos como los resultados son prcticamente idnticos con ambos mtodos.
Ejemplo 2: Encontrar los bordes de una imagen usando todos los mtodos por defecto de
la funcin edge y comparar los resultados variando las opciones por defecto para obtener
mejor resultado de los bordes principales.
I = i mr ead( ' casa. t i f ' ) ;
i mshow( I )

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 190 de 410
[ BW1d, umbr al 1def ] = edge( I , ' sobel ' ) ; f i gur e, i mshow( BW1d)
BW1 = edge( I , ' sobel ' , 0. 05) ; f i gur e, i mshow( BW1)

[ BW2d, umbr al 2def ] = edge( I , ' pr ewi t t ' ) ; f i gur e, i mshow( BW2d)
BW2 = edge( I , ' pr ewi t t ' , 0. 05) ; f i gur e, i mshow( BW2)

[ BW3d, umbr al 3def ] = edge( I , ' r ober t s' ) ; f i gur e, i mshow( BW3d)
BW3 = edge( I , ' r ober t s' , 0. 06) ; f i gur e, i mshow( BW3) ;

[ BW4d, umbr al 4def ] = edge( I , ' l og' ) ; f i gur e, i mshow( BW4d)
BW4 = edge( I , ' l og' , 0. 004) ; f i gur e, i mshow( BW4)

[ BW5d, umbr al 5def ] = edge( I , ' zer ocr oss' ) ; f i gur e, i mshow( BW5d)
BW5 = edge( I , ' zer ocr oss' , 0. 0045) ; f i gur e, i mshow( BW5)

[ BW6d, umbr al 6def ] = edge( I , ' canny' ) ; f i gur e, i mshow( BW6d)
BW6 = edge( I , ' canny' , [ 0. 02 0. 065] , 1. 7) ; f i gur e, i mshow( BW6)


Figura f.129 - Imagen original (I)


Figura f.134 - Bordes (BW1d) con el mtodo Sobel
por defecto
Figura f.135 - Bordes (BW1) con el mtodo Sobel
disminuyendo el umbral por defecto


Figura f.136 - Bordes (BW2d) con el mtodo Prewitt
por defecto
Figura f.137 - Bordes (BW2) con el mtodo Prewitt
disminuyendo el umbral por defecto
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 191 de 410


Figura f.138 - Bordes (BW3d) con el mtodo Roberts
por defecto
Figura f.139 - Bordes (BW3) con el mtodo Roberts
disminuyendo el umbral por defecto


Figura f.140 - Bordes (BW4d) con el mtodo LoG
por defecto
Figura f.141 - Bordes (BW4) con el mtodo LoG por
aumentando el umbral por defecto


Figura f.142 - Bordes (BW5d) con el mtodo
Zerocross por defecto
Figura f.143 - Bordes (BW5) con el mtodo
Zerocross aumentando el umbral por defecto


Figura f.144 - Bordes (BW6d) con el mtodo Canny
por defecto
Figura f.145 - Bordes (BW6) con el mtodo Canny
aumentando el umbral por defecto

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 192 de 410
Ejemplo 3: Encontrar los bordes de una imagen mdica de una bacteria.
I = i mr ead( ' ecol i . t i f ' ) ;
i mshow( I )
BW= edge( I , ' canny' , [ 0. 15 0. 25] , 1. 9) ;
f i gur e, i mshow( BW)


Figura f.146 - Imagen original (I) Figura f.147 - Bordes (BW) con el mtodo Canny

Funciones relacionadas
f speci al

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 193 de 410
edgetaper
Reduccin de las discontinuidades alrededor de los bordes de una imagen
Sintaxis
J = edget aper ( I , PSF)
Descripcin
J = edget aper ( I , PSF) desenfoca los bordes de la imagen de entrada I usando la funcin
de dispersin del punto PSF. El tamao de PSF no puede exceder la mitad del tamao de la
imagen en ninguna dimensin.
La imagen de salida J es la suma ponderada de la imagen original y su versin desenfocada
(la funcin edget aper elimina las altas frecuencias en el borde de la imagen desenfocando
la imagen completa y posteriormente reemplazando los pxeles centrales por los originales.
De este modo, los bordes de la imagen se estrechan hasta baja frecuencia). El array de
ponderacin, determinado por la funcin de autocorrelacin de PSF, hace a J igual que I en
su regin central, e igual que su versin desenfocada cerca de los bordes.
La funcin edget aper reduce el ringing (artefactos oscilantes en imgenes restauradas) en
los mtodos de desenfoque que usan la transformada discreta de Fourier como las
funciones deconvwnr , deconvr eg, y deconvl ucy. Para ello se aplica la funcin antes de
aplicarle el desenfoque.
I y PSF pueden ser del tipo ui nt 8, ui nt 16, i nt 16, si ngl e, o doubl e. J es del mismo tipo
que I .
Ejemplos de uso
Ejemplo 1: Desenfocar los bordes de una imagen.
I = i mr ead( ' moon. t i f ' ) ;
PSF = f speci al ( ' gaussi an' , 60, 10) ;
ET = edget aper ( I , PSF) ;
f i gur e, i mshow( I , [ ] )
f i gur e, i mshow( ET, [ ] )

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 194 de 410

Figura f.148 - Imagen original (I) Figura f.149 - Imagen procesada (ET)
Funciones relacionadas
deconvl ucy, deconvr eg, deconvwnr , ot f 2psf , padar r ay, psf 2ot f

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 195 de 410
entropy
Entropa de una imagen en escala de grises
Introduccin
La IPT dispone de dos funciones especficas para el clculo de la entropa de una imagen:
ent r opy y ent r opyf i l t . ent r opy calcula la entropa de una imagen completa mientras
que ent r opyf i l t calcula la entropa de las regiones de una imagen.
La entropa de una imagen es una medida de su informacin. Si la entropa es alta, la
informacin tiende a ser altamente imprevisible porque algo imprevisible o infrecuente
aporta ms informacin que algo previsible. Una imagen con informacin de alta entropa,
contiene mucha aleatoriedad y baja redundancia.
Dentro del campo de la compresin de imgenes, la entropa mide la media de informacin
necesaria para codificar los valores de la imagen. En relacin con el histograma de una
imagen, la entropa es una medida de la dispersin del histograma. Y en segmentacin
existen mtodos de umbralizacin de imgenes en escala de grises basados en la
maximizacin de la entropa y es frecuente utilizar la entropa para caracterizar la textura
de una imagen.
Sintaxis
E = ent r opy( I )
Descripcin
E = ent r opy( I ) devuelve un escalar E que representa la entropa de la imagen en escala
de grises I .
I puede ser una imagen multidimensional. Si I tiene ms de dos dimensiones, como las
imgenes RGB, la funcin ent r opy la trata como una imagen multidimensional en escala
de grises y no como una imagen RGB. I puede ser de tipo l ogi cal , ui nt 8, ui nt 16, o
doubl e y debe ser real, no nula y no dispersa. E es de tipo doubl e.
Ejemplos de uso
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 196 de 410
Ejemplo 1: Comparar la entropa y el histograma de una imagen con el histograma normal
y la misma imagen con el histograma recortado.
I 1 = i mr ead( ' r ueda. t i f ' ) ; i mshow( I 1)
f i gur e, i mhi st ( I 1)
E1 = ent r opy( I 1)

I 2 = i mr ead( ' r ueda2. t i f ' ) ; f i gur e, i mshow( I 2)
f i gur e, i mhi st ( I 2)
E2 = ent r opy( I 2)

E1 =
7. 7630

E2 =
6. 7257


Figura f.28 - Imagen original (I1) Figura f.150 - Imagen histograma recortado (I2)



Figura f.151 - Histograma de imagen original I1 Figura f.152 - Histograma de imagen I2

Funciones relacionadas
i mhi st , ent r opyf i l t
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 197 de 410
entropyfilt
Entropa regional de una imagen en escala de grises
Introduccin
La entropa de una imagen es una medida de su informacin. La IPT dispone de dos
funciones especficas para el clculo de la entropa de una imagen: ent r opy y
ent r opyf i l t . ent r opy calcula la entropa de una imagen completa mientras que
ent r opyf i l t calcula la entropa de las regiones de una imagen.
Uno de los usos comunes de la medida de la entropa de una imagen por regiones es que
puede utilizarse para caracterizar la textura de la imagen. Existen tres funciones de anlisis
de textura (r angef i l t , st df i l t y ent r opyf i l t ) que utilizan medidas estadsticas
estndar como son el rango, la desviacin estndar y la entropa. Estas medidas pueden
caracterizar la textura de una imagen porque proporcionan informacin a cerca de la
variabilidad local de la intensidad de los pxeles. Estas funciones se suelen utilizar cuando
los objetos de la imagen estn ms caracterizados por textura que por intensidad
[13]
, por
ejemplo en tcnicas de segmentacin de texturas en las que se busca identificar regiones
basndose en su textura.
Sintaxis
J = ent r opyf i l t ( I )
J = ent r opyf i l t ( I , NHOOD)
Descripcin
J = ent r opyf i l t ( I ) devuelve el array J , donde cada pixel de salida contiene la entropa
de la regin de 9-por-9 alrededor del pixel correspondiente en la imagen de entrada I .
J = ent r opyf i l t ( I , NHOOD) realiza filtrado de entropa a la imagen de entrada I
especificando la regin a procesar en la variable NHOOD. NHOOD es un array
multidimensional de unos y ceros a modo de patrn donde los valores distintos de cero
especifican la regin. El tamao de NHOOD debe ser impar en cada dimensin.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 198 de 410
Por defecto, ent r opyf i l t usa la regin t r ue( 9) . ent r opyf i l t determina el elemento
central de la regin con f l oor ( ( si ze( NHOOD) + 1) / 2) . Para especificar regiones de
tamaos diferentes como por ejemplo un disco, usar la funcin st r el para crear un patrn
o elemento estructurante y despus usar la funcin get nhood para extraer la regin desde
dicho elemento en un array.
I puede ser de cualquier dimensin. Si I tiene ms de dos dimensiones, como las imgenes
RGB, la funcin ent r opy la trata como una imagen multidimensional en escala de grises y
no como una imagen RGB. La imagen de salida J es del mismo tamao que la de entrada I
y suele denominarse imagen textura.
I puede ser de tipo l ogi cal , ui nt 8, ui nt 16, o doubl e y debe ser real y no disperso.
NHOOD puede ser de tipo numer i c o l ogi cal y debe contener ceros o unos. El array de
salida J es de tipo doubl e.
Ejemplos de uso
Ejemplo 1: Aplicar el filtro de entropa por defecto.
I = i mr ead( ' ci r cui t . t i f ' ) ;
J = ent r opyf i l t ( I ) ;
i mshow( I ) , f i gur e, i mshow( J , [ ] )
Ejemplo 2: Comparar los resultados obtenidos con las tres funciones de anlisis de textura:
r angef i l t , st df i l t y ent r opyf i l t
%Leemos l a i magen or i gi nal y l a most r amos.

A=i mr ead( ' eur os. t i f ' ) ;
subpl ot ( 2, 2, 1) , i mshow( I ) , t i t l e( ' or i gi nal ' )

%Apl i camos f i l t r o de desvi aci n est ndar y most r amos r esul t ado en el
r ango [ mi n, max] .

J = st df i l t ( I ) ;
subpl ot ( 2, 2, 2) , i mshow( J , [ ] ) , t i t l e( ' st df i l t ' )

%Apl i camos f i l t r o de ent r op a en una r egi n de 15x15 y most r amos
r esul t ado en el r ango [ mi n, max] .

J = ent r opyf i l t ( I , ones( 15) ) ;
subpl ot ( 2, 2, 3) , i mshow( J , [ ] ) , t i t l e( ' ent r opyf i l t ' )

%Apl i camos f i l t r o de r ango en una r egi n de 5x5 y most r amos r esul t ado en
el r ango [ mi n, max] .

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 199 de 410
J = r angef i l t ( I , ones( 5) ) ;
subpl ot ( 2, 2, 4) , i mshow( J , [ ] ) , t i t l e( ' ent r opyf i l t ' )


Figura f.153 - Comparacin funciones anlisis de textura
Ejemplo 3: Crear una mscara de las texturas de una imagen para luego segmentarlas.
I = i mr ead( ' t ext ur e. t i f ' ) ;
i mshow( I )

%Cr eamos l a i magen t ext ur a a par t i r del f i l t r o de ent r op a y l a
r eescal amos par a conver t i r l a en una i magen t i po doubl e.

E = ent r opyf i l t ( I ) ;
Ei m= mat 2gr ay( E) ;
f i gur e, i mshow( Ei m)

%Dest acamos ambas t ext ur as convi r t i endo l a i magen a f or mat o bi nar i o
ut i l i zando un ni vel espec f i co que per mi t a di f er enci ar l as bi en.

BW1 = i m2bw( Ei m, . 73) ;
f i gur e, i mshow( BW1)

%Ext r aemos l a t ext ur a ms def i ni da con l a f unci n bwar eaopen.

BWao = bwar eaopen( BW1, 2000) ;
f i gur e, i mshow( BWao)

%Suavi zamos bor des y cer r amos huecos.

nhood = t r ue( 9) ;
cl oseBWao = i mcl ose( BWao, nhood) ;
r oughMask = i mf i l l ( cl oseBWao, ' hol es' ) ;

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 200 de 410
%Most r amos l a mscar a r pi da f i nal .

f i gur e, i mshow( r oughMask)




Figura f.154 - Imagen original I Figura f.155 - Imagen textura
Eim
Figura f.156 - Imagen binaria
BW1




Figura f.157 - Extraccin de
textura
Figura f.158 - Mscara final
Funciones relacionadas
ent r opy, i mhi st , r angef i l t , st df i l t

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 201 de 410
fan2para
Conversin de proyecciones en abanico en proyecciones paralelas
Introduccin
Una proyeccin est formada por la combinacin de un conjunto de integrales de lnea.
Existen dos tipos de proyecciones principales: proyecciones paralelas (o proyecciones de
eje paralelo) y proyecciones en abanico.

Figura f.159 - Proyecciones
La base matemtica para la reconstruccin a partir de una serie de proyecciones es la
Transformada de Radon, una transformacin integral que consiste en la integral sobre un
conjunto de rectas. La Transformada de Radon R{f(x,y)} de una imagen representada por
la funcin f(x,y) es una serie de integrales de lnea a travs f(x,y) con diferentes ngulos de
rotacin respecto al origen (proyeccin en paralelo de la intensidad de la imagen a lo
largo de una lnea radial orientada con un ngulo especfico):

Figura f.160 - Transformada de Radon para un ngulo fijo

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 202 de 410
Sintaxis
P = f an2par a( F, D)
P = f an2par a( . . . , par am1, val 1, par am2, val 2, . . . )
[ P , par al l el _l ocat i ons, par al l el _r ot at i on_angl es] = f an2par a( . . . )
Descripcin
P = f an2par a( F, D) convierte los datos de haz en abanico F a datos de haz en paralelo P.
Cada columna de F contiene las muestras tomadas por el sensor del haz en abanico a un
nico ngulo de rotacin. D es la distancia en pxeles desde el vrtice del haz en abanico al
centro de rotacin que se us para obtener las proyecciones.
P = f an2par a( . . . , par am1, val 1, par am2, val 2, . . . ) especifica parmetros que
controlan varios aspectos de la conversin, detallados a continuacin. Los nombres de los
parmetros se pueden abreviar y no son sensibles a las maysculas:
Parmetro Descripcin
' FanCover age'
Cadena que especifica la cobertura de rotacin de los ejes:
' cycl e' Rotar completamente[ 0, 360) . (Por defecto)
' mi ni mal ' Rotar lo mnimo necesario para representar el
objeto.
' FanRot at i onI ncr ement '
Escalar real positivo que especifica el incremento del ngulo
de rotacin de las proyecciones de haz en abanico. Se mide
en grados. (Por defecto: 1)
' FanSensor Geomet r y'
Cadena que especifica cmo se posicionan los sensores:
' ar c' Los sensores estn equiespaciados a travs de un
arco circular a una distancia D del centro de rotacin. (Por
defecto)

Figura f.161 - Sensores en arco
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 203 de 410

' l i ne' Los sensores estn equiespaciados a lo largo de
una lnea.

Figura f.162 - Sensores en lnea
' FanSensor Spaci ng'
Escalar real positivo que especifica el espaciado de los
sensores de haz en abanico. La interpretacin del valor
depende de la variable ' FanSensor Geomet r y' .
Si ' FanSensor Geomet r y' se pone a ' ar c' (por defecto) el
valor define el espaciado angular en grados (por defecto: 1)
Si ' FanSensor Geomet r y' vale ' l i ne' , el valor define el
espaciado lineal (por defecto: 1). Consultar la funcin
f anbeampara ms detalle.
Nota: Este espaciado lineal se mide en el eje x. El
origen de los ejes es el pixel central de la imagen.
' I nt er pol at i on'
Cadena de texto que especifica el tipo de interpolacin que
se usar entre los datos de haz paralelo y haz en abanico.
' near est ' Vecino ms cercano
{' l i near ' } Lineal
' spl i ne' Spline cbico a trozos
' pchi p' Hermite (PCHIP) cbico a trozos
' cubi c' Igual que ' pchi p'
' Par al l el Cover age'
Cadena de texto que especifica la cobertura de rotacin.
' cycl e' El dato paralelo cubre 360 grados
{' hal f cycl e' } El dato paralelo cubre 180 grados
' Par al l el Rot at i onI ncr e
ment '
Escalar real positivo que especifica el incremento del ngulo
de rotacin de las proyecciones de haz en paralelo. Se mide
en grados. Los ngulos del haz en paralelo se calculan para
cubrir [0,180) grados con incrementos de PAR_ROT_I NC que
es el valor de ' Par al l el Rot at i onI ncr ement ' .
180/ PAR_ROT_I NC debe ser un entero.
Si no se especifica la variable, se asume el mismo
incremento que el incremento de los ngulos de rotacin del
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 204 de 410
haz en abanico.
' Par al l el Sensor Spaci ng
'
Escalar real positivo que especifica en pxeles el espaciado
de los sensores de haz en paralelo. El rango de las
localizaciones del sensor est sujeto al rango de los ngulos
en abanico y viene dado por:
[ D*t an( mi n( FAN_ANGLES) ) , . . .
D*t an( max( FAN_ANGLES) ) ]
Si no se especifica la variable, se asume un espaciado
uniforme y se pone al mnimo espaciado sujeto a los
ngulos en abanico y muestreando por encima del rango
sujeto a los ngulos en abanico.
[ P , par al l el _l ocat i ons, par al l el _r ot at i on_angl es] = f an2par a( . . . ) devuelve
las localizaciones del sensor de haz paralelo en la variable par al l el _l ocat i ons y los
ngulos de rotacin donde se calcularon las proyecciones en la variable
par al l el _r ot at i on_angl es.
Los parmetros de entrada, F y D, pueden ser de tipo doubl e o si ngl e y deben ser no
dispersos. Cualquier otra entrada numrica es de tipo doubl e. La salida P es doubl e.
Ejemplos de uso
Ejemplo 1: Crear datos de haz en paralelo a partir de una imagen de una cabeza de
prctica o phantom head que se suele utilizar para probar algoritmos de reconstruccin en
dos dimensiones como la Transformada de Radn. Convertir a datos de haz en abanico y
recuperar los datos de haz en paralelo originales.
%Cr eamos una i magen de cabeza de pr ct i ca ( phant omhead) .

ph = phant om( 128) ;
t het a = 0: 179;

%Hacemos l a Tr ansf or mada de Radon de l a i magen y r ecogemos l as
coor denadas r adi al es cor r espondi ent es a cada f i l a ( val or es a l o l ar go del
ej e x' or i ent ado t het a gr ados segn el ej e x) . La most r amos.

[ Psynt het i c, xp] = r adon( ph, t het a) ;
i mshow( Psynt het i c, [ ] , ' XDat a' , t het a, ' YDat a' , xp, ' I ni t i al Magni f i cat i on' , ' f i t
' )
axi s nor mal
t i t l e( ' Dat os de haz en par al el o' )
xl abel ( ' \ t het a ( gr ados) ' )
yl abel ( ' x' ' ' )
col or map( hot ) , col or bar

%Conver t i mos l os dat os de haz en par al el o en haz en abani co.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 205 de 410

Fsynt het i c = par a2f an( Psynt het i c, 100, ' FanSensor Spaci ng' , 1) ;

%Recuper amos l os dat os de haz en par al el o or i gi nal es convi r t i endo dat os
de haz en abani co en par al el o. Most r amos par a compar ar con or i gi nal .

[ Pr ecover ed, Pl oc, Pangl es] =
f an2par a( Fsynt het i c, 100, ' FanSensor Spaci ng' , 1, ' Par al l el Sensor Spaci ng' , 1) ;
f i gur e
i mshow( Pr ecover ed, [ ] , ' XDat a' , Pangl es, ' YDat a' , Pl oc, ' I ni t i al Magni f i cat i on' ,
' f i t ' )
axi s nor mal
t i t l e( ' Dat os de haz en par al el o r ecuper ados' )
xl abel ( ' ngul os de r ot aci n ( gr ados) ' )
yl abel ( ' Local i zaci ones del sensor par al el o ( p xel es) ' )
col or map( hot ) , col or bar


Figura f.163 - Datos de haz en paralelo originales Figura f.164 - Datos de haz en paralelo recuperados
Funciones relacionadas
f anbeam, i f anbeam, i r adon, par a2f an, phant om, r adon

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 206 de 410
fanbeam
Transformacin (proyecciones) de haz en abanico
Introduccin
Una proyeccin est formada por la combinacin de un conjunto de integrales de lnea.
Existen dos tipos de proyecciones principales: proyecciones paralelas (o proyecciones de
eje paralelo) y proyecciones en abanico.

Figura f.159 - Proyecciones
La base matemtica para la reconstruccin a partir de una serie de proyecciones es la
Transformada de Radon, una transformacin integral que consiste en la integral sobre un
conjunto de rectas. La Transformada de Radon R{f(x,y)} de una imagen representada por
la funcin f(x,y) es una serie de integrales de lnea a travs f(x,y) con diferentes ngulos de
rotacin respecto al origen (proyeccin en paralelo de la intensidad de la imagen a lo
largo de una lnea radial orientada con un ngulo especfico):

Figura f.160 - Transformada de Radon para un ngulo fijo
Puede entonces construirse una coleccin bidimensional ordenada de proyecciones en la
cual uno de los ejes corresponde a la posicin y el otro al ngulo. Esta estructura recibe el
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 207 de 410
nombre de sinograma. Su nombre se debe a la variacin sinusoidal de la posicin del
objeto dentro de las proyecciones, debido al cambio consecutivo en el ngulo de rotacin.
El nombre suele utilizarse en tomografa para referirse a la transformada de Radon.
[14]

Sintaxis
F = f anbeam( I , D)
F = f anbeam( . . . , par am1, val 1, par am1, val 2, . . . )
[ F, f an_sensor _posi t i ons, f an_r ot at i on_angl es] = f anbeam( . . . )
Descripcin
F = f anbeam( I , D) calcula los datos de haz en abanico (sinograma) F a partir de la imagen
I . D es la distancia en pxeles desde el vrtice de haz en abanico al centro de la rotacin,
que es el pixel central de la imagen y est definido como f l oor ( ( si ze( I ) +1) / 2) . D debe
ser suficientemente largo para asegurar que el vrtice est fuera de la imagen en todos los
ngulos de rotacin. La siguiente figura muestra D en relacin al vrtice del haz en abanico
para una geometra de haz en abanico:

Figura f.162 - Proyecciones Transformada de Radon

Cada columna de F contiene las muestras tomadas por el sensor del haz (datos de las
proyecciones) a un nico ngulo de rotacin. El nmero de columnas en F depende del
incremento de la rotacin en abanico. Por defecto, el incremento de la rotacin en abanico
es de 1 grado por lo que F tiene 360 columnas.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 208 de 410
El nmero de columnas en F se determina a partir del nmero de sensores. f anbeam
determina el nmero de sensores calculando cuntos haces se necesitan para cubrir la
imagen entera para cualquier ngulo de rotacin.
F = f anbeam( . . . , par am1, val 1, par am1, val 2, . . . ) especifica varios parmetros,
listados a continuacin, que controlan varios aspectos de las proyecciones de haz en
abanico. Los nombres de los parmetros se pueden abreviar y no son sensibles a las
maysculas:
Parmetro Descripcin
' FanRot at i onI ncr ement '
Escalar real positivo que especifica el incremento del ngulo
de rotacin de las proyecciones de haz en abanico. Medido
en grados. (Por defecto: 1)

' FanSensor Geomet r y'
Cadena que especifica cmo se posicionan los sensores:
' ar c' Los sensores estn equiespaciados a travs de un
arco circular a una distancia D del centro de rotacin. (Por
defecto)

Figura f.161 - Sensores en arco

' l i ne' Los sensores estn equiespaciados a lo largo de
una lnea.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 209 de 410

Figura f.162 - Sensores en lnea
' FanSensor Spaci ng'
Escalar real positivo que especifica el espaciado de los
sensores de haz en abanico. La interpretacin del valor
depende de la variable ' FanSensor Geomet r y' .
Si ' FanSensor Geomet r y' se pone a ' ar c' (por defecto) el
valor define el espaciado angular en grados (por defecto: 1)
Si ' FanSensor Geomet r y' vale ' l i ne' , el valor define el
espaciado lineal (por defecto: 1). Consultar la funcin
f anbeampara ms detalle.
Nota: Este espaciado lineal se mide en el eje x. El
origen de los ejes es el pixel central de la imagen.
[ F, f an_sensor _posi t i ons, f an_r ot at i on_angl es] = f anbeam( . . . ) devuelve la
localizacin de los sensores de haz en abanico en la variable f an_sensor _posi t i ons y los
ngulos de rotacin donde se calcularon las proyecciones en la variable
f an_r ot at i on_angl es. Si el parmetro ' FanSensor Geomet r y' vale ' ar c' (por defecto),
la variable f an_sensor _posi t i ons contiene los ngulos de medida del sensor de haz en
abanico y si ' FanSensor Geomet r y' vale ' l i ne' , la variable contiene las posiciones del
sensor a lo largo del eje x'.
I puede ser de tipo numer i c o l ogi cal . El resto de entradas y salidas tipo numer i c pueden
ser tipo doubl e. Ninguna de las entradas puede ser de tipo disperso.
Ejemplos de uso
Ejemplo 1: Calcular las proyecciones de haz en abanico de una imagen.

%Cr eamos una i magen de cabeza de pr ct i ca ( phantom head) y cal cul amos
sus pr oyecci ones.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 210 de 410
i pt set pr ef ( ' I mshowAxesVi si bl e' , ' on' )
ph = phant om( 512) ;
i mshow( ph)
[ F, Fpos, Fangl es] = f anbeam( ph, 1024) ;

%Most r amos l os ngul os de r ot aci n y l as posi ci ones del sensor .

f i gur e,
i mshow( F, [ ] , ' XDat a' , Fangl es, ' YDat a' , Fpos, ' I ni t i al Magni f i cat i on' , ' f i t ' )
axi s nor mal
xl abel ( ' ngul os de r ot aci n ( gr ados) ' )
yl abel ( ' Posi ci ones del sensor ( gr ados) ' )
col or map( hot ) , col or bar



Figura f.165 - Imagen original (ph) Figura f.166 - ngulos y posiciones
Ejemplo 2: Comparar las proyecciones de haz en abanico de una imagen para las
geometras de arco y lnea con las proyecciones de la Transformada de Radon (en paralelo)
para un ngulo de rotacin fijo.
%Cr eamos l a i magen or i gi nal , def i ni mos l a di st anci a al vr t i ce del haz y
el i ncr ement o de r ot aci n.

I = ones( 100) ;
D = 200;
dt het a = 45;

%Cal cul amos l as pr oyecci ones de haz en abani co par a l a geomet r a t i po
ar co y r ecogemos ngul os de r ot aci n donde se cal cul ar on l as
pr oyecci ones.

[ Far c, FposAr cDeg, Fangl es] =
f anbeam( I , D, ' FanSensor Geomet r y' , ' ar c' , ' FanRot at i onI ncr ement ' , dt het a) ;

%Conver t i mos posi ci ones angul ar es a di st anci a l i neal a l o l ar go del ej e
x.

FposAr c = D*t an( FposAr cDeg*pi / 180) ;

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 211 de 410
%Cal cul amos l as pr oyecci ones de haz en abani co par a l a geomet r a t i po
l nea.

[ Fl i ne, FposLi ne] =
f anbeam( I , D, ' FanSensor Geomet r y' , ' l i ne' , ' FanRot at i onI ncr ement ' , dt het a) ;

%Cal cul amos l a t r ansf or mada de Radon cor r espondi ent e par a l os ngul os de
r ot aci n de haz en abani co.

[ R, Rpos] =r adon( I , Fangl es) ;

%Most r amos l as t r es pr oyecci ones par a un ngul o de r ot aci n par t i cul ar .
Las di f er enci as se deben a l a geomet r a del muest r eado y a l as
apr oxi maci ones numr i cas en l os cl cul os.

f i gur e
i dx = f i nd( Fangl es==45) ;
pl ot ( Rpos, R( : , i dx) , FposAr c, Far c( : , i dx) , FposLi ne, Fl i ne( : , i dx) )
l egend( ' Radon' , ' Ar co' , ' L nea' )


Figura f.167 - Comparativa proyecciones
Funciones relacionadas
f an2par a, i f anbeam, i r adon, par a2f an, phant om, r adon
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 212 de 410
findbounds
Estimacin de los lmites de salida para una transformacin espacial
Sintaxis
out bounds = f i ndbounds( TFORM, i nbounds)
Descripcin
out bounds = f i ndbounds( TFORM, i nbounds) estima los lmites de salida
correspondientes a una transformacin espacial dada y a un conjunto de lmites de entrada.
TFORM es una es una estructura de transformacin espacial devuelta por la funcin
maket f or m. i nbounds es una matriz de 2-por-num_di ms. La primera fila de i nbounds
especifica los lmites inferiores para cada dimensin y la segunda fila los lmites
superiores. num_di ms tiene que concordar con el campo ndi ms_i n de la variable TFORM.
La funcin out bounds es del mismo tipo que i nbounds. Es una estimacin de la regin
rectangular ms pequea que contiene completamente al rectngulo transformado
representado por los lmites de entrada especificados. Como out bounds es solo una
estimacin, puede que no contenga completamente el rectngulo de entrada transformado.
Nota: La funcin i mt r ansf or m llama por defecto a f i ndbounds si no se
especifican las variables ' XDat a' e ' YDat a' , parmetros que controlan el recuadro
de seleccin de salida en i mt r ansf or m. En transformaciones lineales puras, si no se
especifican las variables 'XData' e 'YData', la imagen de salida ser la misma que la
de entrada. Ms informacin en la pgina de la funcin i mt r ansf or m.
Ejemplos de uso
Ejemplo 1: Aplicar una translacin lineal entera a una imagen usando f i ndbounds para
especificar las variables 'XData' e 'YData' que limitan la salida.
%Cr ear y most r ar i magen or i gi nal .

I = checker boar d( 50) ;
f i gur e, i mshow( I )

%Def i ni mos una t r asl aci n a l o l ar go de l as component es hor i zont al y
ver t i cal .
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 213 de 410

t x = 10;
t y = 6;

%Cr eamos l a est r uct ur a de esa t r ansf or maci n.

t = maket f or m( ' af f i ne' , [ 1 0 ; 0 1; t x t y] ) ;

%Encont r amos l os l mi t es de sal i da par a l a i magen compl et a t r ansf or mada.

bounds = f i ndbounds( t , [ 1 1; si ze( I ) ] ) ;

%Especi f i camos el r ecuadr o de sel ecci n de sal i da par a que empi ece donde
empezaba l a i magen or i gi nal y acabe donde t er mi na l a i magen t r ansf or mada
y apl i camos l a t r ansf or maci n. Si n especi f i car est os par met r os, l a
i magen f i nal ser a i gual a l a or i gi nal .

bounds( 1, : ) = [ 1 1] ;
J = i mt r ansf or m( I , t , ' XDat a' , bounds( : , 2) ' , ' YDat a' , bounds( : , 1) ' ) ;

%Most r amos l a i magen de sal i da.

f i gur e, i mshow( J )



Figura f.168 - Imagen original (I) Figura f.169 - Imagen trasladada (J)
Funciones relacionadas
cp2t f or m, i mt r ansf or m, maket f or m, t f or mar r ay, t f or mf wd, t f or mi nv

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 214 de 410
fliptform
Inversin de la funcin de una estructura TFORM
Sintaxis
TFLI P = f l i pt f or m( T)
Descripcin
TFLI P = f l i pt f or m( T) crea una nueva estructura de transformacin espacial tipo TFORM
invirtiendo los roles de las entradas y las salidas en una estructura TFORM existente, de
forma que la nueva estructura ser una transformacin inversa o complementaria a la
original.
Ejemplos de uso
Ejemplo 1: Aplicar una transformacin a una imagen y rehacer la imagen a con una
transformacin inversa.
I = i mr ead( ' camer aman. t i f ' ) ;
i mshow( I )

%Apl i camos una t r ansf or maci n af n.

t h = [ . 8 . 005 0; . 1 . 9 0; - 11 7. 4 1] ;
T = maket f or m( ' af f i ne' , t h) ;
I 2 = i mt r ansf or m( I , T) ;
f i gur e, i mshow( I 2)

%Cr eamos l a t r ansf or maci n i nver sa.

T2 = f l i pt f or m( T)

%Apl i camos l a t r ansf or maci n i nver sa a l a i magen or i gi nal y a l a
t r ansf or mada.

I 3 = i mt r ansf or m( I , T2) ;
f i gur e, i mshow( I 3)

I 4 = i mt r ansf or m( I 2, T2) ;
f i gur e, i mshow( I 4)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 215 de 410


Figura f.170 - Imagen original (I) Figura f.171 - Imagen trasformada (I2)



Figura f.172 - Imagen transformada a la inversa
(I3)
Figura f.173 - Imagen transformada, transformada a
la inversa (I4)
Funciones relacionadas
maket f or m, t f or mf wd, t f or mi nv
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 216 de 410
freqz2
Respuesta en frecuencia en 2-D
Sintaxis
[ H, f 1, f 2] = f r eqz2( h, n1, n2)
[ H, f 1, f 2] = f r eqz2( h, [ n2 n1] )
[ H, f 1, f 2] = f r eqz2( h)
[ H, f 1, f 2] = f r eqz2( h, f 1, f 2)
[ . . . ] = f r eqz2( h, . . . , [ dx dy] )
[ . . . ] = f r eqz2( h, . . . , dx)
f r eqz2( . . . )
Descripcin
[ H, f 1, f 2] = f r eqz2( h, n1, n2) devuelve H, la respuesta en frecuencia de h de
tamao n2-por-n1, y los vectores de frecuencia f 1 (de longitud n1) y f 2 (de longitud n2). h
es un filtro FIR bidimensional en la forma de una molcula computacional. f 1 y f 2 se
devuelven como frecuencias normalizadas en el rango -1.0 a 1.0, donde 1.0 corresponde a
la mitad de la frecuencia de muestreo, o radianes.
[ H, f 1, f 2] = f r eqz2( h, [ n2 n1] ) devuelve lo mismo que con [ H, f 1, f 2] =
f r eqz2( h, n1, n2) .
[ H, f 1, f 2] = f r eqz2( h) usa [ n2 n1] = [ 64 64] .
[ H, f 1, f 2] = f r eqz2( h, f 1, f 2) devuelve la respuesta en frecuencia del filtro FIR h
a los valores de frecuencia de f 1 y f 2. Estos valores de frecuencia deben estar
comprendidos en el rango -1.0 a 1.0, donde 1.0 corresponde a la mitad de la frecuencia de
muestreo, o radianes.
[ . . . ] = f r eqz2( h, . . . , [ dx dy] ) usa [ dx dy] para modificar el espaciado de muestreo
en h. dx determina el espaciado para la dimensin x y dy determina el espaciado para la
dimensin y. El espaciado por defecto es de 0.5, que corresponde con una frecuencia de
muestreo de 2.0.
[ . . . ] = f r eqz2( h, . . . , dx) usa dx para determinar el espaciado de muestreo en ambas
dimensiones.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 217 de 410
f r eqz2( . . . ) produce una representacin en malla de la magnitud bidimensional de la
respuesta en frecuencia cuando no hay especificados parmetros de salida.
La matriz de entrada h puede ser del tipo doubl e o de cualquier tipo entero. El resto de
variables de entrada a f r eqz2 deben ser de tipo doubl e. Todas las salidas son de tipo
doubl e.
Ejemplos de uso
Ejemplo 1: Aplicar el mtodo de la ventana para crear un filtro FIR de 16-por-16 y
despus ver su respuesta en frecuencia usando f r eqz2.
%Cr eamos un f i l t r o FI R medi ant e el mt odo de l a vent ana.

Hd = zer os( 16, 16) ;
Hd( 5: 12, 5: 12) = 1;
Hd( 7: 10, 7: 10) = 0;
h = f wi nd1( Hd, bar t l et t ( 16) ) ;

col or map( j et ( 64) )

%Obt enemos l a r espuest a en f r ecuenci a de 32- por - 32 de f i l t r o FI R y l os
vect or es de f r ecuenci a f 1 ( de l ongi t ud 32) y f 2 ( de l ongi t ud 32) .

axi s ( [ - 1 1 - 1 1 0 1] ) ;

f r eqz2( h, [ 32 32] ) ;

%Aument amos el t amao par a ver l o ms sl i do.

f i gur e, f r eqz2( h, [ 500 500] ) ;


Figura f.174 - Respuesta en frecuencia 32x32 Figura f.175 - Respuesta en frecuencia 500x500


Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 218 de 410
Ejemplo 2: Crear la respuesta en frecuencia de un filtro en 2D predefinido
%Por ej empl o, un f i l t r o Gaussi ano paso baj o.

h = f speci al ( ' gaussi an' ) ;
f r eqz2( h, 500, 500) ;

Figura f.176 - Respuesta en frecuencia filtro gaussiano
Funciones relacionadas
f r eqz
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 219 de 410
fsamp2
Creacin de un filtro FIR en 2-D utilizando muestreo en frecuencia
Sintaxis
h = f samp2( Hd)
h = f samp2( f 1, f 2, Hd, [ mn] )
Descripcin
h = f samp2( Hd) disea un filtro FIR bidimensional a partir de su respuesta en frecuencia
Hd y devuelve los coeficientes del filtro en una matriz h. f samp2 devuelve h como una
molcula computacional, que es la forma adecuada para trabajar con la funcin f i l t er 2.
El filtro h tiene una respuesta en frecuencia que va a travs de los puntos definidos en Hd.
Si Hd es de tamao m-por-n, entonces h ser tambin de m-por-n.
f samp2 disea un filtro FIR bidimensional basndose en la respuesta en frecuencia deseada
muestreada en puntos del plano cartesiano. Hd es una matriz que contiene la respuesta en
frecuencia deseada muestreada en puntos equiespaciados entre -1.0 y 1.0 a lo largo de los
ejes de frecuencia x e y, donde 1.0 corresponde a la mitad de la frecuencia de muestreo o
radianes. Para obtener resultados ms exactos, utilizar puntos de frecuencia devueltos por
la funcin f r eqspace para crear Hd.
h = f samp2( f 1, f 2, Hd, [ mn] ) produce un filtro FIR de m-por-n haciendo coincidir la
respuesta del filtro Hd con los puntos definidos con los vectores f 1 y f 2. Los vectores de
frecuencia f 1 y f 2 estn normalizados en frecuencia, donde 1.0 se corresponde a la mitad
de la frecuencia de muestreo o radianes. El filtro resultante encaja en la respuesta en
frecuencia deseada lo mximo posible segn el criterio de mnimo error cuadrtico. Para
obtener los mejores resultados, debe haber al menos m*n puntos de frecuencias deseadas.
f samp2 dar un mensaje de aviso se especifican menos puntos.
La matriz de entrada Hd puede ser de tipo doubl e o de cualquier tipo entero. El resto de
entradas deben ser de tipo doubl e. Todas las salidas son de tipo doubl e.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 220 de 410
Ejemplos de uso
Ejemplo 1: Utilizar f samp2 para disear un filtro pasobanda aproximadamente simtrico
con banda de paso entre 0.1 y 0.5 (frecuencia normalizada donde 1.0 corresponde a la
mitad de la frecuencia de muestreo o radianes):
%Cr eamos una mat r i z Hd que cont i ene l a r espuest a pasobanda deseada. Par a
el l o usamos l a f unci n f r eqspace que cr ear l os vect or es de r ango de
f r ecuenci a f 1 y f 2.

[ f 1, f 2] = f r eqspace( 21, ' meshgr i d' ) ;
Hd = ones( 21) ;
r = sqr t ( f 1. ^2 + f 2. ^2) ;
Hd( ( r <0. 1) | ( r >0. 5) ) = 0;

%Most r amos l a r espuest a en f r ecuenci a.

col or map( j et ( 64) )
mesh( f 1, f 2, Hd)

%Cr eamos el f i l t r o a par t i r de l a r espuest a en f r ecuenci a y l o
most r amos.

h = f samp2( Hd) ;
f i gur e, f r eqz2( h)


Figura f.177 - Respuesta en frecuencia pasobanda Figura f.178 - Filtro con respuesta en frecuencia
pasobanda
Funciones relacionadas
conv2, f i l t er 2, f r eqspace, f t r ans2, f wi nd1, f wi nd2

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 221 de 410
fspecial
Creacin de un filtro predefinido en 2-D
Sintaxis
h = f speci al ( type)
h = f speci al ( type, par amet er s)
Descripcin
h = f speci al ( type) crea un filtro bidimensional h del tipo especificado en la variable
t ype. f speci al devuelve h como un kernel de correlacin, que es la forma apropiada para
usar con la funcin i mf i l t er . type es una cadena que puede ser cualquiera de los
siguientes valores:
Valor Descripcin
' aver age'
Filtro promedio, til para eliminar ruido y
desenfocar.
' di sk'
Filtro promedio circular (pillbox).
' gaussi an'
Filtro Gaussiano pasobajo.
' l apl aci an'
Filtro Laplaciano, til para resaltar bordes.
' l og'
Laplaciano del Gaussiano, til para resaltar bordes.
' mot i on'
Filtro para aproximar el movimiento lineal de una
cmara.
' pr ewi t t '
Filtro de Prewitt enfatizador de bordes.
' sobel '
Filtro de Sobel enfatizador de bordes.
' unshar p'
Filtro Unsharp para mejorar el enfoque.
h = f speci al ( type, par amet er s) usa el filtro especificado en la variable t ype adems
de varios parmetros adicionales especificados en la variable par amet er s que son
especficos del tipo de filtro elegido. Si se omiten estos parmetros se usarn los valores
por defecto. A continuacin se muestra una lista con la sintaxis y parmetros especficos
para cada tipo de filtro:
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 222 de 410
h = f speci al ( ' aver age' , hsi ze) devuelve un filtro promedio de tamao hsi ze
en la variable h. El argumento hsi ze puede ser un vector que especifique el
nmero de filas y columnas en h, o puede ser una escalar, en cuyo caso h ser una
matriz cuadrada. El valor por defecto para hsi ze es [ 3 3] .
h = f speci al ( ' di sk' , r adi us) devuelve un filtro promedio circular (pillbox)
dentro de la matriz cuadrada de lado 2*r adi us+1. El valor por defecto para r adi us
es 5.
h = f speci al ( ' gaussi an' , hsi ze, si gma) devuelve un filtro Gaussiano
pasobajo rotacionalmente simtrico de tamao hsi ze con una desviacin estndar
de si gma (positiva). hsi ze puede ser un vector que especifique el nmero de filas y
columnas de h, o puede ser un escalar, en cuyo caso h ser una matriz cuadrada. El
valor por defecto para hsi ze es [ 3 3] y 0.5 para si gma.
h = f speci al ( ' l apl aci an' , al pha) devuelve un filtro de 3-por-3 aproximando
la forma del operador Laplaciano bidimensional. El parmetro al pha controla la
forma del Laplaciano y debe estar en el rango de 0.0 a 1.0. El valor por defecto para
al pha es 0.2.
h = f speci al ( ' l og' , hsi ze, si gma) devuelve un filtro Laplaciano del
Gaussiano rotacionalmente simtrico, de tamao hsi ze y con una desviacin
estndar si gma (positiva). hsi ze puede ser un vector que especifique el nmero de
filas y columnas de h, o puede ser un escalar, en cuyo caso h ser una matriz
cuadrada. El valor por defecto para hsi ze es [ 5 5] y 0.5 para si gma.
h = f speci al ( ' mot i on' , l en, t het a) devuelve un filtro para aproximarse, una
vez convolucionado con una imagen, al movimiento lineal de una cmara de l en
pxeles, con un ngulo de t het a grados en direccin contraria a las agujas del reloj.
El filtro se convierte en un vector para los movimientos horizontales y verticales. El
valor por defecto para l en es 9 y para t het a es 0, que corresponde con un
movimiento horizontal de nueve pxeles. Para calcular los coeficientes h del filtro
se debe proceder de la siguiente manera:
1. Construir un segmento recto ideal con la longitud y ngulos deseados,
centrado en el coeficiente central de h.
2. Para cada localizacin de coeficiente ( i , j ) , calcular la distancia ms
cercana (near est _di st ance) entre esa localizacin y el segmento.
3. h = max( 1 - near est _di st ance, 0) ;
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 223 de 410
4. Normalizar h: h = h/ ( sum( h( : ) )
h = f speci al ( ' pr ewi t t ' ) devuelve un filtro h de 3-por-3 (mostrado debajo) que
enfatiza los bordes horizontales mediante la aproximacin a un gradiente vertical.
Si se quieren potenciar los bordes verticales se debe realizar la traspuesta del filtro
( h' ) .
[ 1 1 1
0 0 0
- 1 - 1 - 1]
h = f speci al ( ' sobel ' ) devuelve un filtro h de 3-por-3 (mostrado debajo) que
enfatiza los bordes horizontales utilizando el efecto de suavizado logrado mediante
la aproximacin a un gradiente vertical. Si se quieren potenciar los bordes
verticales se debe realizar la traspuesta del filtro ( h' ) .
[ 1 2 1
0 0 0
- 1 - 2 - 1]
h = f speci al ( ' unshar p' , al pha) devuelve un filtro unsharp de mejora del
enfoque de tamao 3-por-3. f speci al crea el filtro a partir del negativo del filtro
Laplaciano usando el parmetro al pha, parmetro que controla la forma del
Laplaciano y debe estar en el rango de 0.0 a 1.0. El valor por defecto para al pha es
0.2.
El nombre del filtro procede de un proceso en el que se enfoca una imagen a partir
de sustraer una imagen borrosa (unsharp) de la propia imagen.
h es de clase doubl e.
Ejemplos de uso
Ejemplo 1: Aplicar todos los filtros a una imagen y mostrar cada resultado por separado.
I = i mr ead( ' camer aman. t i f ' ) ;
i mshow( I )

H = f speci al ( ' aver age' , [ 10 10] )
Aver age = i mf i l t er ( I , H, ' r epl i cat e' ) ;
f i gur e, i mshow( Aver age)

H = f speci al ( ' di sk' , 10) ;
bl ur r ed = i mf i l t er ( I , H, ' r epl i cat e' ) ;
f i gur e, i mshow( bl ur r ed)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 224 de 410
H = f speci al ( ' gaussi an' , [ 20 20] , 10) ;
Gaussi an = i mf i l t er ( I , H, ' r epl i cat e' ) ;
f i gur e, i mshow( Gaussi an)

H = f speci al ( ' l apl aci an' ) ;
Lapl aci an = i mf i l t er ( I , H, ' r epl i cat e' ) ;
f i gur e, i mshow( Lapl aci an)

H = f speci al ( ' l og' ) ;
Log = i mf i l t er ( I , H, ' r epl i cat e' ) ;
f i gur e, i mshow( Log)

H = f speci al ( ' mot i on' , 20) ;
Mot i onBl ur = i mf i l t er ( I , H, ' r epl i cat e' ) ;
f i gur e, i mshow( Mot i onBl ur )

H = f speci al ( ' pr ewi t t ' ) ;
Pr ewi t t = i mf i l t er ( I , H, ' r epl i cat e' ) ;
f i gur e, i mshow( Pr ewi t t )

H = f speci al ( ' sobel ' ) ;
Sobel = i mf i l t er ( I , H, ' r epl i cat e' ) ;
f i gur e, i mshow( Sobel )

H = f speci al ( ' unshar p' , 0. 5) ;
shar pened = i mf i l t er ( I , H, ' r epl i cat e' ) ;
f i gur e, i mshow( shar pened)



Figura f.179 - Imagen original (I) Figura f.180 - Filtrado promedio (Average)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 225 de 410

Figura f.181 - Filtrado disco (blurred) Figura f.182 - Filtrado Gaussiano (Gaussian)


Figura f.183 - Filtrado Laplaciano (Laplacian) Figura f.184 - Filtrado Laplaciano del Gaussiano
(Log)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 226 de 410

Figura f.185 - Filtrado movimiento lineal
(MotionBlur)
Figura f.186 - Filtrado Prewitt (Prewitt)


Figura f.187 - Filtrado Sobel (Sobel) Figura f.188 - Filtrado de enfoque (sharpened)
Funciones relacionadas
conv2, edge, f i l t er 2, f samp2, f wi nd1, f wi nd2, i mf i l t er , del 2

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 227 de 410
ftrans2
Creacin de un filtro FIR en 2-D a partir de uno en 1-D utilizando una
transformacin de frecuencia
Sintaxis
h = f t r ans2( b, t )
h = f t r ans2( b)
Descripcin
h = f t r ans2( b, t ) produce el filtro FIR bidimensional h que se corresponde con el filtro
FIR de una dimensin b al que se le ha aplicado la transformacin t . f t r ans2 devuelve h
como una molcula computacional, que es la forma adecuada para trabajar con la funcin
f i l t er 2. b debe ser un filtro de una dimensin, Tipo I (simetra par, nmero de
coeficientes impar) como los filtros devueltos por las funciones f i r 1, f i r 2, o r emez de la
toolbox. La matriz de transformacin t contiene los coeficientes que definen la
transformacin de frecuencia que se usar. Si t es de tamao m-por-n y b tiene longitud Q,
entonces h ser de tamao ( ( m- 1) *( Q- 1) / 2+1) -por-( ( n- 1) *( Q- 1) / 2+1) .
h = f t r ans2( b) usa por defecto la matriz de transformacin de McClellan t .
t = [ 1 2 1; 2 - 4 2; 1 2 1] / 8;
Todas las entradas y salidas deben de ser de tipo doubl e.
Ejemplos de uso
Ejemplo 1: Utilizar f t r ans2 para disear un filtro pasobanda bidimensional con simtrica
esfrica aproximada y una banda de paso entre 0.1 y 0.6 (frecuencia normalizada donde 1.0
corresponde a la mitad de la frecuencia de muestreo o radianes):
%Di seamos y most r amos pr i mer o el f i l t r o pasobanda FI R de una di mensi n
al que l uego pasar emos a dos di mensi ones.

col or map( j et ( 64) )
b = r emez( 10, [ 0 0. 05 0. 15 0. 55 0. 65 1] , [ 0 0 1 1 0 0] ) ;
[ H, w] = f r eqz( b, 1, 128, ' whol e' ) ;
pl ot ( w/ pi - 1, f f t shi f t ( abs( H) ) )

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 228 de 410
%Usamos f t r ans2 con l a t r ansf or maci n McCl el l an por def ect o par a
conver t i r el f i l t r o a 2- D y obt ener un f i l t r o con si mt r i ca esf r i ca
apr oxi mada como quer amos.

h = f t r ans2( b) ;
f i gur e, f r eqz2( h)



Figura f.189 - Respuesta en frecuencia FIR
pasobanda 1-D
Figura f.190 - Filtro FIR 2-D con respuesta en
frecuencia pasobanda
Funciones relacionadas
conv2, f i l t er 2, f samp2, f wi nd1, f wi nd2

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 229 de 410
fwind1
Creacin de un filtro FIR en 2-D utilizando el mtodo de la ventana
Sintaxis
h = f wi nd1( Hd, wi n)
h = f wi nd1( Hd, wi n1, wi n2)
h = f wi nd1( f 1, f 2, Hd, . . . )
Descripcin
f wi nd1 disea filtros FIR bidimensionales utilizando el mtodo de la ventana. f wi nd1 usa
las especificaciones de una ventana unidimensional para disear el filtro FIR
bidimensional basndose en la respuesta en frecuencia deseada Hd. f wi nd1 solo trabaja con
ventanas unidimensionales y para trabajar con ventanas bidimensionales se debe usar la
funcin f wi nd2.
h = f wi nd1( Hd, wi n) disea un filtro FIR bidimensional h con la respuesta en frecuencia
especificada en la variable Hd. f wi nd1 devuelve h como una molcula computacional, que
es la forma adecuada para trabajar con la funcin f i l t er 2. f wi nd1 usa una ventana
unidimensional para crear una ventana bidimensional con simtrica esfrica aproximada
utilizando el mtodo de Huang. Se puede especificar la ventana en la variable wi n
utilizando funciones de la toolbox de Procesado de Seales como boxcar , hammi ng,
hanni ng, bar t l et t , bl ackman, kai ser , o chebwi n. Si l engt h( wi n) es n, entonces h ser
de tamao n-por-n.
Hd es una matriz que contiene la respuesta en frecuencia deseada, muestreada en puntos
equiespaciados entre -1.0 y 1.0 a lo largo de los ejes de frecuencia x e y, donde 1.0
corresponde a la mitad de la frecuencia de muestreo o radianes. Para obtener resultados
ms exactos, crear Hd utilizando puntos de frecuencia devueltos por la funcin f r eqspace.
h = f wi nd1( Hd, wi n1, wi n2) usa la ventana bidimensional especificada en las variables
wi n1 y wi n2 para crear una ventana bidimensional separable. Si l engt h( wi n1) es n y
l engt h( wi n2) es m, entonces h ser de tamao m-por-n.
h = f wi nd1( f 1, f 2, Hd, . . . ) permite especificar la respuesta en frecuencia deseada Hd
en frecuencias arbitrarias (f 1 y f 2) a lo largo de los ejes x e y. Los vectores de frecuencia
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 230 de 410
f 1 y f 2 deben estar comprendidos en el rango -1.0 a 1.0, frecuencia normalizada donde 1.0
corresponde a la mitad de la frecuencia de muestreo o radianes. La longitud de las
ventanas controla el tamao del filtro resultante, igual que en la definicin anterior.
La matriz de entrada Hd puede ser de tipo doubl e o de cualquier tipo entero. El resto de
entradas a f wi nd1 deben ser de tipo doubl e. Todas las salidas son de tipo doubl e.
Ejemplos de uso
Ejemplo 1: Utilizar f wi nd1 para disear un filtro pasobanda bidimensional con simtrica
esfrica aproximada y banda de paso entre 0.1 y 0.5 (frecuencia normalizada donde 1.0
corresponde a la mitad de la frecuencia de muestreo o radianes):
%Cr eamos y most r amos l a mat r i z Hd que cont i ene l a r espuest a pasobanda
deseada. Usamos l a f unci n f r eqspace par a cr ear l os vect or es de r ango de
f r ecuenci a f 1 y f 2.

[ f 1, f 2] = f r eqspace( 21, ' meshgr i d' ) ;
Hd = ones( 21) ;
r = sqr t ( f 1. ^2 + f 2. ^2) ;
Hd( ( r <0. 1) | ( r >0. 5) ) = 0;
col or map( j et ( 64) )
mesh( f 1, f 2, Hd)

%Di seamos el f i l t r o usando una vent ana Hammi ng uni di mensi onal .

h = f wi nd1( Hd, hammi ng( 21) ) ;
f i gur e, f r eqz2( h)


Figura f.191 - Respuesta pasobanda 1-D Figura f.192 - Filtro con respuesta pasobanda 2-D
Funciones relacionadas
conv2, f i l t er 2, f samp2, f r eqspace, f t r ans2, f wi nd2
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 231 de 410
fwind2
Creacin de un filtro FIR en 2-D utilizando el mtodo de la ventana en 2-
D
Sintaxis
h = f wi nd2( Hd, wi n)
h = f wi nd2( f 1, f 2, Hd, wi n)
Descripcin
Fwi nd2 disea filtros FIR bidimensionales utilizando el mtodo de la ventana
bidimensional. Fwi nd2 usa las especificaciones de una ventana bidimensional para disear
el filtro FIR bidimensional basndose en la respuesta en frecuencia deseada Hd. Fwi nd2
solo trabaja con ventanas bidimensionales y para trabajar con ventanas unidimensionales
se debe usar la funcin f wi nd1.
h = f wi nd2( Hd, wi n) crea el filtro FIR bidimensional h utilizando una transformada
inversa de Fourier de la respuesta en frecuencia deseada Hd y la multiplicacin por la
ventana wi n. Hd es una matriz que contiene la respuesta en frecuencia muestreada en
puntos equiespaciados en el plano Cartesiano. f wi nd2 devuelve h como una molcula
computacional, que es la forma adecuada para trabajar con la funcin f i l t er 2. h es del
mismo tamao que wi n. Para obtener resultados ms exactos, crear Hd utilizando puntos de
frecuencia devueltos por la funcin f r eqspace.
h = f wi nd2( f 1, f 2, Hd, wi n) permite especificar la respuesta en frecuencia deseada Hd
en frecuencias arbitrarias (f 1 y f 2) a lo largo de los ejes x e y. Los vectores de frecuencia
f 1 y f 2 deben estar comprendidos en el rango -1.0 a 1.0, frecuencia normalizada donde 1.0
corresponde a la mitad de la frecuencia de muestreo o radianes. h es del mismo tamao
que wi n.
La matriz de entrada Hd puede ser de tipo doubl e o de cualquier tipo entero. El resto de
entradas a f wi nd2 deben ser de tipo doubl e. Todas las salidas son de tipo doubl e.
Ejemplos de uso
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 232 de 410
Ejemplo 1: Utilizar f wi nd2 para disear un filtro pasobanda bidimensional con simtrica
esfrica aproximada y banda de paso entre 0.1 y 0.5 (frecuencia normalizada donde 1.0
corresponde a la mitad de la frecuencia de muestreo o radianes):
%Cr eamos y most r amos l a mat r i z Hd que cont i ene l a r espuest a pasobanda
deseada. Usamos l a f unci n f r eqspace par a cr ear l os vect or es de r ango de
f r ecuenci a f 1 y f 2.

[ f 1, f 2] = f r eqspace( 21, ' meshgr i d' ) ;
Hd = ones( 21) ;
r = sqr t ( f 1. ^2 + f 2. ^2) ;
Hd( ( r <0. 1) | ( r >0. 5) ) = 0;
col or map( j et ( 64) )
mesh( f 1, f 2, Hd)

%Cr eamos una vent ana Gaussi ana bi di mensi onal con l a f unci n f speci al , l a
most r amos y di seamos y most r amos el f i l t r o con l a vent ana.

wi n = f speci al ( ' gaussi an' , 21, 2) ;
wi n = wi n . / max( wi n( : ) ) ; %Nor mal i zamos a 1 el val or mxi mo de vent ana.
f i gur e, mesh( wi n)
h = f wi nd2( Hd, wi n) ;
f i gur e, f r eqz2( h)


Figura f.193 - Respuesta pasobanda 1-D Figura f.194 - Ventana Gaussiana 2-D

Figura f.195 - Filtro con respuesta pasobanda 2-D
Funciones relacionadas
conv2, f i l t er 2, f samp2, f r eqspace, f t r ans2, f wi nd1
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 233 de 410
getheight
Obtencin de la altura de un elemento estructurante
Introduccin
Los elementos estructurantes son un tipo de objeto definido en MATLAB esencial en las
operaciones morfolgicas para examinar la imagen de entrada ya que sirven como patrn
de bsqueda. Se utiliza la funcin st r el para crearlos.
Los elementos estructurantes bidimensionales o planos consisten fundamentalmente en una
matriz de 0's y 1's y son normalmente mucho menores que la imagen a procesar. En los
elementos estructurantes tridimensionales o no planos los 0's y 1's definen la extensin del
elemento estructurante en el plano-x y en el plano-y, y utilizan adems valores de altura
asociados con cada pixel para definir la tercera dimensin. El pixel central del elemento
estructurante, al que se le llama origen, identifica el pixel de inters, el pixel que se est
procesando. Los pxeles con valor 1 definen la vecindad del elemento estructurante y se les
denomina vecinos del elemento estructurante. La localizacin de los vecinos se hace
referente al pixel central con la notacin [vertical, horizontal] que indica el desplazamiento
vertical y horizontal del vecino respecto el origen:

Figura f.196 - Elemento estructurante
con vecindad y localizaciones
Sintaxis
H = get hei ght ( SE)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 234 de 410
Descripcin
H = get hei ght ( SE) devuelve un array del mismo tamao que el array devuelto por
get nhood( SE) con los valores de la altura asociada a cada vecino del elemento
estructurante SE. H es todo ceros para un elemento estructurante bidimensional o plano, ya
que no tienen una altura que defina su tercera dimensin. SE es un elemento estructurante
como el devuelto por la funcin STREL. H es de clase doubl e.
Al crear un elemento estructurante con la funcin st r el sin deshabilitar la salida de datos
por pantalla mediante el operador ; (punto y coma) siempre se muestra tanto la vecindad
como la altura del elemento estructurante creado.
Ejemplos de uso
Ejemplo 1: Crear un elemento estructurante tridimensional especificando su altura y leer
luego su altura en una variable.
se = st r el ( ones( 3, 3) , magi c( 3) ) ;
get hei ght ( se)

se =
Nonf l at STREL obj ect cont ai ni ng 9 nei ghbor s.

Nei ghbor hood:
1 1 1
1 1 1
1 1 1

Hei ght :
8 1 6
3 5 7
4 9 2


ans =

8 1 6
3 5 7
4 9 2

Funciones relacionadas
st r el , get nhood
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 235 de 410
getimage
Lectura de los datos de una imagen mostrada en los ejes
Sintaxis
A = get i mage( h)
[ x, y, A] = get i mage( h)
[ . . . , A, f l ag] = get i mage( h)
[ . . . ] = get i mage
Descripcin
A = get i mage( h) devuelve los primeros datos de imagen que haya en el identificador de
objeto grfico h. h puede ser una figura, eje, o una imagen. A es idntico a la propiedad de
la imagen Cdat a que guarda el color de cada rea; contiene los mismos valores y es del
mismo tipo (ui nt 8, ui nt 16, doubl e o l ogi cal ). Si h no es una imagen o no contiene una
imagen, A volver vaco.
[ x, y, A] = get i mage( h) devuelve las propiedades de la imagen XDat a en la variable x
e YDat a en y. XDat a e YDat a son vectores de dos elementos que indican el rango del eje x
e y respectivamente.
[ . . . , A, f l ag] = get i mage( h) devuelve f l ag, un indicador entero que marca el tipo
de imagen contenida en h. La siguiente tabla resume sus posibles valores.
Valor Tipo de Imagen
0
No es una imagen; A se devuelve como matriz vaca.
1
Imagen indexada.
2
Imagen de intensidad con valores comprendidos en el rango estndar ([0, 1] para
arrays tipo si ngl e y doubl e, [0, 255] para arrays ui nt 8, [0, 65535] pata arrays
ui nt 16).
3
Datos de intensidad, pero no en el rango estndar.
4
Imagen RGB.
5
Imagen binaria.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 236 de 410
[ . . . ] = get i mage devuelve informacin del objeto de ejes actual. Es equivalente a
[ . . . ] = get i mage( gca) .
El array de salida A es del mismo tipo que la propiedad de la imagen CDat a. El resto de
entradas y salidas son de tipo doubl e.
Nota: Para imgenes tipo i nt 16 y si ngl e, los datos de imagen devueltos por la
funcin get i mage son de tipo doubl e, no i nt 16 o si ngl e, porque la funcin lee
los datos de la propiedad CDat a que como el resto de objetos de imagen, guarda
este tipo de datos como tipo doubl e.
Por ejemplo, al crear un objeto de imagen de tipo i nt 16, si se lee la propiedad
CDat a del objeto y se mira su clase, ser tipo doubl e.
h = i mshow( ones( 10, ' i nt 16' ) ) ;
cl ass( get ( h, ' CDat a' ) )
As que si se obtiene este dato usando la funcin get i mage, el tipo de dato ser
doubl e y la variable f l ag con el indicador de tipo ser igual a 3.
[ i mg, f l ag] = get i mage( h) ;
cl ass( i mg)
Para imgenes tipo si ngl e, el valor de f l ag ser 2 porque los tipos si ngl e y
doubl e tienen el mismo rango dinmico.
Ejemplos de uso
Ejemplo 1: Despus de utilizar la funcin i mshow o i mt ool para mostrar una imagen
directamente de un archivo, usar get i mage para incorporar todos los datos de la imagen al
espacio de trabajo.
i mshow r i ce. png
I = get i mage;

Funciones relacionadas
i mshow, i mt ool

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 237 de 410
getimagemodel
Creacin de un objeto modelo de imagen desde un objeto imagen
Introduccin
Un objeto modelo de imagen guarda cierta informacin de una imagen: clase, tipo, rango
de intensidades, anchura, altura, mnimo y mximo valor de intensidad. El objeto acepta
mtodos que se pueden usar para acceder y mostrar esta informacin. Para saber la lista de
mtodos aceptados se debe escribir met hods i magemodel o hel p i magemodel / mt odo
para ms informacin a cerca de un mtodo determinado.
Sintaxis
i mgmodel = get i magemodel ( hi mage)
Descripcin
i mgmodel = get i magemodel ( hi mage) devuelve el objeto modelo de imagen asociado
con hi mage o crea uno nuevo si no tiene asignado uno. hi mage debe ser un puntero a un
objeto de imagen o un array de punteros a objetos de imagen, en cuyo caso i mgmodel ser
un array de modelos de imagen.
Ejemplos de uso
Ejemplo 1: Crear un objeto modelo de imagen a partir de una imagen y mostrarlo.
h = i mshow( ' bag. png' )
i mgmodel = get i magemodel ( h)

i mgmodel =

I MAGEMODEL obj ect accessi ng an i mage wi t h t hese pr oper t i es:
Cl assType: ' ui nt 8'
Di spl ayRange: [ 0 255]
I mageHei ght : 250
I mageType: ' i nt ensi t y'
I mageWi dt h: 189
Mi nI nt ensi t y: 0
MaxI nt ensi t y: 255
Funciones relacionadas
i magemodel
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 238 de 410
getline
Obtencin de las coordenadas de una polilnea mediante su seleccin en
una figura
Introduccin
Una polilnea es un objeto formado por uno o ms segmentos de lnea (rectas o arcos).
Sintaxis
[ x, y] = get l i ne( f i g)
[ x, y] = get l i ne( ax)
[ x, y] = get l i ne
[ x, y] = get l i ne( . . . , ' cl osed' )
Descripcin
[ x, y] = get l i ne( f i g) permite seleccionar interactivamente una polilnea en los ejes
actuales de la figura f i g utilizando el ratn y recoger sus coordenadas en las variables X e
Y. Se debe usar un clic derecho del ratn para aadir puntos a la polilnea. Teniendo
presionadas las teclas Shift o derecha al hacer clic, o haciendo doble clic, se aade un
punto final y se finaliza la seleccin de la polilnea. Presionando Return o Enter se finaliza
la seleccin sin aadir un punto final. Presionando Backspace o Delete se elimina de la
polilnea el punto seleccionado.
[ x, y] = get l i ne( ax) permite seleccionar una polilnea en los ejes especificados por el
puntero ax.
[ x, y] = get l i ne es lo mismo que [ x, y] = get l i ne( gcf ) .
[ x, y] = get l i ne( . . . , ' cl osed' ) permite seleccionar un polgono cerrado.
Ejemplos de uso
Ejemplo 1: Crear una polilnea en una imagen y recoger sus coordenadas.
i mshow( ' moon. t i f ' )
[ x, y] = get l i ne
Funciones relacionadas
get pt s, get r ect
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 239 de 410
getneighbors
Obtencin de las localizaciones y alturas de los vecinos de un elemento
estructurante
Introduccin
Los elementos estructurantes son un tipo de objeto definido en MATLAB esencial en las
operaciones morfolgicas para examinar la imagen de entrada ya que sirven como patrn
de bsqueda. Se utiliza la funcin st r el para crearlos.
Los elementos estructurantes bidimensionales o planos consisten fundamentalmente en una
matriz de 0's y 1's y son normalmente mucho menores que la imagen a procesar. En los
elementos estructurantes tridimensionales o no planos los 0's y 1's definen la extensin del
elemento estructurante en el plano-x y en el plano-y, y utilizan adems valores de altura
asociados con cada pixel para definir la tercera dimensin. El pixel central del elemento
estructurante, al que se le llama origen, identifica el pixel de inters, el pixel que se est
procesando. Los pxeles con valor 1 definen la vecindad del elemento estructurante y se les
denomina vecinos del elemento estructurante. La localizacin de los vecinos se hace
referente al pixel central con la notacin [vertical, horizontal] que indica el desplazamiento
vertical y horizontal del vecino respecto el origen:

Figura f.196 - Elemento estructurante
con vecindad y localizaciones
Sintaxis
[ of f set s, hei ght s] = get nei ghbor s( SE)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 240 de 410
Descripcin
[ of f set s, hei ght s] = get nei ghbor s( SE) devuelve las localizaciones relativas y las
alturas correspondientes a cada uno de los vecinos en el elemento estructurante SE.
of f set s es un array de P-por-N donde P es el nmero de vecinos en el elemento
estructurante y N es la dimensin. Cada fila de of f set s contiene la localizacin del vecino
correspondiente, relativo al centro del elemento estructurante. hei ght s es un vector de P
columnas que contiene la altura de cada vecino del elemento estructurante. SE es un objeto
STREL. Los valores devueltos en la variables of f set s y hei ght s son arrays de valores con
precisin doubl e.
Al crear un elemento estructurante con la funcin st r el sin deshabilitar la salida de datos
por pantalla mediante el operador ; (punto y coma) siempre se muestra tanto la vecindad
como la altura del elemento estructurante creado.
Ejemplos de uso
Ejemplo 1: Crear un elemento estructurante y obtener las localizaciones y alturas de sus
vecinos.
se = st r el ( [ 1 0 1] , [ 5 0 - 5] )
[ l ocal i zaci ones, al t ur as] = get nei ghbor s( se)

se =
Nonf l at STREL obj ect cont ai ni ng 2 nei ghbor s.

Nei ghbor hood:
1 0 1

Hei ght :
5 0 - 5


l ocal i zaci ones =
0 - 1
0 1

al t ur as =
5 - 5
Funciones relacionadas
st r el , get nhood, get hei ght
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 241 de 410
getnhood
Obtencin del array de vecindad de un elemento estructurante
Introduccin
Los elementos estructurantes son un tipo de objeto definido en MATLAB esencial en las
operaciones morfolgicas para examinar la imagen de entrada ya que sirven como patrn
de bsqueda. Se utiliza la funcin st r el para crearlos.
Los elementos estructurantes bidimensionales o planos consisten fundamentalmente en una
matriz de 0's y 1's y son normalmente mucho menores que la imagen a procesar. En los
elementos estructurantes tridimensionales o no planos los 0's y 1's definen la extensin del
elemento estructurante en el plano-x y en el plano-y, y utilizan adems valores de altura
asociados con cada pixel para definir la tercera dimensin. El pixel central del elemento
estructurante, al que se le llama origen, identifica el pixel de inters, el pixel que se est
procesando. Los pxeles con valor 1 definen la vecindad del elemento estructurante y se les
denomina vecinos del elemento estructurante. La localizacin de los vecinos se hace
referente al pixel central con la notacin [vertical, horizontal] que indica el desplazamiento
vertical y horizontal del vecino respecto el origen:

Figura f.196 - Elemento estructurante
con vecindad y localizaciones
Sintaxis
NHOOD = get nhood( SE)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 242 de 410
Descripcin
NHOOD = get nhood( SE) devuelve el array de vecindad o patrn asociado al elemento
estructurante SE.
SE es un objeto STREL. NHOOD es un array tipo l ogi cal .
Ejemplos de uso
Ejemplo 1: Visualizar un elemento estructurante leyendo su array de vecindad.
se = st r el ( ' di sk' , 4) ;
nhood = get nhood( se)
i magesc( nhood) ; axi s xy; col or map( ' gr ay' ) ;

nhood =
0 0 1 1 1 0 0
0 1 1 1 1 1 0
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
0 1 1 1 1 1 0
0 0 1 1 1 0 0


Figura f.197 - Figura elemento estructurante
Funciones relacionadas
st r el , get nei ghbor s

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 243 de 410
getpts
Obtencin de coordenadas de puntos en una figura mediante su seleccin
Sintaxis
[ x, y] = get pt s( f i g)
[ x, y] = get pt s( ax)
[ x, y] = get pt s
Descripcin
[ x, y] = get pt s( f i g) permite que se especifiquen interactivamente un conjunto de
puntos en los ejes actuales de la figura f i g utilizando el ratn y recoger sus coordenadas en
las variables X e Y.
Usar el clic derecho del ratn para aadir puntos. Teniendo presionadas las teclas Shift o
derecha al hacer clic, o haciendo doble-clic, se aade un punto final y se finaliza la
seleccin. Presionando Return o Enter se finaliza la seleccin sin aadir un punto final.
Presionando Backspace o Delete se elimina el punto seleccionado.
[ x, y] = get pt s( ax) permite elegir puntos en los ejes especificados por el puntero ax.
[ x, y] = get pt s es lo mismo que [x,y] =getpts(gcf ) .
Funciones relacionadas
get l i ne, get r ect

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 244 de 410
getrangefromclass
Obtencin del rango de visualizacin por defecto de una imagen segn su
clase
Sintaxis
r ange = get r angef r omcl ass( I )
Descripcin
r ange = get r angef r omcl ass( I ) devuelve el rango de visualizacin por defecto de la
imagen I , basndose en su tipo o clase, en la variable r ange, un vector de dos elementos
(mnimo, mximo) que especifica el rango de visualizacin en la forma [ mi n max] .
I puede ser de tipo ui nt 8, ui nt 16, i nt 16, l ogi cal , si ngl e, o doubl e. r ange es de clase
doubl e.
Nota: Para tipos de dato si ngl e y doubl e, la funcin get r angef r omcl ass
devuelve el rango [ 0, 1] para ser consecuente con la forma en la que MATLAB
interpreta dichos tipos de imagen. Para datos enteros, get r angef r omcl ass
devuelve el rango de visualizacin por defecto de la clase. Por ejemplo, si la clase
es ui nt 8, el rango dinmico es [ 0, 255] .
Ejemplos de uso
Ejemplo 1: Leer una imagen en formato DICOM (Digital Imaging and Communication in
Medicine) y obtener su rango de visualizacin por defecto.
CT = di comr ead( ' CT- MONO2- 16- ankl e. dcm' ) ;
r = get r angef r omcl ass( CT)

r =
- 32768 32767
Funciones relacionadas
i nt mi n, i nt max

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 245 de 410
getrect
Obtencin de las coordenadas de un rectngulo en una figura mediante
su seleccin
Sintaxis
r ect = get r ect ( f i g)
r ect = get r ect ( ax)
Descripcin
r ect = get r ect ( f i g) permite que se especifique interactivamente un rectngulo en los
ejes actuales de la figura f i g utilizando el ratn y recoger sus coordenadas en la variable
r ect , un vector de cuatro elementos (mnimo valor en x, mnimo valor en y, anchura y
altura) en la forma [ xmi n ymi n wi dt h hei ght ] .
Se debe usar el ratn para hacer clic y seleccionar el rectngulo deseado. Para hacer que el
rectngulo sea un cuadrado se debe tener pulsada primero la tecla Shift o hacer clic con el
botn derecho para empezar la seleccin.
r ect = get r ect ( ax) permite seleccionar un rectngulo en los ejes actuales especificados
por el puntero ax.
Funciones relacionadas
get l i ne, get pt s

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 246 de 410
getsequence
Obtencin de los elementos estructurantes necesarios para la
descomposicin de un elemento estructurante
Introduccin
Los elementos estructurantes son un tipo de objeto definido en MATLAB esencial en las
operaciones morfolgicas para examinar la imagen de entrada ya que sirven como patrn
de bsqueda. Se utiliza la funcin st r el para crearlos. Ms informacin en las pginas de
las funciones get hei ght , get nei ghbor s o get nhood.
En la dilatacin de imgenes, algunos elementos estructurantes pueden ser de mucha
utilidad escribindolos como la dilatacin de dos o ms elementos estructurantes ms
pequeos para ahorrar procesado de datos. Por ejemplo, un array simple b de tamao 5-
por-5 puede descomponerse en dos elementos estructurantes ms pequeos, una lnea
horizontal b1 y una vertical b2:
b = ones( 5, 5)

b =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1

b1 = ones( 1, 5)

b1 =
1 1 1 1 1

b2 = ones( 5, 1)

b2 =
1
1
1
1
1

i mdi l at e( b1, b2, ' f ul l ' )

ans =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 247 de 410
Al realizar la dilatacin de una imagen directamente a travs de la definicin, se
necesitaran Q comparaciones por pixel, donde Q es el nmero de elementos del elemento
estructurante. En este caso se necesitaran 25 operaciones por pixel al ser un cuadrado de
5-por-5. Sin embargo, como los elementos estructurantes b1 y b2 tienen solo 5 elementos
cada uno, se podra dilatar primero por uno y a continuacin por el otro, necesitando
solamente un 40% de la comparacin de pxeles.
Sintaxis
SEQ = get sequence( SE)
Descripcin
SEQ = get sequence( SE) devuelve el array de elementos estructurantes SEQ con los
elementos estructurantes individuales que forman la descomposicin de SE. SE puede ser
un array de elementos estructurantes. SEQ es equivalente a SE, pero los elementos de SEQ
no tienen descomposicin. SE y SEQ son arrays de objetos estructurantes STREL.
Ejemplos de uso
Ejemplo 1: Obtener los elementos estructurantes necesarios para la descomposicin de un
elemento estructurante cuadrado y confirmarlo mediante la funcin i mdi l at e.
%Cr eamos el el ement o est r uct ur ant e cuadr ado.

b = st r el ( ' squar e' , 5)

%Vemos que habr a una descomposi ci n posi bl e con 2 el ement os STREL, as
que vamos a ver cul es son y a most r ar cada uno.

decomp = get sequence( b)
b1 = get nhood( decomp( 1) )
b2 = get nhood( decomp( 2) )

%Conf i r mamos que l a di l at aci n con esos dos el ement os est r uct ur ant es da
el el ement o est r uct ur ant e or i gi nal .

i mdi l at e( 1, decomp, ' f ul l ' )

b =
Fl at STREL obj ect cont ai ni ng 25 nei ghbor s.
Decomposi t i on: 2 STREL obj ect s cont ai ni ng a t ot al of 10 nei ghbor s

Nei ghbor hood:
1 1 1 1 1
1 1 1 1 1
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 248 de 410
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1


decomp =
2x1 ar r ay of STREL obj ect s

b1 =
Fl at STREL obj ect cont ai ni ng 5 nei ghbor s.

Nei ghbor hood:
1
1
1
1
1

b2 =
Fl at STREL obj ect cont ai ni ng 5 nei ghbor s.

Nei ghbor hood:
1 1 1 1 1

ans =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
Ejemplo 2: Obtener las formas en las que se puede descomponer un elemento
estructurante diamante de 5 por 5.
%Cr eamos un el ement o est r uct ur ant e di amant e y l eemos l a secuenci a de
descomposi ci n most r ando cada el ement o.

b = st r el ( ' di amond' , 5)
decomp = get sequence( b)
f or k = 1: numel ( decomp)
get nhood( decomp( k) )
end

b =
Fl at STREL obj ect cont ai ni ng 61 nei ghbor s.
Decomposi t i on: 4 STREL obj ect s cont ai ni ng a t ot al of 17 nei ghbor s

Nei ghbor hood:
0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0 0
0 0 0 1 1 1 1 1 0 0 0
0 0 1 1 1 1 1 1 1 0 0
0 1 1 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 0 0 0
0 0 0 0 1 1 1 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 249 de 410


decomp =
4x1 ar r ay of STREL obj ect s

ans =
0 1 0
1 1 1
0 1 0

ans =
0 1 0
1 0 1
0 1 0

ans =
0 0 1 0 0
0 0 0 0 0
1 0 0 0 1
0 0 0 0 0
0 0 1 0 0

ans =
0 1 0
1 0 1
0 1 0
Funciones relacionadas
i mdi l at e, i mer ode, st r el

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 250 de 410
gray2ind
Conversin de una imagen binaria o en escala de grises a una imagen
indexada
Sintaxis
[ X, map] = gr ay2i nd( I , n)
[ X, map] = gr ay2i nd( BW, n)
Descripcin
[ X, map] = gr ay2i nd( I , n) convierte la imagen en escala de grises I a una imagen
indexada X. n especifica el tamao del mapa de color, que es gr ay( n) . n debe ser entero y
estar comprendido entre 1 y 65536. Si se omite n, el valor por defecto es 64.
[ X, map] = gr ay2i nd( BW, n) convierte la imagen binaria BWen una imagen indexada X.
n especifica el tamao del mapa de color, que es gr ay( n) . Si se omite n, el valor por
defecto es 2.
gr ay2i nd escala y despus redondea la imagen de intensidad para producir una imagen
indexada equivalente.
La imagen de entrada I puede ser de tipo l ogi cal , ui nt 8, ui nt 16, i nt 16, si ngl e, o
doubl e y debe ser real y no dispersa. La imagen I puede tener cualquier dimensin. La
clase de la imagen de salida X es ui nt 8 si la longitud del mapa de color es menor o igual
que 256; en caso contrario ser tipo ui nt 16.
Ejemplos de uso
Ejemplo 1: Convertir una imagen en escala de grises en una imagen indexada y comparar
ambas imgenes.
I = i mr ead( ' camer aman. t i f ' ) ;
i mshow( I )
[ X, map] = gr ay2i nd( I , 16) ;
f i gur e, i mshow( X, map) ;
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 251 de 410

Figura f.179 - Imagen original (I) en escala de grises Figura f.198 - Imagen convertida a indexada (X)
Funciones relacionadas
gr aysl i ce, i nd2gr ay, mat 2gr ay

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 252 de 410
graycomatrix
Creacin de una matriz de coocurrencia de niveles de gris (GLCM ) a
partir de una imagen
Introduccin
La textura de una superficie hace referencia a la distribucin de valores de intensidad a
nivel espacial. Existen diferentes mtodos de caracterizacin de texturas y entre ellos uno
de los ms utilizados es el de las medidas estadsticas de segundo orden como las matrices
de coocurrencia.
La coocurrencia de una imagen en niveles de gris es la probabilidad de que un pixel sea de
nivel de gris i y que sus vecinos direccionales tengan nivel de gris j. La matriz de
coocurrencia de niveles de gris GLCM (Grey Level Co-occurrence Matrix), es un
histograma de los niveles de grises de dos dimensiones para un par de pixeles (pxel de
referencia y vecino) y es una herramienta potente que permite analizar la textura de la
imagen. Esta matriz considera no solamente la distribucin de intensidades, sino tambin
las posiciones de los pxeles que tienen iguales o parecidos valores de intensidad.
[15] [16]

La siguiente imagen muestra cmo se calculan varios valores en la GLCM de una imagen
I de 4-por-5. El elemento (1,1) en la matriz vale 1 porque en la imagen solo ocurre una vez
que dos pxeles adyacentes horizontalmente tengan valores 1 y 1 respectivamente. El
elemento( 1, 2) vale 2 porque en la imagen ocurre dos veces que dos pxeles adyacentes
tengan los valores 1 y 2. gr aycomat r i x es la funcin que se encarga de este proceso de
relleno de todos los valores en la matriz GLCM.

Figura f.199 - Proceso GLMC
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 253 de 410
Sintaxis
gl cm= gr aycomat r i x( I )
gl cms = gr aycomat r i x( I , par am1, val 1, par am2, val 2, . . . )
[ gl cm, SI ] = gr aycomat r i x( . . . )
Descripcin
gl cm= gr aycomat r i x( I ) crea una matriz de co-ocurrencia de niveles de gris (GLCM) a
partir de la imagen I . gr aycomat r i x crea la matriz calculando la frecuencia con la que un
pixel con un nivel del gris i determinado (intensidad de gris) aparece adyacente de forma
horizontal a otro pixel de valor j. (Se pueden especificar otras relaciones espaciales
utilizando el parmetro Of f set s) . Cada elemento (i,j) en la variable gl cmespecifica el
nmero de veces que el pixel de valor i ha aparecido adyacente de forma horizontal al pixel
de valor j.
gr aycomat r i x calcula la matriz GLCM a partir de una versin escalada de la imagen. Por
defecto, si I es una imagen binaria, gr aycomat r i x escala la imagen a dos niveles de gris.
Si I es una imagen de intensidades, gr aycomat r i x escala la imagen a ocho niveles de gris.
Se puede especificar el nmero de niveles de gris que usar la funcin mediante el
parmetro NumLevel s, y la forma en que la funcin escala los valores con el parmetro
' Gr ayLi mi t s' .
gl cms = gr aycomat r i x( I , par am1, val 1, par am2, val 2, . . . ) devuelve una o ms
GLCMs dependiendo de los valores de varios parmetros. Los nombres de los parmetros
se pueden abreviar y no son sensibles a las maysculas:
Parmetro Descripcin Por defecto
' Gr ayLi mi t s'
Vector de dos elementos, [ l ow hi gh] , que especifica
cmo se escalan linealmente los niveles de gris. Los
valores menores o iguales que l ow se escalarn a 1,
mientras que los valores mayores mayores o iguales a
hi gh se escalarn a NumLevel s. Si gr ayl i mi t s se
pone como [ ] , gr aycomat r i x usa como lmite el
mnimo y mximo valor de gris en la imagen:
[ mi n( I ( : ) ) max( I ( : ) ) ] .
Mnimo y
mximo
especificados por
clase p. ej.
doubl e [ 0 1]

' NumLevel s'
Entero que especifica el nmero de niveles de gris que
se usar al escalar los valores en escala de gris de la
imagen I . Por ejemplo, si NumLevel s es 8,
8 (numer i c)
2 (bi nar y)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 254 de 410
gr aycomat r i x escala los valores en I de forma que
solo hay valores enteros del 1 al 8. El nmero de
niveles de gris determina el tamao de la matriz de
co-ocurrencia (gl cm).
' Of f set '
Array de enteros de tamao p-por-2 que especifica la
distancia entre el pixel de inters y su vecino. Cada
fila en el array es un vector de dos elementos
[ r ow_of f set , col _of f set ] , que especifica la
posicin o desfase de un par de pxeles, referida desde
el pixel de inters.
r ow_of f set es el nmero de filas de distancia o
desfase entre el pixel de inters y su vecino.
col _of f set es el nmero de columnas de distancia
entre el pixel de inters y su vecino. Los valores
positivos son abajo y a la derecha, mientras que los
negativos representan el desfase para arriba y para la
izquierda.
Dado que el desfase se expresa normalmente como un
ngulo, la tabla siguiente muestra la equivalencia para
valores de ngulos habituales, para una distancia de
pixel de D.
ngulo Desfase
0
[ 0 D]
45
[ - D D]
90
[ - D 0]
135
[ - D - D]
P. ej. Un array [ 2 0] significa que cada pixel se
compara con el pixel dos filas ms abajo y en la
misma columna. Un array [ 2 0; 0 2] significa que
cada pixel se compara con dos vecinos: el pixel dos
filas ms abajo y el pixel dos columnas ms a la
derecha.
La figura siguiente representa el array, en el cual cada
pixel de inters se compara con 4 vecinos:
of f set = [ 0 1; - 1 1; - 1 0; - 1 - 1]
[ 0 1]
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 255 de 410

Figura f.200 - Offset
' Symmet r i c'
Booleano que crea una GLCM donde no se considera
el orden de los valores en los pares de pxeles. Por
ejemplo, cuando se pone ' Symmet r i c' a t r ue,
gr aycomat r i x cuenta los pares 1,2 y 2,1 al calcular el
nmero de veces que el 1 es adyacente al 2. Cuando
' Symmet r i c' se pone a f al se, gr aycomat r i x solo
cuenta 1,2 o 2,1, dependiendo del valor de ' of f set ' .
f al se
[ gl cm, SI ] = gr aycomat r i x( . . . ) devuelve la imagen escalada SI que se us para
calcular la GLCM. Los valores de SI estn comprendidos entre 1 y NumLevel s.
I puede ser de tipo numer i c o l ogi cal pero debe ser bidimensional, real, y no dispersa. SI
es una matriz en formato doubl e que tiene el mismo tamao que I . gl cms es un array
doubl e de tamao ' NumLevel s' -por-' NumLevel s' -por-P donde P es el nmero de
desfases en el parmetro Of f set .
Notas: Otro nombre para la matriz de coocurrencia de niveles de gris o GLCM es
una matriz de dependencia espacial de niveles de gris.
gr aycomat r i x ignora los pares de pixel si cualquiera de los pxeles contiene un
nmero indeterminado NaN (Not-a-Number).
gr aycomat r i x remplaza I nf s (infinitos) positivos con el valor NumLevel s e I nf s
(infinitos) negativos con el valor 1.
gr aycomat r i x ignora pxeles en los bordes si el pixel vecino correspondiente cae
fuera de las fronteras de la imagen.
La GLCM creada cuando se usa el parmetro ' Symmet r i c' puesto a t r ue es
simtrica a travs de su diagonal. La GLCM producida por la siguiente sintaxis
cuando ' Symmet r i c' vale t r ue:
gr aycomat r i x( I , ' of f set ' , [ 0 1] , ' Symmet r i c' , t r ue)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 256 de 410
es equivalente a la suma de dos GLCMs producidas por las siguientes expresiones
cuando el parmetro ' Symmet r i c' vale f al se.
gr aycomat r i x( I , ' of f set ' , [ 0 1] , ' Symmet r i c' , f al se)
gr aycomat r i x( I , ' of f set ' , [ 0 - 1] , ' Symmet r i c' , f al se)
Ejemplos de uso
Ejemplo 1: Calcular la matriz de coocurrencia de niveles de gris (GLCM) de una imagen
en escala de grises.
I = i mr ead( ' camer aman. t i f ' ) ;
gl cm= gr aycomat r i x( I , ' Of f set ' , [ 2 0] ) ;
Funciones relacionadas
gr aycopr ops

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 257 de 410
graycoprops
Obtencin de propiedades de una matriz de co-ocurrencia de niveles de
gris (GLCM)
Introduccin
La coocurrencia de una imagen en niveles de gris es la probabilidad de que un pixel sea de
nivel de gris i y que sus vecinos direccionales tengan nivel de gris j. La matriz de
coocurrencia de niveles de gris GLCM (Grey Level Co-occurrence Matrix), es un
histograma de los niveles de grises de dos dimensiones para un par de pixeles (pxel de
referencia y vecino) y es una herramienta potente que permite analizar la textura de la
imagen. Esta matriz considera no solamente la distribucin de intensidades, sino tambin
las posiciones de los pxeles que tienen iguales o parecidos valores de intensidad. Ms
informacin en la pgina dedicada a la funcin gr aycomat r i x.
[15] [16]

Sintaxis
st at s = gr aycopr ops( gl cm, pr oper t i es)
Descripcin
st at s = gr aycopr ops( gl cm, pr oper t i es) calcula estadsticas especificadas en la
variable pr oper t i es a partir de una matriz de coocurrencia de niveles de gris gl cmque es
un array de m-por-n-por-p de matrices de co-ocurrencia vlidas. Si gl cmes un array de
matrices de coocurrencia, st at s es un array de estadsticas para cada gl cm.
gr aycopr ops normaliza la GLCM para que la suma de sus elementos sea igual a 1. Cada
elemento (r,c) en la matriz normalizada es la probabilidad de que el pixel de nivel de gris i
aparezca con una relacin espacial definida (p. ej. adyacente de forma horizontal) al pixel
de nivel j. gr aycopr ops usa la matriz normalizada para calcular las estadsticas definidas
en pr oper t i es.
pr oper t i es puede ser una lista de propiedades separadas por coma, un array de celdas con
propiedades, la propiedad ' al l ' o propiedades separadas por espacios en blanco. Los
nombres de las propiedades, listados a continuacin, se pueden abreviar y no son sensibles
a las maysculas:
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 258 de 410
Propiedad Descripcin
' Cont r ast '
Devuelve una medida de contraste de intensidad entre un pixel y su
vecino, sobre la imagen completa.
Rango = [ 0 ( si ze( GLCM, 1) - 1) ^2]
Su valor ser 0 para una imagen constante.
Tambin conocida como varianza e inercia.
' Cor r el at i on'
Devuelve una medida de cmo est un pixel de correlado a su
vecino, sobre la imagen completa.
Rango = [ - 1, 1]
Su valor ser 1 o -1 para una imagen perfectamente correlada
positiva o negativamente. Ser un nmero indeterminado NaN (Not-a-
Number) para una imagen constante.
' Ener gy'
Devuelve la suma de los elementos encuadrados en la GLCM.
Rango = [ 0, 1]
Su valor ser 1 para una imagen constante.
Tambin conocida como uniformidad y segundo momento angular.
' Homogenei t y'
Devuelve un valor que mide el parecido de la distribucin de
elementos en la GLCM a la diagonal de la matriz.
Rango = [ 0, 1]
Su valor ser 1 para una GLCM diagonal.
st at s es una estructura con campos especificados por pr oper t i es. Cada campo contiene
un array de 1 x p, donde p es el nmero de GLCMs. Por ejemplo, si GLCM es un array de
8 x 8 x 3 y la propiedad es ' Ener gy' , la variable st at s ser una estructura que contenga el
campo ' Ener gy' que a su vez contendr un array de 1 x 3.
gl cmpuede ser de tipo numer i c o l ogi cal y debe contener enteros reales, no negativos y
finitos. st at s es una estructura.
Ejemplos de uso
Ejemplo 1: Crear una matriz de co-ocurrencia y obtener sus propiedades.
GLCM = [ 0 1 2 3; 1 1 2 3; 1 0 2 0; 0 0 0 3] ;
st at s = gr aycopr ops( GLCM)

st at s =
Cont r ast : 2. 8947
Cor r el at i on: 0. 0783
Ener gy: 0. 1191
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 259 de 410
Homogenei t y: 0. 5658
Ejemplo 2: Crear una matriz de co-ocurrencia a partir de una imagen y obtener sus
propiedades.
I = i mr ead( ' ci r cui t . t i f ' ) ;
GLCM2 = gr aycomat r i x( I , ' Of f set ' , [ 2 0; 0 2] ) ;
st at s = gr aycopr ops( GLCM2, {' cont r ast ' , ' homogenei t y' })

st at s =
Cont r ast : [ 0. 3307 0. 3358]
Homogenei t y: [ 0. 8534 0. 8531]
Funciones relacionadas
gr aycomat r i x
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 260 de 410
grayslice
Conversin de una imagen en escala de grises a una imagen indexada
utilizando umbral multinivel
Sintaxis
X = gr aysl i ce( I , n)
Descripcin
X = gr aysl i ce( I , n) devuelve una imagen indexada X a partir de una imagen de
intensidades I utilizando los valores de umbral de valores:
1

,
2

, ,
1


X = gr aysl i ce( I , v) umbraliza la imagen indexada I utilizando los valores de v que es
un vector de valores entre 0 y 1, devolviendo una imagen indexada en X.
La imagen de entrada I puede ser de tipo ui nt 8, ui nt 16, i nt 16, si ngl e, o doubl e y debe
ser no dispersa. Los valores del umbral estn siempre entre 0 y 1, incluso si I es del tipo
ui nt 8 o ui nt 16. En este caso, cada valor de umbral se multiplica por 255 o 65535 para
determinar el umbral real a usar.
La clase de la imagen de salida X depende del nmero de valores de umbral. Si el nmero
de valores de umbral es menor que 256, entonces X ser de clase ui nt 8 y sus valores irn
desde 0 a n o l engt h( v) . Si el nmero de valores de umbral es 256 o ms, X ser de clase
doubl e y los valores en X irn desde 1 hasta n+1 o l engt h( v) +1.
Se puede visualizar la imagen umbralizada utilizando la funcin i mshow( X, map) con un
mapa de color map de longitud apropiada.
Ejemplos de uso
Ejemplo 1: Convertir una imagen en escala de grises a una imagen indexada utilizando
umbral multinivel.
I = i mr ead( ' camer aman. t i f ' ) ;
X = gr aysl i ce( I , 16) ;
i mshow( I )
f i gur e, i mshow( X, j et ( 16) )
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 261 de 410


Figura f.179 - Imagen original (I) en escala de
grises
Figura f.201 - Imagen convertida a indexada (X)
usando grayslice
Funciones relacionadas
gr ay2i nd

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 262 de 410
graythresh
Clculo del umbral ptimo de una imagen mediante el mtodo de Otsu
Introduccin
La segmentacin es un proceso de agrupacin de los pxeles de una imagen en regiones
determinadas, normalmente conectadas. Es un paso importante (y normalmente necesario)
en muchas ramas del procesado de imgenes. Las tcnicas de segmentacin se pueden
dividir en tres grandes grupos: mtodos basados en intensidad (p. ej. la umbralizacin),
mtodos basados en regiones (p. ej. crecimiento de regiones, divisin de regiones y
fundido de regiones) y otros mtodos (segmentacin basada en textura, bordes y
movimiento).
La umbralizacin es una tcnica para el procesado de imgenes en la que una imagen de
entrada en escala de grises se recuantifica a dos niveles de gris, o lo que es lo mismo, se
convierte a imagen binaria. Cada pixel de la imagen original se compara con un umbral y
el resultado de esa comparacin determina si el pixel se convertir a un nivel o a otro
(blanco o negro, objeto o fondo). El algoritmo de umbralizacin ms simple es aqul que
usa un solo valor de umbral para toda la imagen (umbral global, i m2bw en MATLAB).
[17]

La umbralizacin se suele emplear cuando hay una clara diferencia entre los objetos a
extraer respecto del fondo de la escena. Al aplicar un umbral T, la imagen en escala de
grises f(x,y) quedar binarizada y etiquetada con 1 los pxeles correspondientes al objeto
y con 0 aquellos que son del fondo. Si el umbral solo depende de f(x,y) se dice que es un
umbral global; en el caso de que adems dependa de p(x,y), por ejemplo, el valor medio de
los pxeles vecinos, el umbral se denomina local; y si depende tambin de la posicin (x,y)
del pixel, se denomina dinmico.
El problema de la umbralizacin reside en la determinacin del valor umbral que segmenta
la imagen. El mtodo de Otsu es uno de los ms utilizados en la determinacin automtica
de dicho umbral. Este mtodo proporciona el umbral ptimo para la segmentacin de la
imagen bajo el criterio de mxima varianza entre fondo y objeto. As, se calcula la varianza
entre todas las posibles divisiones y se toma el umbral que presenta la mxima varianza
entre clases. Este mtodo es uno de los mejores mtodos de seleccin de umbral para
imgenes del mundo real y se ha establecido como estndar. Adems, el mtodo de Otsu es
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 263 de 410
automtico, es decir, no necesita supervisin humana ni informacin previa de la imagen
antes de su procesado.
[18]

Sintaxis
l evel = gr ayt hr esh( I )
[ l evel EM] = gr ayt hr esh( I )
Descripcin
l evel = gr ayt hr esh( I ) calcula un umbral ptimo y lo guarda en la variable l evel . El
umbral se puede utilizar para convertir una imagen de intensidades a una imagen binaria
con la funcin i m2bw. l evel es un valor de intensidad normalizado que est en el rango
[ 0, 1] .
La funcin gr ayt hr esh usa el mtodo de Otsu, el cual elige el umbral ptimo para
minimizar la varianza intraclase de los pxeles blanco y negro.
Los arrays multidimensionales se convierten automticamente a arrays en 2-D utilizando la
funcin r eshape. La funcin gr ayt hr esh ignora cualquier imaginario distinto de cero en
la imagen I .
[ l evel EM] = gr ayt hr esh( I ) devuelve la medida de efectividad EM como segundo
argumento de salida. La medida de efectividad es un valor en el rango [0, 1] que indica la
eficacia al umbralizar la imagen de entrada. El lmite inferior solo lo alcanzan imgenes
con nivel nico de gris y el lmite superior solo lo alcanzan imgenes con dos niveles.
La imagen de entrada I puede ser de tipo ui nt 8, ui nt 16, i nt 16, si ngl e,o doubl e y debe
ser de tipo no disperso. El valor devuelto l evel es un escalar de tipo doubl e, igual que la
medida de efectividad EM.
Ejemplos de uso
Ejemplo 1: Convertir una imagen en escala de grises a binario utilizando la funcin i m2bw
y el umbral obtenido por el mtodo de Otsu.


Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 264 de 410
%Leemos una i magen en escal a de gr i ses y l a conver t i mos a bi nar i a.

I = i mr ead( ' eur os. t i f ' ) ;
i mshow( I )
l evel = gr ayt hr esh( I )
BW= i m2bw( I , l evel ) ;
f i gur e, i mshow( BW)

l evel =
0. 4078


Figura f.202- Imagen original (I) en escala de grises Figura f.203 - Imagen convertida a binaria (X)
Funciones relacionadas
i m2bw

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 265 de 410
hdrread
Lectura de una imagen de alto rango dinmico (HDR)
Introduccin
En procesado de imgenes, grficos por ordenador y fotografa, las imgenes de alto rango
dinmico (HDR, High Dynamic Range) son un conjunto de tcnicas que permiten un mejor
rango dinmico de luminancias entre las zonas ms claras y las ms oscuras de una imagen
del que pueden ofrecer las tcnicas de imagen digital estndar o mtodos fotogrficos. Este
rango dinmico ms extenso permite a las imgenes HDR representar con ms exactitud el
extenso rango de niveles de intensidad encontrados en escenas reales, que van desde luz
solar directa hasta la dbil luz de las estrellas.
[19]

Los dos principales orgenes de las imgenes HDR son el renderizado por ordenador y la
mezcla de mltiples fotografas, que a su vez son conocidas como fotografas de bajo
rango dinmico (LDR), tambin llamadas de rango dinmico estndar (SDR).
[20]

Las tcnicas de mapeo de tonos, que reducen todo el contraste para facilitar que
dispositivos con menos rango dinmico muestren imgenes HDR, pueden aplicarse para
producir imgenes conservando o exagerando el contraste localmente para realizar un
efecto artstico.
Sintaxis
hdr = hdr r ead( f i l ename)
Descripcin
hdr = hdr r ead( f i l ename) lee una imagen de alto rango dinmico especificada en la
variable f i l ename. hdr es un array RGB de m-por-n-por-3 en el rango [ 0, i nf ) y del tipo
si ngl e. Para datos referidos a una escena, estos valores suelen ser la iluminacin de la
escena en unidades de radiancia espectral. Para mostrar estas imgenes se debe usar un
operador de mapeo tonal apropiado.
La imagen de salida hdr es una imagen de m-por-n-por-3 del tipo si ngl e.
Ejemplos de uso
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 266 de 410
Ejemplo 1: Leer y mostrar una imagen de alto rango dinmico.
hdr = hdr r ead( ' of f i ce. hdr ' ) ;
I = t onemap( hdr ) ;
i mshow( I )


Figura f.204 - Imagen hdr en RGB (I)
Funciones relacionadas
hdr wr i t e, makehdr , t onemap

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 267 de 410
hdrwrite
Escribir una imagen HDR en un archivo en formato .hdr (Radiance)
Introduccin
Radiance (.hdr) es un formato de archivo de 32 bits por canal utilizado en imgenes de alto
rango dinmico (HDR, High Dynamic Range). Este formato se desarroll originalmente
para el sistema Radiance, una herramienta profesional para visualizar la iluminacin en
entornos virtuales. El formato de archivo guarda la cantidad de luz por pxel en lugar de
solo los colores que se van a visualizar en la pantalla. Los niveles de luminosidad que es
capaz de interpretar el formato Radiance son mucho ms altos que los 256 niveles de los
formatos de archivos de imgenes de 8 bits por canal. La gama tonal registrada es tan
extensa que no es posible representar la imagen en un monitor comn. Existen programas
especficos que permiten manejar estos archivos y comprimir la gama tonal para poder
representar toda esa informacin, como es el caso de MATLAB. Los archivos Radiance
(.hdr) se utilizan normalmente en modelado en 3D.
Sintaxis
hdr wr i t e( hdr , f i l ename)
Descripcin
hdr wr i t e( hdr , f i l ename) crea un archivo de imagen en formato Radiance .hdr a partir
de una imagen HDR de precisin simple o doble presente en el espacio de trabajo de
MATLAB. El archivo HDR generado con el nombre f i l ename usa compresin RLE (run-
length encoding) para minimizar el tamao del archivo.
Funciones relacionadas
hdr r ead, makehdr , t onemap

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 268 de 410
histeq
Mejora del contraste mediante ecualizacin del histograma
Introduccin
La funcin hi st eq mejora el contraste de la imagen I utilizando una ecualizacin del
histograma. Es til para mejorar el contraste global de una imagen aunque puede cambiar
el brillo de la imagen final o sobreexponer algunas zonas de la imagen. Otras alternativas
son las funciones adapt hi st eq , que ecualiza el histograma de forma adaptativa actuando
sobre pequeas zonas e histogramas y obteniendo mejores resultados en general, e
i madj ust , que permite expandir el histograma ajustando los valores de intensidad de la
imagen a un rango determinado. Ms informacin y comparacin en la pgina de la
funcin adapt hi st eq.
Sintaxis
J = hi st eq( I , hgr am)
J = hi st eq( I , n)
[ J , T] = hi st eq( I , . . . )
newmap = hi st eq( X, map, hgr am)
newmap = hi st eq( X, map)
[ newmap, T] = hi st eq( X, . . . )
Descripcin
hi st eq mejora el contraste de las imgenes transformando los valores de una imagen de
intensidades o los valores del mapa de color de una imagen indexada para que el
histograma de la imagen de salida se aproxime al histograma especificado.
J = hi st eq( I , hgr am) transforma la imagen de intensidades I de forma que el
histograma de la imagen de salida J de longitud l engt h( hgr am) concuerde de forma
aproximada con el histograma especificado en la variable hgr am. El vector hgr amdebe
contener enteros equiespaciados con valores de intensidad en el rango apropiado: [0, 1]
para imgenes de tipo doubl e, [0, 255] para imgenes de tipo ui nt 8 y [0, 65535] para
imgenes de tipo ui nt 16. hi st eq escala automticamente hgr ampara que sum( hgr am) =
pr od( si ze( I ) ) . El histograma de J se ajustar ms a hgr amcuando l engt h( hgr am) sea
mucho menor que el nmero de niveles discretos en I .
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 269 de 410
J = hi st eq( I , n) transforma la imagen de intensidades I devolviendo una imagen de
intensidades J con n niveles de gris discretos. Se mapea en J un nmero de pxeles
aproximadamente igual en cada uno de los n niveles de forma que el histograma de J sea
aproximadamente plano (el histograma de J ser ms plano cuando n sea mucho ms
pequeo que el nmero de niveles discretos en I ). El valor por defecto de n es 64.
[ J , T] = hi st eq( I , . . . ) devuelve la transformacin de escala de grises T que mapea los
niveles de gris de la imagen I en niveles de gris en la imagen J .
newmap = hi st eq( X, map, hgr am) transforma el mapa de color map asociado con la
imagen indexada X tal que el histograma de la componente gris en la imagen indexada
( X, newmap) se ajusta aproximadamente al histograma de la variable hgr am. La funcin
hi st eq devuelve el mapa de color transformado en la variable newmap. l engt h( hgr am)
debe ser igual que si ze( map, 1) .
newmap = hi st eq( X, map) transforma los valores del mapa de color map para que el
histograma de la componente gris de la imagen indexada X sea aproximadamente plano.
Devuelve el mapa de color transformado en la variable newmap.
[ newmap, T] = hi st eq( X, . . . ) devuelve la transformacin en escala de grises T que
mapea la componente gris de map en la componente gris de newmap.
Para las sintaxis que incluyen como entrada una imagen de intensidades I , la imagen puede
ser del tipo ui nt 8, ui nt 16, i nt 16, si ngl e, o doubl e. La imagen de salida J tendr el
mismo tipo que I . Para la sintaxis que incluye como entrada una imagen indexada X, la
imagen puede ser del tipo ui nt 8, si ngl e, o doubl e. El mapa de color de salida es siempre
de tipo doubl e. La salida opcional T (la transformacin de los niveles de gris) es siempre
de tipo doubl e.
Ejemplos de uso
Ejemplo 1: Mejorar el contraste de una imagen con una ecualizacin del histograma y
comparar los histogramas original y mejorado.
I = i mr ead( ' M131806467LC. t i f ' ) ;
J = hi st eq( I ) ;
i mshow( I ) ; f i gur e, i mshow( J )
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 270 de 410
f i gur e, i mhi st ( I ) ; f i gur e, i mhi st ( J )


Figura f.1 - Imagen original (I) Figura f.6 - Imagen con contraste mejorado (J)


Figura f. 7 - Histograma de imagen original (I) Figura f.9 - Histograma de imagen con contraste
mejorado (J)
Funciones relacionadas
adapt hi st eq, br i ght en, i madj ust , i mhi st

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 271 de 410
hough
Transformada Hough
Introduccin
La transformada de Hough permite, tras procesar una imagen, detectar todas las lneas
rectas dentro de ella (u otros objetos geomtricos que admitan descripciones paramtricas).
Es una tcnica muy robusta frente al ruido y a la existencia de huecos en la frontera del
objeto. La idea bsica de esta tcnica es encontrar curvas tales como rectas, polinomios,
crculos, etc., que puedan ser localizadas en un espacio de parmetros adecuado. Aunque la
transformada se puede utilizar para dimensiones mayores, se usa principalmente en dos
dimensiones y es muy recurrida en tcnicas de segmentacin.
La funcin hough en MATLAB se encarga de realizar la Transformada de Hough. La
funcin devuelve una matriz H en la que el valor de cada una de sus posiciones se
corresponde con el nmero de pxeles que comparten un determinado valor de r ho,
alineados en la direccin perpendicular a theta, es decir, el ngulo que forman las rectas y
su distancia perpendicular hasta el origen de coordenadas. La lnea definida por t het a =-
60 y r ho =2 atravesar un nmero de pxeles determinado. Cuanto mayor sea el nmero
de pxeles, mayor ser la probabilidad de que haya una lnea principal. En la representacin
grfica de la matriz se observar una elevada intensidad en esas posiciones debido a la
concentracin de pxeles en esas coordenadas. En general, los valores mximos de la
matriz H se corresponden con las lneas detectadas.
MATLAB dispone de dos funciones para el clculo de picos y de lneas a partir de la
matriz de Hough H. Estas son houghpeaks, para hallar las coordenadas de los mximos de
la matriz H y houghl i nes, que dibuja los segmentos mayores correspondientes a los
mximos devueltos por la funcin houghpeaks.
Sintaxis
[ H, t het a, r ho] = hough( BW)
[ H, t het a, r ho] = hough( BW, ParmetroName, Par met r oVal or )

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 272 de 410
Descripcin
[ H, t het a, r ho] = hough( BW) calcula la Transformada de Hough estndar (SHT) de la
imagen binaria BW. Usa la funcin hough para detectar lneas en la imagen. La funcin
devuelve H, la matriz de la Transformada de Hough. t het a (en grados) y r ho son los arrays
de las variables rho y theta sobre los que la funcin hough genera la matriz. BWpuede ser
de tipo numer i c o l ogi cal y debe ser real, bidimensional y no disperso.
[ H, t het a, r ho] = hough( BW, ParmetroName, Par met r oVal or ) calcula la
Transformada de Hough estndar utilizando pares de parmetros/valores. Cuando uno de
los parmetros especificados en la variable ParmetroName es ' RhoResol ut i on' , se debe
definir un valor escalar real entre 0 y nor m( si ze( BW) ) para determinar el espaciado o
resolucin de la transformada en el eje r ho y cuyo valor por defecto es 1. Cuando el
parmetro especificado en la variable ParmetroName es ' Thet aResol ut i on' , se debe
definir un vector para los valores de theta a usar en la Transformada de Hough. El rango
aceptado por los valores de theta va de 90 < 90, y su valor por defecto es de -
90:89.
Ejemplos de uso
Ejemplo 1: Tericamente por un punto pueden pasar infinitas lneas. Aplicar la
transformada de Hough a una imagen con un solo punto sobre fondo negro y mostrar la
transformada en el espacio [t het a, r ho]. Repetir la operacin sobre una imagen con tres
puntos separados y alineados y observar el punto donde puede haber una lnea a partir de la
representacin de la Transformada de Hough.
I 1 = i mr ead( ' 1punt o. png' ) ;
BW1=i m2bw( I 1) ;
i mshow( BW1)

%Apl i camos l a Tr ansf or mada de Hough y most r amos.

[ H1, t het a1, r ho1] = hough( BW1) ;
f h = f i gur e;
i mshow( i madj ust ( mat 2gr ay( H1) ) , ' XDat a' , t het a1, ' YDat a' , r ho1,
' I ni t i al Mag' , ' f i t ' )
xl abel ( ' \ t het a' ) , yl abel ( ' \ r ho' ) ;
axi s on, axi s nor mal , hol d on;
wai t f or ( f h) ;

%Repet i mos par a l a ot r a i magen.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 273 de 410
hol d
cl ose al l
I 3 = i mr ead( ' 3punt o. png' ) ;
BW3=i m2bw( I 3) ;
i mshow( BW3)

[ H3, t het a3, r ho3] = hough( BW3) ;
f i gur e, i mshow( i madj ust ( mat 2gr ay( H3) ) , ' XDat a' , t het a3, ' YDat a' , r ho3,
' I ni t i al Mag' , ' f i t ' )
xl abel ( ' \ t het a' ) , yl abel ( ' \ r ho' ) ;
axi s on, axi s nor mal , hol d on;

%Exi st e un punt o donde se i nt er cept an l as t r es cur vas si nusoi dal es, l o
que i ndi ca l a posi bi l i dad de que exi st i er a una l nea. Par a det er mi nar l os
val or es de r ho y t het a que def i nen esa posi bl e l nea habr a que usar l a
f unci n houghl i nes o buscar el val or de p xel es ms el evado en l a mat r i z
de Tr ansf or mada Hough.



Figura f.205 - Imagen original (I1) Figura f.206 - Transformada Hough de la imagen I1



Figura f.207 - Imagen original (I3) Figura f.208 - Transformada Hough de la imagen I3
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 274 de 410
Ejemplo 2: Calcular y mostrar la Transformada Hough de una imagen variando la
resolucin de t het a y r ho usando los valores 10, 20, 30 y 60.
I = i mr ead( ' 3punt o. png' ) ;
BW=i m2bw( I ) ;

[ H, T, R] = hough( BW, ' RhoResol ut i on' , 10, ' Thet aResol ut i on' , 10) ;
f i gur e,
i mshow( i madj ust ( mat 2gr ay( H) ) , ' XDat a' , T, ' YDat a' , R, ' I ni t i al Magni f i cat i on' , '
f i t ' )
xl abel ( ' \ t het a' ) , yl abel ( ' \ r ho' ) ; axi s on, axi s nor mal ;

[ H, T, R] = hough( BW, ' RhoResol ut i on' , 20, ' Thet aResol ut i on' , 20) ;
f i gur e,
i mshow( i madj ust ( mat 2gr ay( H) ) , ' XDat a' , T, ' YDat a' , R, ' I ni t i al Magni f i cat i on' , '
f i t ' )
xl abel ( ' \ t het a' ) , yl abel ( ' \ r ho' ) ; axi s on, axi s nor mal ;

[ H, T, R] = hough( BW, ' RhoResol ut i on' , 30, ' Thet aResol ut i on' , 30) ;
f i gur e,
i mshow( i madj ust ( mat 2gr ay( H) ) , ' XDat a' , T, ' YDat a' , R, ' I ni t i al Magni f i cat i on' , '
f i t ' )
xl abel ( ' \ t het a' ) , yl abel ( ' \ r ho' ) ; axi s on, axi s nor mal ;

[ H, T, R] = hough( BW, ' RhoResol ut i on' , 40, ' Thet aResol ut i on' , 60) ;
f i gur e,
i mshow( i madj ust ( mat 2gr ay( H) ) , ' XDat a' , T, ' YDat a' , R, ' I ni t i al Magni f i cat i on' , '
f i t ' )
xl abel ( ' \ t het a' ) , yl abel ( ' \ r ho' ) ; axi s on, axi s nor mal ;


Figura f.209 - Transformada Hough resolucin 10 Figura f.210 - Transformada Hough resolucin 20


Figura f.211 - Transformada Hough resolucin 30 Figura f.212 - Transformada Hough resolucin 60
Funciones relacionadas
houghl i nes, houghpeaks
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 275 de 410
houghlines
Extraccin de segmentos de lnea partir de la transformada de Hough
Sintaxis
l i nes = houghl i nes( BW, t het a, r ho, peaks)
l i nes = houghl i nes( . . . , par am1, val 1, par am2, val 2)
Descripcin
l i nes = houghl i nes( BW, t het a, r ho, peaks) extrae los segmentos de lnea de la
imagen BWasociados a los picos o mximos de la Transformada Hough. t het a y r ho son
los vectores devueltos por la funcin hough que aplica la Transformada Hough. peaks es
una matriz devuelta por la funcin houghpeaks que contiene las coordenadas (fila y
columna) de los picos de la Transformada Hough que se deben usar para buscar segmentos
de lnea. Si en la imagen de entrada no estn bien definidos los bordes del fondo, el
resultado de la bsqueda de lneas no ser el esperado, por lo que se deber procesar antes
la imagen en busca de los bordes con la funcin edge.
La funcin houghl i nes devuelve el array l i nes, un array de estructuras cuya longitud es
igual al nmero de segmentos de lnea encontrados. Cada elemento del array tiene los
siguientes campos:
Campo Descripcin
poi nt 1
Vector de dos elementos [ X Y] que especifica las coordenadas del punto final
del segmento de lnea.
poi nt 2
Vector de dos elementos [ X Y] que especifica las coordenadas del punto final
del segmento de lnea.
t het a
ngulo en grados asociado en la Transformada Hough.
r ho
Posicin asociada en la Transformada Hough en el eje r ho.
l i nes = houghl i nes( . . . , par am1, val 1, par am2, val 2) especifica pares de
parmetros y valores especificados en la siguiente tabla. Los nombres de los parmetros se
pueden abreviar y no son sensibles a las maysculas:

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 276 de 410
Parmetro Descripcin
' Fi l l Gap'
Escalar real positivo que especifica la distancia entre dos segmentos de
lneas asociados con la misma celda de Transformada Hough. Cuando la
distancia entre los segmentos de lnea es menor que el valor especificado,
la funcin houghl i nes combina los segmentos de lnea en un nico
segmento. (Por defecto: 20)
' Mi nLengt h'
Escalar real positivo que especifica si las lneas combinadas deben
mantenerse o descartarse. Se descartan las lneas ms cortas que el valor
especificado. (Por defecto: 40)
El resultado de la funcin vara enormemente con el valor de los dos parmetros
opcionales 'FillGap' y 'MinLength', que debern ser ajustados para cada problema en
particular.
BWpuede ser de tipo numer i c o l ogi cal y debe ser real, bidimensional y no disperso.
Ejemplos de uso
Ejemplo 1: Detectar los segmentos de lnea en la imagen dada.
RGB = i mr ead( ' l i neas. png' ) ;
i mshow( RGB)
BW= i m2bw( RGB) ;
[ H, T, R] = hough( BW) ;

%En l a f unci n houghpeaks se suel e especi f i car un nmer o de
mxi mos/ pi cos mayor al nmer o de l neas de l a i magen.

P = houghpeaks( H, 20) ;
l i neas = houghl i nes( BW, T, R, P) ;

%Vi sual i zar l as l neas encont r adas.

f h = f i gur e;
i mshow( BW) , hol d on
max_l en = 0;
f or k = 1: l engt h( l i neas)
xy = [ l i neas( k) . poi nt 1; l i neas( k) . poi nt 2] ;
pl ot ( xy( : , 1) , xy( : , 2) , ' Li neWi dt h' , 2, ' Col or ' , ' r ed' ) ;
pl ot ( xy( 1, 1) , xy( 1, 2) , ' x' , ' Li neWi dt h' , 2, ' Col or ' , ' yel l ow' ) ;
pl ot ( xy( 2, 1) , xy( 2, 2) , ' x' , ' Li neWi dt h' , 2, ' Col or ' , ' gr een' ) ;
end

%Vemos que hay dos segment os que no l os det ect a. Habr a que o bi en
var i ar el umbr al de det ecci n de l a f unci n houghpeaks o buscar un t het a
y r ho det er mi nados t al es que el vect or de pi cos/ mxi mos devuel t o por
houghpeaks t uvi er a al menos 5 el ement os ( l as 5 posi bl es l neas) . Ms
det al l e en l a f unci n houghpeaks.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 277 de 410

Figura f.213 - Imagen original (RGB) Figura f.214 - Lneas detectadas con la
Transformada Hough
Ejemplo 2: Mostrar los segmentos de lnea principales de la imagen dada, preparando
antes la imagen para mejorar la deteccin y comparando varios resultados segn los
parmetros Fi l l Gap y Mi nLengt h.
RGB = i mr ead( ' l ego. t i f ' ) ;
i mshow( RGB)
I = r gb2gr ay( RGB) ;

%Pr e- pr ocesado par a pot enci ar bor des i mpor t ant es.

BW= edge( I , ' canny' ) ;
BW= bwar eaopen( BW, 40) ;

%Tr ansf or mada de Hough y bsqueda de mxi mos.

[ H, T, R] = hough( BW) ;
peaks = houghpeaks( H, 100) ;

%Buscamos l as l neas y l as most r amos con l os val or es por def ect o.

l i nes = houghl i nes( BW, T, R, peaks) ;
f i gur e, i mshow( I ) , hol d on
max_l en = 0;
f or k = 1: l engt h( l i nes)
xy = [ l i nes( k) . poi nt 1; l i nes( k) . poi nt 2] ;
pl ot ( xy( : , 1) , xy( : , 2) , ' Li neWi dt h' , 2, ' Col or ' , ' r ed' ) ;

%Di buj amos l os pr i nci pi os y f i nal es de l as l neas.

pl ot ( xy( 1, 1) , xy( 1, 2) , ' x' , ' Li neWi dt h' , 2, ' Col or ' , ' yel l ow' ) ;
pl ot ( xy( 2, 1) , xy( 2, 2) , ' x' , ' Li neWi dt h' , 2, ' Col or ' , ' gr een' ) ;

end

%Cambi amos l os val or es de Fi l l Gap y Mi nLengt h par a most r ar l neas ms
l ar gas.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 278 de 410

l i nes = houghl i nes( BW, T, R, peaks, ' Fi l l Gap' , 100, ' Mi nLengt h' , 10) ;
f i gur e, i mshow( I ) , hol d on
max_l en = 0;
f or k = 1: l engt h( l i nes)
xy = [ l i nes( k) . poi nt 1; l i nes( k) . poi nt 2] ;
pl ot ( xy( : , 1) , xy( : , 2) , ' Li neWi dt h' , 2, ' Col or ' , ' r ed' ) ;

%Di buj amos l os pr i nci pi os y f i nal es de l as l neas.

pl ot ( xy( 1, 1) , xy( 1, 2) , ' x' , ' Li neWi dt h' , 2, ' Col or ' , ' yel l ow' ) ;
pl ot ( xy( 2, 1) , xy( 2, 2) , ' x' , ' Li neWi dt h' , 2, ' Col or ' , ' gr een' ) ;

end


Figura f.215 - Imagen original (RGB)


Figura f.216 - Lneas detectadas con la
Transformada Hough por defecto
Figura f.217 - Lneas detectadas con la
Transformada Hough con 'FillGap'=100 y
'MinLength'=10
Funciones relacionadas
hough, houghpeaks
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 279 de 410
houghpeaks
Localizacin de picos en la Transformada Hough
Sintaxis
peaks = houghpeaks( H, numpeaks)
peaks = houghpeaks( . . . , par am1, val 1, par am2, val 2)
Descripcin
peaks = houghpeaks( H, numpeaks) localiza los picos o mximos en la matriz de la
Transformada Hough H, generada por la funcin hough. numpeaks es un valor escalar que
especifica el mximo nmero de picos a identificar. Si se omite numpeaks, por defecto vale
1.
La funcin devuelve en peaks una matriz Q-por-2 donde Q puede estar comprendido en el
rango de 0 a numpeaks. Q guarda las coordenadas de la fila y la columna de los picos.
peaks = houghpeaks( . . . , par am1, val 1, par am2, val 2) especifica determinados
pares de parmetros y valores de entre los listados en la siguiente tabla. Los nombres de los
parmetros se pueden abreviar y no son sensibles a las maysculas:
Parmetro Descripcin
' Thr eshol d'
Valor escalar no negativo que especifica el umbral en el que los valores
de H se consideran picos. El umbral puede variar desde 0 hasta I nf
(infinito).
(Por defecto: 0. 5*max( H( : ) ) )
' NHoodSi ze'
Vector de dos elementos de enteros positivos impares: [ M N] .
' NHoodSi ze' especifica el tamao de la vecindad que se suprimir, que
es el conjunto de pxeles alrededor de cada pico que se pondr a cero
despus de identificar el pico.
(Por defecto: los valores impares ms pequeos que sean mayores o
iguales que si ze( H) / 50)
H es la matriz devuelta por la funcin hough. numpeaks es un escalar entero positivo.
Ejemplos de uso

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 280 de 410
Ejemplo 1: Localizar y mostrar los picos en la Transformada Hough de una imagen.
I = i mr ead( ' 3punt o. png' ) ;
BW=i m2bw( I ) ;
i mshow( BW)
[ H, T, R] = hough( BW) ;
P = houghpeaks( H) ;
f i gur e, i mshow( i madj ust ( mat 2gr ay( H) ) , ' XDat a' , T, ' YDat a' , R,
' I ni t i al Mag' , ' f i t ' )
xl abel ( ' \ t het a' ) , yl abel ( ' \ r ho' ) ;
axi s on, axi s nor mal , hol d on;
pl ot ( T( P( : , 2) ) , R( P( : , 1) ) , ' s' , ' col or ' , ' r ed' , ' Li neWi dt h' , 4) ;



Figura f.207 - Imagen original (I) Figura f.218 - Picos detectados en la Transformada
Hough de la imagen I
Ejemplo 2: Detectar los segmentos de lnea en la imagen dada:
a) Directamente
RGB = i mr ead( ' l i neas. png' ) ;
i mshow( RGB)
BW= i m2bw( RGB) ;
[ H, T, R] = hough( BW) ;

%En l a f unci n houghpeaks se suel e especi f i car un nmer o de
mxi mos/ pi cos mayor al nmer o de l neas de l a i magen.

P = houghpeaks( H, 20)
l i neas = houghl i nes( BW, T, R, P) ;

%Vi sual i zar l as l neas encont r adas.

f h = f i gur e;
i mshow( BW) , hol d on
max_l en = 0;
f or k = 1: l engt h( l i neas)
xy = [ l i neas( k) . poi nt 1; l i neas( k) . poi nt 2] ;
pl ot ( xy( : , 1) , xy( : , 2) , ' Li neWi dt h' , 2, ' Col or ' , ' r ed' ) ;
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 281 de 410
pl ot ( xy( 1, 1) , xy( 1, 2) , ' x' , ' Li neWi dt h' , 2, ' Col or ' , ' yel l ow' ) ;
pl ot ( xy( 2, 1) , xy( 2, 2) , ' x' , ' Li neWi dt h' , 2, ' Col or ' , ' gr een' ) ;
end
P =
1353 139
1530 140
1208 140


Figura f.207 - Imagen original (RGB) Figura f.219 - Segmentos detectados con los valores
por defecto
b) Variando el umbral de la funcin houghpeaks
RGB = i mr ead( ' l i neas. png' ) ;
i mshow( RGB)
BW= i m2bw( RGB) ;
[ H, T, R] = hough( BW) ;

%Var i amos el umbr al ' Thr eshol d' de det ecci n de l a f unci n houghpeaks
par a que det ect e ms segment os. Podr amos sel ecci onar l uego l as l neas de
t amao mayor usando el par met r o ' Mi nLengt h' de l a f unci n houghl i nes.

P = houghpeaks( H, 20, ' Thr eshol d' , 0. 5)
l i neas = houghl i nes( BW, T, R, P) ;

%Vi sual i zar l as l neas encont r adas.

f h = f i gur e;
i mshow( BW) , hol d on
max_l en = 0;
f or k = 1: l engt h( l i neas)
xy = [ l i neas( k) . poi nt 1; l i neas( k) . poi nt 2] ;
pl ot ( xy( : , 1) , xy( : , 2) , ' Li neWi dt h' , 2, ' Col or ' , ' r ed' ) ;
pl ot ( xy( 1, 1) , xy( 1, 2) , ' x' , ' Li neWi dt h' , 2, ' Col or ' , ' yel l ow' ) ;
pl ot ( xy( 2, 1) , xy( 2, 2) , ' x' , ' Li neWi dt h' , 2, ' Col or ' , ' gr een' ) ;
end

P =
1353 139
1530 140
1208 140
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 282 de 410
1362 136
1053 139
1052 142
1661 139
1360 142
1659 142
1340 136
1205 143
1661 136
1520 143
1521 136
1541 136
1198 136
1051 136
1340 143
1049 145
1220 136


Figura f.207 - Imagen original (RGB) Figura f.220 - Segmentos detectados variando
umbral de houghpeaks
c) Variando la resolucin de t het a y r ho en la Transformada de Hough
RGB = i mr ead( ' l i neas. png' ) ;
i mshow( RGB)
BW= i m2bw( RGB) ;
[ H, T, R] = hough( BW) ;

%Buscamos l a r esol uci n de t het a y r ho de l a Tr ansf or mada Hough donde
houghpeaks det ect e al menos 6 pi cos y l a usamos.

v=0;
f or i =0. 1: . 1: 89
[ H, T, R] = hough( BW, ' RhoResol ut i on' , i , ' Thet aResol ut i on' , i ) ;

%Se def i ne un val or super i or a l as l neas conoci das.

P = houghpeaks( H, 20) ;
[ a, b] =si ze( P) ;
i f ( a>=6) &&( v==0)
v=i ;
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 283 de 410
end
end

[ H, T, R] = hough( BW, ' RhoResol ut i on' , v, ' Thet aResol ut i on' , v) ;
P = houghpeaks( H, 20)
l i neas = houghl i nes( BW, T, R, P) ;

%Vi sual i zar l as l neas encont r adas.

f h = f i gur e;
i mshow( BW) , hol d on
max_l en = 0;
f or k = 1: l engt h( l i neas)
xy = [ l i neas( k) . poi nt 1; l i neas( k) . poi nt 2] ;
pl ot ( xy( : , 1) , xy( : , 2) , ' Li neWi dt h' , 2, ' Col or ' , ' r ed' ) ;
pl ot ( xy( 1, 1) , xy( 1, 2) , ' x' , ' Li neWi dt h' , 2, ' Col or ' , ' yel l ow' ) ;
pl ot ( xy( 2, 1) , xy( 2, 2) , ' x' , ' Li neWi dt h' , 2, ' Col or ' , ' gr een' ) ;
end

P =
13606 1351
13394 1351
16590 1351
15169 1351
15367 1351
11959 1351
12150 1351
10531 1351
13528 1376
15280 1400


Figura f.207 - Imagen original (RGB) Figura f.221 - Segmentos detectados variando
resolucin de theta y rho de la Transformada Hough
Funciones relacionadas
hough, houghl i nes
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 284 de 410
iccfind
Bsqueda de perfiles ICC
Introduccin
Dentro del mbito de la Gestin del color, un perfil ICC es un conjunto de datos que
caracteriza a un dispositivo de entrada o salida de color, o espacio color, segn los
estndares promulgados por el Consorcio Internacional del Color (ICC).
[21]

Sintaxis
P = i ccf i nd( di r ect or y)
[ P, descr i pt i ons] = i ccf i nd( di r ect or y)
[ . . . ] = i ccf i nd( di r ect or y, pat t er n)
Descripcin
P = i ccf i nd( di r ect or y) busca todos los perfiles ICC en el directorio especificado en la
variable di r ect or y. La funcin devuelve P, un array de celdas con estructuras que
contienen la informacin del perfil.
[ P, descr i pt i ons] = i ccf i nd( di r ect or y) busca todos los perfiles ICC en el
directorio especificado y devuelve P, un array de celdas con estructuras que contienen la
informacin del perfil, y descr i pt i ons, un array de celdas con cadenas de texto donde
cada cadena describe el perfil correspondiente en la variable P. Cada cadena de texto es el
valor del campo Descr i pt i on. St r i ng en la estructura de informacin del perfil.
[ . . . ] = i ccf i nd( di r ect or y, pat t er n) devuelve todos los perfiles ICC del directorio
especificado que tengan en su campo Descr i pt i on. St r i ng el patrn especificado en la
variable pat t er n. i ccf i nd busca sin tener en cuenta las maysculas.
Nota: Para mejorar el rendimiento, i ccf i nd guarda temporalmente copias de los
perfiles ICC en memoria. Puede que al aadir o modificar perfiles no se modifiquen
los resultados de bsqueda. En ese caso se deben limpiar los archivos temporales
usando el comando cl ear .
Ejemplos de uso

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 285 de 410
Ejemplo 1: Leer todos los perfiles ICC del directorio por defecto.
pr of i l es = i ccf i nd( i ccr oot ) ;
Ejemplo 2: Listar todos los perfiles ICC con cadenas de texto que describan a cada perfil.
[ pr of i l es, descr i pt i ons ] = i ccf i nd( i ccr oot ) ;
Ejemplo 3: Buscar los perfiles cuyo campo Descr i pt i on contenga la palabra rgb.
[ pr of i l es, descr i pt i ons] = i ccf i nd( i ccr oot , ' r gb' ) ;
Funciones relacionadas
i ccr ead, i ccr oot , i ccwr i t e

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 286 de 410
iccread
Lectura de un perfil ICC
Introduccin
Dentro del mbito de la Gestin del color, un perfil ICC es un conjunto de datos que
caracteriza a un dispositivo de entrada o salida de color, o espacio color, segn los
estndares promulgados por el Consorcio Internacional del Color (ICC).
[21]

Sintaxis
P = i ccr ead( f i l ename)
Descripcin
P = i ccr ead( f i l ename) lee la informacin del perfil ICC especificado en la variable
f i l ename. El archivo puede ser un perfil ICC o un archivo TIFF que contenga un perfil
ICC incrustado. Para saber si un archivo TIFF contiene un perfil ICC se debe utilizar la
funcin i mf i nf o para leer los detalles del archivo y ver si existe el campo
I CCPr of i l eOf f set . i ccr ead busca el archivo en el directorio actual, en un directorio en
la ruta de MATLAB o en el directorio devuelto por la funcin i ccr oot , en ese orden.
i ccr ead devuelve la informacin del perfil en la estructura P, un array de 1-por-1 cuyos
campos contienen las estructuras de datos (llamadas etiquetas o tags) definidas en la
especificacin ICC. i ccr ead puede leer perfiles que se hayan generado con la Versin 2
(ICC.1:2001-04) o la Versin 4 (ICC.1:2001-12) de las especificaciones ICC. Para ms
informacin sobre perfiles ICC, visitar el sitio web oficial www.color.org.
Los perfiles ICC proporcionan sistemas de administracin de color con la informacin
necesaria para convertir datos de color entre espacios de color nativos a los dispositivos y
espacios de color independientes a los dispositivos, llamados Espacios de conexin de
Perfiles (PCS, Profile Connection Space). Con la funcin makecf or mse puede usar el
perfil como fuente o destino para calcular transformaciones del espacio de color.
El nmero de campos en P depende de la clase del perfil y de las opciones que se eligieron
al crear el perfil. i ccr ead devuelve todas las etiquetas para un perfil dado, ya sean
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 287 de 410
pblicas o privadas. Las etiquetas privadas y ciertas etiquetas pblicas se mantienen como
datos de tipo ui nt 8 codificados. La siguiente tabla muestra los campos que se encuentran
en cualquier estructura de perfil generada por i ccr ead, en el orden que aparecen en la
estructura:
Campo Tipo de Dato Descripcin
Header
Array de
estructura de 1-
por-1
Cabecera del perfil. Proporciona informacin
general a cerca del perfil, como su clase, espacio
de color y espacio de conexin (PCS).
TagTabl e
Array de celdas
de n-por-3
Tabla de etiquetas del perfil.
Copyr i ght
Cadena de texto Informacin de copyright.
Descr i pt i on
Array de
estructura de 1-
por-1
El campo St r i ng de la estructura es una cadena
de texto que describe el perfil.
Medi aWhi t epoi nt
Array tipo
doubl e
Valores XYZ triestmulos del punto blanco del
dispositivo.
Pr i vat eTags
Array de celdas
de m-por-2
Contiene todas las etiquetas privadas o no
definidas en las especificaciones ICC. Las firmas
de las etiquetas estn en la primera columna y el
contenido de la etiqueta en la segunda. Notar que
la funcin i ccr ead deja el contenido de estas
etiquetas en formato codificado de 8-bits sin
signo.
Fi l ename
Cadena de texto Nombre del archivo que contiene el perfil.
Adicionalmente, la estructura leda P puede contener una o ms de las siguientes
transformadas:
Transformada de tres componentes, basada en matrices: Una transformada simple
que se usa normalmente para transformar entre los espacios de color RGB y XYZ.
Si la transformada est presente, P contiene un campo llamado Mat TRC.
Transformada de N-componentes basada en tablas de consulta LUT: Una
transformada que se usa para transformaciones entre espacios de color que tienen
una relacin ms compleja. Este tipo de transformacin se encuentra en cualquiera
de los siguientes campos de P:
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 288 de 410
AToB0 BToA0 Pr evi ew0
AToB1 BToA1 Pr evi ew1
AToB2 BToA2 Pr evi ew2
AToB3 BToA3 Gamut
Ejemplos de uso
Ejemplo 1: Leer un perfil ICC que describe un monitor tpico de ordenador. Determinar el
espacio de color de la fuente.
%Leemos el per f i l y most r amos l a est r uct ur a de dat os.

P = i ccr ead( ' sRGB. i cm' )

%Most r amos el campo Col or Space de l a cabecer a que nos i ndi ca el espaci o
de col or de l a f uent e.

P. Header . Col or Space

P =
Header : [ 1x1 st r uct ]
TagTabl e: {17x3 cel l }
Copyr i ght : ' Copyr i ght ( c) 1999 Hewl et t - Packar d Company'
Descr i pt i on: [ 1x1 st r uct ]
Medi aWhi t ePoi nt : [ 0. 9505 1 1. 0891]
Medi aBl ackPoi nt : [ 0 0 0]
Devi ceMf gDesc: [ 1x1 st r uct ]
Devi ceModel Desc: [ 1x1 st r uct ]
Vi ewi ngCondDesc: [ 1x1 st r uct ]
Vi ewi ngCondi t i ons: [ 1x1 st r uct ]
Lumi nance: [ 76. 0365 80 87. 1246]
Measur ement : [ 1x36 ui nt 8]
Technol ogy: [ 115 105 103 32 0 0 0 0 67 82 84 32]
Mat TRC: [ 1x1 st r uct ]
Pr i vat eTags: {}
Fi l ename: ' sRGB. i cm'

ans =

RGB
Funciones relacionadas
appl ycf or m, i ccf i nd, i ccr oot , i ccwr i t e, i si cc, makecf or m

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 289 de 410
iccroot
Bsqueda del directorio de almacenamiento por defecto de los perfiles
ICC
Introduccin
Dentro del mbito de la Gestin del color, un perfil ICC es un conjunto de datos que
caracteriza a un dispositivo de entrada o salida de color, o espacio color, segn los
estndares promulgados por el Consorcio Internacional del Color (ICC).
[21]

Sintaxis
r oot di r = i ccr oot
Descripcin
r oot di r = i ccr oot devuelve el directorio del sistema que contiene los perfiles ICC. Se
pueden guardar perfiles adicionales en otros directorios, pero esta es la localizacin por
defecto que usa el sistema de administracin de color.
Nota: Solo funciona en los sistemas operativos Windows y Mac OS X.
Ejemplos de uso
Ejemplo 1: Informar de todos los perfiles que se encuentran en el directorio por defecto.
i ccf i nd( i ccr oot )
Funciones relacionadas
i ccf i nd, i ccr ead, i ccwr i t e

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 290 de 410
iccwrite
Escritura de un perfil de color ICC a un archivo
Introduccin
Dentro del mbito de la Gestin del color, un perfil ICC es un conjunto de datos que
caracteriza a un dispositivo de entrada o salida de color, o espacio color, segn los
estndares promulgados por el Consorcio Internacional del Color (ICC).
[21]

Sintaxis
P_new = i ccwr i t e( P, f i l ename)
Descripcin
P_new = i ccwr i t e( P, f i l ename) escribe los datos del perfil de color ICC de la
estructura P en el archivo especificado en la variable f i l ename.
P es una estructura que representa un perfil ICC en el formato devuelto por la funcin
i ccr ead y utilizado por makecf or my appl ycf or mpara calcular transformaciones de
espacio de color. P debe contener todas las etiquetas y campos que dictan las
especificaciones del perfil ICC. Algunos campos pueden ser inconsistentes debido a
cambios en la estructura, por ejemplo la tabla de etiquetas puede que no sea correcta
porque las etiquetas se pueden haber aadido, borrado o modificado desde que se cre la
tabla. i ccwr i t e realiza las correcciones necesarias en la estructura antes de escribirla en el
archivo y devuelve la estructura corregida en la variable P_new.
Nota: ICC recomienda modificar el campo Descr i pt i on del perfil ICC antes de
escribir los datos en un archivo ya que puede haber sido modificado por alguna
aplicacin. Cada perfil debe tener una descripcin nica en ese campo.
i ccwr i t e puede escribir los datos del perfil de color utilizando la Versin 2 (ICC.1:2001-
04) o la Versin 4 (ICC.1:2001-12) de las especificaciones de ICC en funcin del valor de
la variable Ver si on de la cabecera del perfil. i ccwr i t e dar error si falta algn campo
necesario. Para ms informacin sobre perfiles ICC, visitar el sitio web oficial de ICC,
www.color.org.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 291 de 410
Nota: i ccwr i t e no convierte automticamente perfiles entre una versin y otra.
Estas conversiones se deben hacer manualmente, aadiendo o modificando los
campos necesarios. Usar la funcin i si cc para validar un perfil.
Ejemplos de uso
Ejemplo 1: Leer un perfil en el espacio de trabajo y exportarlo a un nuevo archivo
cambiando la descripcin del perfil antes de escribir los datos.
P = i ccr ead( ' moni t or . i cm' ) ;
P. Descr i pt i on. St r i ng = ' Mi nueva Descr i pci n' ;
pmon = i ccwr i t e( P, ' moni t or 2. i cm' ) ;
Funciones relacionadas
appl ycf or m, i ccr ead, i si cc, makecf or m

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 292 de 410
idct2
Transformada de coseno discreta inversa en 2-D
Introduccin
La Transformada de Coseno Discreta (DCT) representa una imagen como una suma de
sinusoides de magnitudes y frecuencias oscilantes. La DCT tiene la propiedad de que para
una imagen corriente, la mayora de informacin o energa importante para su
visualizacin se localiza solo en unos pocos coeficientes de la DCT. Por eso es la
transformada ms utilizada en los estndares de compresin de imgenes. Por ejemplo, es
la transformada que se usa en la compresin J PEG, Mp3 o MPEG.
La Transformada de coseno discreta inversa (IDCT o DCT-III) reconstruye una secuencia
de datos a partir de los coeficientes DCT actuando como decodificador.
Sintaxis
B = i dct 2( A)
B = i dct 2( A, m, n)
B = i dct 2( A, [ mn] )
Descripcin
B = i dct 2( A) devuelve la Transformada de coseno discreta inversa en dos dimensiones
de A.
B = i dct 2( A, m, n) rellena A con 0's hasta alcanzar el tamao m-por-n antes de realizar la
transformada. Si [ mn] <si ze( A) , i dct 2 corta A antes de realizar la transformada.
B = i dct 2( A, [ mn] ) igual que la expresin anterior.
Para cualquier A, i dct 2( dct 2( A) ) es igual (salvo errores de redondeo).
La matriz de entrada A puede ser de tipo doubl e o de cualquier clase numrica. La matriz
de salida B es de tipo doubl e.
Ejemplos de uso
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 293 de 410
Ejemplo 1: Calcular la transformada de coseno discreta de una imagen RGB y comprimir
la imagen eliminado la informacin redundante con cuantificacin uniforme escalar de
valor q=50. Recuperar la imagen con la transformada inversa.
%Leemos una i magen RGB y pr ocesamos cada col or por separ ado.

RGB = i mr ead( ' aut umn. j pg' ) ;
i mshow( RGB)
DI R = di r ( ' aut umn. j pg' ) ;
t amor i g=DI R. byt es;

%DCT de cada col or .

J R=dct 2( RGB( : , : , 1) ) ;
J G=dct 2( RGB( : , : , 2) ) ;
J B=dct 2( RGB( : , : , 3) ) ;

%Cuant i f i caci n uni f or me ( compr esi n) de cada col or .

q = 50;
qR=r ound( J R/ q) ;
qG=r ound( J G/ q) ;
qB=r ound( J B/ q) ;

%Cuant i f i caci n i nver sa de cada col or .

i qR=qR. *q;
i qG=qG. *q;
i qB=qB. *q;

%I DCT de cada col or .

J R=i dct 2( i qR) ;
J G=i dct 2( i qG) ;
J B=i dct 2( i qB) ;

%Cr eamos l a i magen f i nal compr i mi da, most r amos y compar amos el t amao.

J ( : , : , 1) =J R;
J ( : , : , 2) =J G;
J ( : , : , 3) =J B;
J = ui nt 8( J ) ;
f i gur e, i mshow( J )

t amor i g
i mwr i t e ( J , ' paut umn. j pg' ) ;
DI R = di r ( ' paut umn. j pg' ) ;
t ampr oc=DI R. byt es

t amor i g =
1266731

t ampr oc =
237376

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 294 de 410

Figura f.107 - Imagen original (RGB) Figura f.222 - Imagen comprimida J
Funciones relacionadas
dct 2, dct mt x, f f t 2, i f f t 2

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 295 de 410
ifanbeam
Transformada en abanico inversa
Sintaxis
I = i f anbeam( F, D)
I = i f anbeam( . . . , par am1, val 1, par am2, val 2, . . . )
[ I , H] = i f anbeam( . . . )
Descripcin
I = i f anbeam( F, D) reconstruye la imagen I a partir de las proyecciones en abanico en el
array bidimensional F. Cada columna de F contiene datos de proyeccin de haz en abanico
a un ngulo de rotacin determinado. i f anbeamasume que el centro de rotacin es el
punto central de las proyecciones, que se define como cei l ( si ze( F, 1) / 2) , y que los
ngulos de rotacin de entrada vienen espaciados con igual incremento cubriendo el rango
[ 0: 359] grados. El incremento ser el mismo que tendrn los ngulos de medida o
posiciones de los sensores.
D es la distancia desde el vrtice del haz en abanico al centro de la rotacin.
I = i f anbeam( . . . , par am1, val 1, par am2, val 2, . . . ) especifica parmetros que
controlan varios aspectos de la reconstruccin descritos en la siguiente tabla. Los nombres
de los parmetros se pueden abreviar y no son sensibles a las maysculas. Para ms
informacin consultar la pgina de la funcin f anbeam.
Parmetro Descripcin
' FanCover age'
Cadena que especifica la cobertura de rotacin de los ejes:
' cycl e' Rotar completamente [0,360). (Por defecto)
' mi ni mal ' Rotar lo mnimo necesario para representar el
objeto.
' FanRot at i onI ncr ement '
Escalar real positivo que especifica el incremento del ngulo
de rotacin de las proyecciones de haz en abanico. Medido
en grados. (Por defecto: 1)
' FanSensor Geomet r y'
Cadena que especifica cmo se posicionan los sensores:
' ar c' Los sensores estn equiespaciados a travs de un
arco circular a una distancia D del centro de rotacin. (Por
defecto)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 296 de 410

Figura f.161 - Sensores en arco

' l i ne' Los sensores estn equiespaciados a lo largo de
una lnea.

Figura f.162 - Sensores en lnea
' FanSensor Spaci ng'
Escalar real positivo que especifica el espaciado de los
sensores de haz en abanico. La interpretacin del valor
depende de la variable ' FanSensor Geomet r y' .
Si ' FanSensor Geomet r y' se pone a ' ar c' (por defecto) el
valor define el espaciado angular en grados (por defecto: 1)
Si ' FanSensor Geomet r y' vale ' l i ne' , el valor define el
espaciado lineal (por defecto: 1). Consultar la funcin
f anbeampara ms detalle.
Nota: Este espaciado lineal se mide en el eje x. El
origen de los ejes es el pixel central de la imagen.
' Fi l t er '
Cadena que especifica el nombre de un filtro. Consultar la
funcin i r adon para ms detalles.
' Fr equencyScal i ng'
Escalar en el rango (0, 1] que modifica el filtro reescalando
su eje de frecuencias. Consultar la funcin i r adon para ms
detalles.
' I nt er pol aci n'
Cadena de texto que especifica el tipo de interpolacin que
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 297 de 410
se usar entre los datos de haz paralelo y haz en abanico.
' near est ' Vecino ms cercano
{' l i near ' } Lineal
' spl i ne' spline cbico a trozos
' pchi p' Hermite (PCHIP) cbico a trozos
' cubi c' Igual que ' pchi p'
' Out put Si ze'
Escalar positivo que especifica el nmero de filas y
columnas en la imagen reconstruida.
Si no se especifca ' Out put Si ze' , i f anbeamdetermina el
tamao automticamente.
Si se especifica ' Out put Si ze' , i f anbeamreconstruye una
porcin ms corta o ms larga de la imagen, pero no cambia
la escala de los datos.
Nota: Si las proyecciones se calcularon con la
funcin f anbeam, la imagen reconstruida puede no
tener el mismo tamao que la imagen original.
[ I , H] = i f anbeam( . . . ) devuelve la respuesta en frecuencia del filtro especificado en el
vector H.
Los parmetros de entrada F y D pueden ser de tipo doubl e o si ngl e. El resto de entradas
numricas deben ser de tipo doubl e. Los argumentos de salida son tipo doubl e.
Ejemplos de uso
Ejemplo 1: Crear una transformacin de haz en abanico de una imagen cabeza de
prctica (phantom head) y recuperar la imagen a travs de las proyecciones.
ph = phant om( 512) ;
d = 400;

%Pr oyecci ones en abani co
F = f anbeam( ph, d) ;

%Tr ansf or mada en abani co i nver sa
phr = i f anbeam( F, d) ;

i mshow( ph) ,
f i gur e, i mshow( phr )

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 298 de 410

Figura f.165 - Imagen original (ph) Figura f.223 - Imagen recuperada (phr)
Ejemplo 2: Repetir el ejercicio anterior usando el parmetro de cobertura mnima.
%Debemos ut i l i zar el par met r o ' f ancover age' puest o a ' mi ni mal ' t ant o en
l a cr eaci n de l as pr oyecci ones en abani co como en l a t r ansf or mada en
abani co i nver sa. Par a el l o debemos usar l a Tr ansf or mada de Radn par a
sacar l as pr oyecci ones par al el as y conver t i r l as l uego a abani co
ut i l i zando el par met r o especi f i cado:

ph = phant om( 512) ;
P = r adon( ph) ;
[ F, obet a, ot het a] = par a2f an( P, 400, . . .
' FanSensor Spaci ng' , 0. 5, . . .
' FanCover age' , ' mi ni mal ' , . . .
' FanRot at i onI ncr ement ' , 1) ;
%Reconst r ui mos.

phr = i f anbeam( F, 400, . . .
' FanSensor Spaci ng' , 0. 5, . . .
' Fi l t er ' , ' Shepp- Logan' , . . .
' Out put Si ze' , 512, . . .
' FanCover age' , ' mi ni mal ' , . . .
' FanRot at i onI ncr ement ' , 1) ;

i mshow( ph)
f i gur e, i mshow( phr )
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 299 de 410

Figura f.127 - Imagen original (ph) Figura f.224 - Imagen recuperada (phr)
Funciones relacionadas
f an2par a, f anbeam, i r adon, par a2f an, phant om, r adon

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 300 de 410
im2bw
Conversin a imagen binaria mediante un umbral
Sintaxis
BW= i m2bw( I , l evel )
BW= i m2bw( X, map, l evel )
BW= i m2bw( RGB, l evel )
Descripcin
BW= i m2bw( I , l evel ) convierte a binario la imagen I en escala de grises. La imagen de
salida BWtendr valor 1 (blanco) en todos los pxeles de la imagen de entrada que tengan
una luminancia mayor que el nivel o umbral especificado en la variable l evel , y valor 0
(negro) en el resto de pxeles. El umbral de la variable l evel ser del rango [0, 1] y es
relativo a los niveles de seal posibles para el tipo/clase de imagen. Por ejemplo, un valor
de 0. 5 significa que est en medio del blanco y el negro, sin tener en cuenta el tipo/clase
de la imagen. Para calcular el umbral se puede utilizar la funcin gr ayt hr esh que
devuelve el umbral ptimo segn el mtodo de Otsu. Si no se especifica el umbral en la
variable l evel , i m2bw utiliza el valor de 0. 5.
BW = i m2bw( X, map, l evel ) convierte la imagen indexada X a imagen binaria,
utilizando el mapa de color de la variable map.
BW= i m2bw( RGB, l evel ) convierte la imagen RGB en color verdadero a imagen binaria.
Si la imagen de entrada no es una imagen en escala de grises, la funcin i m2bw convierte la
imagen de entrada a escala de grises y despus la convierte a binaria mediante
umbralizacin.
La imagen de entrada puede ser de tipo ui nt 8, ui nt 16, si ngl e, i nt 16, o doubl e y debe
ser de tipo no disperso. La imagen de salida BWes de tipo l ogi cal . I y X deben ser
bidimensionales. Las imgenes RGB son de tamao M-por-N-por-3.


Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 301 de 410
Ejemplos de uso
Ejemplo 1: Convertir una imagen RGB a binario utilizando el umbral ptimo devuelto por
la funcin gr ayt hr esh.
I = i mr ead( ' pai nt s. t i f ' ) ;
i mshow( I )
t hr eshol d = gr ayt hr esh( I ) ;
BW= i m2bw( I , t hr eshol d) ;
f i gur e, i mshow( BW)



Figura f.225 - Imagen original (I) Figura f.226 - Imagen convertida a binaria (BW) con
im2bw
Ejemplo 2: Umbralizar la imagen variando el umbral hasta conseguir separar la imagen
principal del fondo.
I = i mr ead( ' bi r d. t i f ' ) ;
i mshow( I )

%Empezamos ut i l i zando el umbr al pt i mo.

t hr eshol d = gr ayt hr esh( I ) ;
BW= i m2bw( I , t hr eshol d) ;
f i gur e, i mshow( BW)

%El umbr al pt i mo no f unci ona bi en con est a i magen. Pr obamos val or es de
umbr al hast a consegui r el ef ect o buscado.

t hr eshol d = 0. 2;
BW2 = i m2bw( I , t hr eshol d) ;
f i gur e, i mshow( BW)
t hr eshol d = 0. 4;
BW3 = i m2bw( I , t hr eshol d) ;
f i gur e, i mshow( BW)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 302 de 410


Figura f.227 - Imagen original (I) Figura f.228 - Imagen convertida a binaria (BW)
usando umbral ptimo


Figura f.229 - Imagen convertida a binaria (BW2)
usando umbral de 0.2
Figura f.230 - Imagen convertida a binaria (BW3)
usando umbral de 0.4
Funciones relacionadas
gr ayt hr esh, i nd2gr ay, r gb2gr ay

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 303 de 410
im2col
Recolocacin de bloques de imagen en columnas
Introduccin
La funcin i m2col reordena bloques de una imagen en columnas, mientras que col 2i m
realiza la operacin complementaria. El uso de estas funciones es bastante confuso por lo
que se suele intentar evitarlas utilizando otras funciones ms avanzadas y especficas como
r eshape, bl ockpr oc o nl f i l t er .
Sintaxis
B = i m2col ( A, [ mn] , bl ock_t ype)
B = i m2col ( A, ' i ndexed' , . . . )
Descripcin
B = i m2col ( A, [ mn] , bl ock_t ype) recoloca en columnas los bloques de tamao m-por-n
de una imagen. La variable bl ock_t ype determina la forma como se cogen los bloques y
puede tomar cualquiera de los siguiente valores:
Valor Descripcin
' di st i nct '
Recoloca cada bloque distinto de tamao m-por-n de la imagen A en una
columna de B. i m2col rellena A con ceros si es necesario, para que su
tamao sea un entero mltiplo de m-por-n. Si A = [ A11 A12; A21
A22] , donde cada A
ij
es de tamao m-por-n, entonces B = [ A11( : )
A12( : ) A21( : ) A22( : ) ] .
' sl i di ng'

Reordena cada bloque deslizante de A de tamao m-por-n (los bloques
van barriendo el array A) en una columna de B, sin rellenar con ceros, as
que solo se cogen los bloques que puedan construirse con una vecindad
completa de m-por-n (puede producir una imagen resultante de tamao
menor a la original). B tiene m*n filas y tantas columnas como
vecindades de m-por-n de A haya. Si el tamao de A es [ mmnn] entonces
el de B ser de ( m*n) -por-( ( mm- m+1) *( nn- n+1) ) .
Cada columna de B contendr los vecinos de A reordenados como
NHOOD( : ) donde NHOOD es una matriz que contiene una vecindad de m-
por-n de A. i m2col ordena las columnas de B para que se puedan
recolocar posteriormente para formar una matriz normal.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 304 de 410
Esta forma est pensada para operaciones sobre las columnas de B, por
ejemplo utilizando la funcin sum( B) que devuelve un escalar para cada
columna de B (vecindad de A), realizando una suma alrededor de esa
vecindad y pudiendo guardar directamente el resultado en una matriz de
tamao ( mm- m+1) -por-( nn- n+1) que es lo que la funcin
complementaria col 2i m espera recibir para reconstruir la imagen
despus del procesado.
B = i m2col ( A, [ mn] , ' sl i di ng' ) ;
C = col 2i m( sum( B) , mm- m+1, nn- n+1, ' sl i di ng' ) ;

(Por defecto)
B = i m2col ( A, ' i ndexed' , . . . ) procesa A como una imagen indexada, rellenando con
ceros si la clase de A es ui nt 8, o con unos si la clase es doubl e.
La imagen de entrada A puede ser de tipo numer i c o l ogi cal . La matriz de salida B es del
mismo tipo/clase que la imagen de entrada. Los bloques se cogen de izquierda a derecha y
de arriba abajo en A y las columnas se aaden de izquierda a derecha en B.
Ejemplos de uso
Ejemplo 1: Comparar las opciones ' sl i di ng' y ' di st i nct ' a la hora de recolocar los
bloques de datos con i m2col .
A = [ 1: 10; 11: 20; 21: 30; 31: 40]
S = i m2col ( A, [ 4, 3] , ' sl i di ng' )
D = i m2col ( A, [ 4, 3] , ' di st i nct ' )

A =
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 34 35 36 37 38 39 40

S =
1 2 3 4 5 6 7 8
11 12 13 14 15 16 17 18
21 22 23 24 25 26 27 28
31 32 33 34 35 36 37 38
2 3 4 5 6 7 8 9
12 13 14 15 16 17 18 19
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
3 4 5 6 7 8 9 10
13 14 15 16 17 18 19 20
23 24 25 26 27 28 29 30
33 34 35 36 37 38 39 40

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 305 de 410

D =
1 4 7 10
11 14 17 20
21 24 27 30
31 34 37 40
2 5 8 0
12 15 18 0
22 25 28 0
32 35 38 0
3 6 9 0
13 16 19 0
23 26 29 0
33 36 39 0
Ejemplo 2: Pasar cada componente de una imagen RGB a una matriz columna.
RGB = i mr ead( ' r gb. j pg' )
r c = i m2col ( RGB( : , : , 1) , [ si ze( RGB, 1) si ze( RGB, 2) ] ) ;
gc = i m2col ( RGB( : , : , 2) , [ si ze( RGB, 1) si ze( RGB, 2) ] ) ;
bc = i m2col ( RGB( : , : , 3) , [ si ze( RGB, 1) si ze( RGB, 2) ] ) ;
Ejemplo 3: Reorganizar un array en columnas con la funcin i m2col y recuperar el array
original con la funcin inversa.
A = [ 1: 10; 11: 20; 21: 30; 31: 40]
B = i m2col ( A, [ 2, 5] , ' di st i nct ' )
C = col 2i m( B, [ 2, 5] , [ 4, 10] , ' di st i nct ' )

A =
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 34 35 36 37 38 39 40

B =
1 21 6 26
11 31 16 36
2 22 7 27
12 32 17 37
3 23 8 28
13 33 18 38
4 24 9 29
14 34 19 39
5 25 10 30
15 35 20 40

C =
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 34 35 36 37 38 39 40
Funciones relacionadas
bl ockpr oc, col 2i m, col f i l t , nl f i l t er
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 306 de 410
im2double
Conversin de una imagen a clase double
Introduccin
MATLAB guarda y opera por defecto con datos de tipo doubl e. Cada dato del array se
guarda con una precisin de 8 bytes, lo que no es muy eficiente al trabajar con imgenes de
muchos pxeles. De ah que se suela usar la clase uint8 en procesado de imgenes ya que
requiere solo un byte por elemento y tiene un rango de 0 a 255, siendo 8 veces ms
eficiente que el tipo double. Para evitar problemas al trabajar con las funciones
predefinidas de la toolbox de procesado de imgenes, conviene trabajar con datos en
formato doubl e y cerciorarse de que los datos estn escalados al rango [0, 1].
MATLAB dispone de dos funciones para la conversin de imgenes a tipo doubl e.
i m2doubl e, que convierte a un array tipo doubl e escalando en el rango [0, 1] y doubl e,
que realiza la conversin sin reescalar.
Sintaxis
I 2 = i m2doubl e( I )
RGB2 = i m2doubl e( RGB)
I = i m2doubl e( BW)
X2 = i m2doubl e( X, ' i ndexed' )
Descripcin
I 2 = i m2doubl e( I ) convierte la imagen de intensidades I a clase doubl e, reescalando los
datos si es necesario. Si la imagen de entrada es de clase doubl e, la de salida ser idntica.
RGB2 = i m2doubl e( RGB) convierte la imagen en color verdadero RGB a clase doubl e,
reescalando los datos si es necesario.
I = i m2doubl e( BW) convierte la imagen binaria BWa una imagen de intensidades de clase
doubl e.
X2 = i m2doubl e( X, ' i ndexed' ) convierte la imagen indexada X a clase doubl e,
compensando los datos si es necesario.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 307 de 410
Las imgenes de intensidad y de color verdadero pueden ser de clase ui nt 8, ui nt 16,
doubl e, l ogi cal , si ngl e, o i nt 16. Las imgenes indexadas pueden ser de clase ui nt 8,
ui nt 16, doubl e o l ogi cal . Las imgenes binarias de entrada deben ser de clase l ogi cal .
La imagen de salida es de clase doubl e.
Ejemplos de uso
Ejemplo 1: Convertir una matriz imagen de clase ui nt 8 a clase doubl e.
I 1 = r eshape( ui nt 8( l i nspace( 1, 255, 9) ) , [ 3 3] )
I 2 = i m2doubl e( I 1)

I 1 =
1 96 192
33 128 223
65 160 255

I 2 =
0. 0039 0. 3765 0. 7529
0. 1294 0. 5020 0. 8745
0. 2549 0. 6275 1. 0000
Funciones relacionadas
doubl e, i m2si ngl e, i m2i nt 16, i m2ui nt 8, i m2ui nt 16

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 308 de 410
im2int16
Conversin de una imagen a clase int16 (enteros con signo de 16-bits)
Sintaxis
I 2 = i m2i nt 16( I )
RGB2 = i m2i nt 16( RGB)
I = i m2i nt 16( BW)
Descripcin
I 2 = i m2i nt 16( I ) convierte la imagen de intensidades I a clase i nt 16, reescalando los
datos si es necesario. Si la imagen de entrada es de clase i nt 16, la de salida ser idntica.
RGB2 = i m2i nt 16( RGB) convierte la imagen de color verdadero RGB a clase i nt 16,
reescalando los datos si es necesario.
I = i m2i nt 16( BW) convierte la imagen binaria BWa imagen binaria de intensidades de
clase i nt 16 cambiando los elementos de valor cero o falso a -32768 y los de valor uno o
verdadero a 32767.
Las imgenes de intensidad y de color verdadero pueden ser de clase ui nt 8, ui nt 16,
si ngl e, doubl e o l ogi cal . Las imgenes binarias de entrada deben ser de clase l ogi cal .
La imagen de salida es de clase i nt 16.
Ejemplos de uso
Ejemplo 1: Convertir una matriz imagen de clase doubl e a clase i nt 16.
I = r eshape( l i nspace( 0, 1, 6) , [ 2 3] )
I 2 = i m2i nt 16( I )

I =
0 0. 4000 0. 8000
0. 2000 0. 6000 1. 0000

I 2 =
- 32768 - 6554 19660
- 19661 6553 32767
Funciones relacionadas
i m2doubl e, i m2si ngl e, i m2ui nt 8, i m2ui nt 16, i nt 16
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 309 de 410
im2java2d
Conversin de una imagen a tipo bufferedimage de Java
Sintaxis
j i mage = i m2j ava2d( I )
j i mage = i m2j ava2d( X, MAP)
Descripcin
j i mage = i m2j ava2d( I ) convierte la imagen I a una instancia de la clase de imagen de
J ava j ava. awt . i mage. Buf f er edI mage. La imagen I puede ser de intensidades (escala de
grises), RGB o binaria.
j i mage = i m2j ava2d( X, MAP) convierte la imagen indexada X con mapa de color MAP a
una instancia de la clase de imagen de J ava j ava. awt . i mage. Buf f er edI mage.
Nota: La funcin i m2j ava2d trabaja con el API de J ava en 2D. La funcin
i m2j ava trabaja con el kit de herramientas de ventana abstracta (AWT, Abstract
Windowing Toolkit).
Las imgenes de entrada de intensidades, indexadas y RGB pueden ser de clase ui nt 8,
ui nt 16 o doubl e. Las imgenes binarias de entrada deben ser de clase l ogi cal .
Ejemplos de uso
Ejemplo 1: Leer una imagen en MATLAB y utilizar i m2j ava2d para convertirla en una
instancia de la clase de imagen de J ava j ava. awt . i mage. Buf f er edI mage y mostrarla en
una ventana de J ava.
%Conver t i mos l a i magen.

I = i mr ead( ' r ueda. t i f ' ) ;
j avaI mage = i m2j ava2d( I ) ;

%La most r amos como vent ana de J ava.

f r ame = j avax. swi ng. J Fr ame;
i con = j avax. swi ng. I mageI con( j avaI mage) ;
l abel = j avax. swi ng. J Label ( i con) ;
f r ame. get Cont ent Pane. add( l abel ) ;
f r ame. pack
f r ame. show

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 310 de 410
im2single
Conversin de una imagen a clase single
Sintaxis
I 2 = i m2si ngl e( I )
RGB2 = i m2si ngl e( RGB)
I = i m2si ngl e( BW)
X2 = i m2si ngl e( X, ' i ndexed' )
Descripcin
I 2 = i m2si ngl e( I ) convierte la imagen de intensidades I a clase si ngl e, reescalando los
datos si es necesario. Si la imagen de entrada es de clase single, la imagen de salida ser
idntica.
RGB2 = i m2si ngl e( RGB) convierte la imagen de color verdadero RGB a clase si ngl e,
reescalando los datos si es necesario.
I = i m2si ngl e( BW) convierte la imagen binaria BWa una imagen de intensidades de clase
si ngl e.
X2 = i m2si ngl e( X, ' i ndexed' ) convierte la imagen indexada X a una imagen de clase
si ngl e, compensando los datos si es necesario.
Las imgenes de intensidades y de color verdadero pueden ser de clase ui nt 8, ui nt 16,
i nt 16, si ngl e, doubl e o l ogi cal . Las imgenes indexadas pueden ser de clase ui nt 8,
ui nt 16, doubl e o l ogi cal . Las imgenes binarias de entrada deben ser de clase l ogi cal .
La imagen de salida es de clase si ngl e.
Ejemplos de uso
Ejemplo 1: Convertir una matriz imagen de clase ui nt 8 a clase si ngl e.
I = r eshape( ui nt 8( l i nspace( 1, 255, 9) ) , [ 3 3] )
I 2 = i m2si ngl e( I )

I =
1 96 192
33 128 223
65 160 255
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 311 de 410

I 2 =
0. 0039 0. 3765 0. 7529
0. 1294 0. 5020 0. 8745
0. 2549 0. 6275 1. 0000
Funciones relacionadas
i m2doubl e, i m2i nt 16, i m2ui nt 8, i m2ui nt 16, si ngl e

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 312 de 410
im2uint16
Conversin de una imagen a clase uint16
Sintaxis
I 2 = i m2ui nt 16( I )
RGB2 = i m2ui nt 16( RGB)
I = i m2ui nt 16( BW)
X2 = i m2ui nt 16( X, ' i ndexed' )
Descripcin
I 2 = i m2ui nt 16( I ) convierte la imagen de intensidades I a clase ui nt 16 (enteros sin
signo de 16-bits), reescalando los datos si es necesario. Si la imagen de entrada es de clase
ui nt 16, la imagen de salida ser idntica.
RGB2 = i m2ui nt 16( RGB) convierte la imagen en color verdadero RGB a clase ui nt 16,
reescalando los datos si es necesario.
I = i m2ui nt 16( BW) convierte la imagen binaria BWa imagen de intensidades de clase
ui nt 16, poniendo los elementos de valor 1 a valor 65535.
X2 = i m2ui nt 16( X, ' i ndexed' ) convierte la imagen indexada X a clase ui nt 16,
compensando los datos si es necesario. Si X es de clase doubl e, max( X( : ) ) debe valer
65536 o menos.
Las imgenes de intensidades y de color verdadero pueden ser de clase ui nt 8, ui nt 16,
doubl e, l ogi cal , si ngl e o i nt 16. Las imgenes indexadas pueden ser de clase ui nt 8,
ui nt 16, doubl e o l ogi cal . Las imgenes binarias de entrada deben ser de clase l ogi cal .
La imagen de salida es de clase ui nt 16.
Ejemplos de uso
Ejemplo 1: Convertir una matriz imagen de clase doubl e a clase ui nt 16.
I = r eshape( l i nspace( 0, 1, 9) , [ 3 3] )
I 2 = i m2ui nt 16( I )

I =
0 0. 3750 0. 7500
0. 1250 0. 5000 0. 8750
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 313 de 410
0. 2500 0. 6250 1. 0000


I 2 =
0 24576 49151
8192 32768 57343
16384 40959 65535
Funciones relacionadas
i m2ui nt 8, doubl e, i m2doubl e, ui nt 8, ui nt 16, i mappr ox

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 314 de 410
im2uint8
Conversin de una imagen a clase uint8
Sintaxis
I 2 = i m2ui nt 8( I 1)
RGB2 = i m2ui nt 8( RGB1)
I = i m2ui nt 8( BW)
X2 = i m2ui nt 8( X1, ' i ndexed' )
Descripcin
i m2ui nt 8 convierte una imagen de entrada a clase ui nt 8 (enteros sin signo de 8-bits). Si
la imagen de entrada es de clase ui nt 8, la imagen de salida ser idntica. Si la imagen de
entrada no es de clase ui nt 8, i m2ui nt 8 devuelve una imagen equivalente de clase ui nt 8,
reescalando o compensando los datos si es necesario.
I 2 = i m2ui nt 8( I 1) convierte la imagen en escala de grises I 1 a clase ui nt 8, reescalando
los datos si es necesario.
RGB2 = i m2ui nt 8( RGB1) convierte la imagen en color verdadero RGB1 a clase ui nt 8,
reescalando los datos si es necesario.
I = i m2ui nt 8( BW) convierte la imagen binaria BWa una imagen en escala de grises de
clase ui nt 8, cambiando los elementos de valor 1 por el valor 255.
X2 = i m2ui nt 8( X1, ' i ndexed' ) convierte la imagen indexada X1 a clase ui nt 8,
compensando los datos si es necesario. Notar que no siempre es posible convertir una
imagen indexada a clase ui nt 8. Si X1 es de clase doubl e, el valor mximo de X1 debe ser
256 o menos; si X1 es de clase ui nt 16, el valor mximo de X1 debe ser 255 o menos.
Las imgenes en escala de grises y de color verdadero pueden ser de tipo ui nt 8, ui nt 16,
i nt 16, si ngl e, doubl e o l ogi cal . Las imgenes indexadas pueden ser del tipo ui nt 8,
ui nt 16, doubl e o l ogi cal . Las imgenes binarias de entrada deben ser de clase l ogi cal .
La imagen de salida es de clase ui nt 8.
Ejemplos de uso
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 315 de 410
Ejemplo 1: Convertir una matriz imagen de clase ui nt 16 a clase ui nt 8.
I 1 = r eshape( ui nt 16( l i nspace( 0, 65535, 9) ) , [ 3 3] )
I 2 = i m2ui nt 8( I 1)

I 1 =
0 24576 49151
8192 32768 57343
16384 40959 65535

I 2 =
0 96 191
32 128 223
64 159 255
Funciones relacionadas
i m2doubl e, i m2i nt 16, i m2si ngl e, i m2ui nt 16, ui nt 8

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 316 de 410
imabsdiff
Diferencia en valor absoluto de dos imgenes
Sintaxis
Z = i mabsdi f f ( X, Y)
Descripcin
Z = i mabsdi f f ( X, Y) resta cada elemento del array Y al elemento correspondiente en el
array X y devuelve la diferencia en valor absoluto en el elemento del array Z. X e Y son
arrays numricos reales y no dispersos de la misma clase y tamao. Z ser de la misma
clase y tamao que X e Y. Si X e Y son arrays enteros se truncarn los elementos a la salida
que excedan el rango de los valores enteros.
Si X e Y son arrays de clase doubl e se puede usar la expresin abs( X- Y) en vez de esta
funcin.
Ejemplos de uso
Ejemplo 1: Calcular la diferencia en valor absoluto de dos arrays de clase ui nt 8. Notar
que los valores negativos no se redondean a cero como con la funcin i msubt r act .
X = ui nt 8( [ 255 10 75; 44 225 100] ) ;
Y = ui nt 8( [ 50 50 50; 50 50 50 ] ) ;
Z = i mabsdi f f ( X, Y)
S = i msubt r act ( X, Y)

Z =
205 40 25
6 175 50

S =
205 0 25
0 175 50
Ejemplo 2: Mostrar la diferencia en valor absoluto entre una imagen filtrada y la original.
I = i mr ead( ' camer aman. t i f ' ) ;
J = ui nt 8( f i l t er 2( f speci al ( ' gaussi an' ) , I ) ) ;
K = i mabsdi f f ( I , J ) ;

%Most r ar l a di f er enci a escal ando l os dat os aut omt i cament e con [ ] .

i mshow( K, [ ] )
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 317 de 410


Figura f.179 - Imagen original (I) Figura f.231 - Imagen diferencia (K)
Funciones relacionadas
i madd, i mcompl ement , i mdi vi de, i ml i ncomb, i mmul t i pl y, i msubt r act , i ppl
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 318 de 410
imadd
Juntar dos imgenes o sumar una constante a una imagen
Sintaxis
Z = i madd( X, Y)
Descripcin
Z = i madd( X, Y) suma cada elemento del array X con su elemento correspondiente en el
array Y devolviendo la suma en array Z. X e Y son arrays numricos reales no dispersos de
la misma clase y tamao. Y tambin puede ser un escalar de clase doubl e. Z tiene el mismo
tamao y clase que X, salvo cuando X es de clase l ogi cal , en cuyo caso Z es de clase
doubl e.
Si X e Y son arrays de enteros se truncarn los elementos a la salida que excedan el rango
de los enteros y se redondearn los valores fraccionarios.
Ejemplos de uso
Ejemplo 1: J untar dos arrays de clase ui nt 8. Notar cmo se truncan los valores que
exceden de 255.
X = ui nt 8( [ 255 0 75; 44 225 100; 12 35 44] )
Y = ui nt 8( [ 50 50 50; 50 50 50; 50 50 50] )
Z = i madd( X, Y)

X =
255 0 75
44 225 100
12 35 44

Y =
50 50 50
50 50 50
50 50 50

Z =
255 50 125
94 255 150
62 85 94

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 319 de 410
Ejemplo 2: J untar dos imgenes y especificar una clase de salida.
I = i mr ead( ' camer aman. t i f ' ) ;
J = i mr ead( ' punt os. t i f ' ) ;
K = i madd( I , J , ' ui nt 16' ) ;
i mshow( K, [ ] )


Figura f.179 - Imagen 1 (I) Figura f.232 - Imagen 2 (J)


Figura f.233 - Unin de imgenes (K)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 320 de 410
Ejemplo 3: Sumar una constante a una imagen.
I = i mr ead( ' punt os. t i f ' ) ;
J = i madd( I , 50) ;
i mshow( I )
f i gur e, i mshow( J )


Figura f.232 - Imagen original (I) Figura f.234 - Imagen con aadido de 50 (J)
Funciones relacionadas
i mabsdi f f , i mcompl ement , i mdi vi de, i ml i ncomb, i mmul t i pl y, i msubt r act ,
i ppl

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 321 de 410
imadjust
Ajuste de los valores de intensidad de una imagen o de un mapa de color
a un rango especificado
Introduccin
La funcin i madj ust suele utilizarse tanto para mostrar imgenes dentro de un rango de
intensidad determinado como para la mejora simple del contraste de una imagen mediante
la expansin de su histograma. Otras alternativas ms complejas y especficas para la
mejora del contraste son las funciones hi st eq y adapt hi st eq, que realizan una
ecualizacin del histograma de la imagen y que resultan algo ms automticas. Ms
informacin y comparacin en la pgina de la funcin adapt hi st eq.
Sintaxis
J = i madj ust ( I )
J = i madj ust ( I , [ l ow_i n; hi gh_i n] , [ l ow_out ; hi gh_out ] )
J = i madj ust ( I , [ l ow_i n; hi gh_i n] , [ l ow_out ; hi gh_out ] , gamma)
newmap = i madj ust ( map, [ l ow_i n; hi gh_i n] , [ l ow_out ; hi gh_out ] , gamma)
RGB2 = i madj ust ( RGB1, . . . )
Descripcin
J = i madj ust ( I ) ajusta los valores de intensidad de la imagen en escala de grises I
saturando el 1% de los datos con mayor y menor intensidad (2% en total) usando los
lmites obtenidos automticamente por la funcin st r et chl i my guardando los valores en
J . Esto incrementa el contraste de la imagen de salida J . Esta sintaxis es equivalente a
hacer i madj ust ( I , st r et chl i m( I ) ) .
J = i madj ust ( I , [ l ow_i n; hi gh_i n] , [ l ow_out ; hi gh_out ] ) pasa los valores de
intensidad de I a nuevos valores en J , saturando a l ow_out los valores menores que
l ow_i n, a hi gh_out los valores por encima de hi gh_i n y convirtiendo linealmente los
valores intermedios entre l ow_i n y hi gh_i n a valores entre l ow_out y hi gh_out . Los
valores para l ow_i n, hi gh_i n, l ow_out , y hi gh_out deben estar en el rango [ 0, 1]
independientemente del tipo de imagen y de sus valores de intensidad. Estos lmites se
adaptan automticamente al tipo de imagen, multiplicndose por 255 para imgenes de
clase uint8, por 65535 para imgenes de clase uint16, etc. Se puede omitir el intervalo de
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 322 de 410
entrada o salida mediante una matriz vaca ([ ] ), en cuyo caso se tomarn los valores de
intervalo por defecto que son [ 0, 1] .
J = i madj ust ( I , [ l ow_i n; hi gh_i n] , [ l ow_out ; hi gh_out ] , gamma) convierte los
valores en I a nuevos valores en J , donde gamma especifica la forma de la curva que
describe la relacin entre los valores en I y J . Si gamma es menor que 1, la conversin se
hace hacia valores de salida mayores (ms brillantes) y si gamma es mayor que 1 hacia
valores de salida menores (ms oscuros). Si se omite el parmetro gamma, por defecto vale
1 (mapeado lineal).
newmap = i madj ust ( map, [ l ow_i n; hi gh_i n] , [ l ow_out ; hi gh_out ] , gamma)
transforma el mapa de color de una imagen indexada especificado en map. Si l ow_i n,
hi gh_i n, l ow_out , hi gh_out y gamma son escalares, entonces se realiza la misma
conversin a las componentes roja, verde y azul. Se pueden usar vectores de 1-por-3 para
definir mapeados diferentes en cada canal. El mapa reescalado newmap tendr el mismo
tamao que el mapa original map.
RGB2 = i madj ust ( RGB1, . . . ) realiza el ajuste en cada plano de la imagen (rojo, verde y
azul) de la imagen RGB especificada en RGB1. Al igual que en el ajuste del mapa de color,
al especificar las variables low_in, hi gh_i n, low_out, hi gh_out y gamma se pueden
definir escalares para especificar el mismo mapeado para todos los planos, o matrices de 1-
por-3 para mapeados diferentes en cada plano.
Nota: Si hi gh_out < l ow_out , la imagen de salida se revertir, como en un
negativo fotogrfico.
La imagen de entrada puede ser de clase ui nt 8, ui nt 16, i nt 16, si ngl e, o doubl e. La
imagen de salida ser de la misma clase que la de entrada. Los mapas de color en la
entrada y salida son de clase doubl e.
Ejemplos de uso
Ejemplo 1: Comprobar el funcionamiento de la funcin i madj ust ajustando un array de
intensidades usando lmites de entrada de valor inferior 0.4 (0.2 * 255 =102) y superior
0.6 (0.6 * 255 =153) y lmites de salida por defecto ([0 1])

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 323 de 410
I = r eshape( ui nt 8( l i nspace( 1, 255, 50) ) , [ 5 10] )
K = i madj ust ( I , [ 0. 4 0. 6] , [ ] )

I =
1 27 53 79 105 131 157 182 208 234
6 32 58 84 110 136 162 188 214 239
11 37 63 89 115 141 167 193 219 245
17 42 68 94 120 146 172 198 224 250
22 48 74 99 125 151 177 203 229 255

K =
0 0 0 0 15 145 255 255 255 255
0 0 0 0 40 170 255 255 255 255
0 0 0 0 65 195 255 255 255 255
0 0 0 0 90 220 255 255 255 255
0 0 0 0 115 245 255 255 255 255
Ejemplo 2: Ajustar una imagen en escala de grises de bajo contraste.
I = i mr ead( ' espaci o. t i f ' ) ;
i mshow( I )
J = i madj ust ( I ) ;
f i gur e, i mshow( J )



Figura f.1 - Imagen original (I) sin procesar Figura f.5 - Imagen ajustada (J) con imadjust
Ejemplo 3: Ajustar una imagen RGB usando los lmites de entrada y salida.
RGB1 = i mr ead( ' Nur nber g. t i f ' ) ;
i mshow( RGB1)
RGB2 = i madj ust ( RGB1, [ . 2 . 2 0; . 7 . 8 1] , [ ] ) ;
f i gur e, i mshow( RGB2)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 324 de 410

Figura f.1 - Imagen original (RGB1) sin procesar Figura f.235 - Imagen ajustada (RGB2) con imadjust
Funciones relacionadas
adapt hi st eq, br i ght en, hi st eq, st r et chl i m

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 325 de 410
ImageAdapter
Interfaz para la lectura y escritura de archivos por bloques
Sintaxis
adapt er = Cl assName( . . . )
Descripcin
I mageAdapt er es una clase abstracta que especifica la interfaz para la lectura y escritura de
archivos por bloques o regiones, definiendo los mtodos que la funcin bl ockpr oc
utilizar para leer y escribir imgenes en el disco. Aunque la funcin bl ockpr oc solo
admite determinados tipos de archivos, se puede conseguir trabajar con otro tipo de
imgenes construyendo para ellos una clase que herede de la clase I mageAdapt er y
encapsule el cdigo necesario.
Para poder escribir una clase I mage Adapt er para un formato de archivo determinado se
debe poder:
Consultar el tamao del archivo en disco.
Leer un bloque rectangular del archivo.
Al heredar de la superclase I mageAdapt er la nueva clase podr:
Interactuar con la funcin bl ockpr oc.
Definir propiedades comunes de las clases ImageAdapter.
Definir la interfaz que bl ockpr oc utilizar para leer y escribir en otros archivos.
Por ejemplo, al crear una nueva clase I mageAdapt er llamada Cl assName se tendra que
programar un archivo Cl assName. m con el cdigo correspondiente, en el que se definira
la clase (su nombre y que hereda de la superclase I mageAdapt er ) , sus propiedades y sus
mtodos (constructor de clase, lectura de regiones, cierre de clase). Como ejemplo se
puede consultar la clase LanAdapt er en MATLAB, creada para los archivos en formato
LAN mediante la sintaxis open LanAdapt er . m. Para construir un objeto de la clase
LanAdapt er que se pueda utilizar como fuente de entrada a la funcin bl ockpr oc se debe
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 326 de 410
utilizar el constructor de la clase, utilizando la sintaxis ADAPTER =
LANADAPTER( ar chi vo) .
De forma ms general, adapt er = Cl assName( . . . ) construye un objeto de la clase
Cl assName y maneja la inicializacin del objeto, la apertura o creacin del archivo y
especifica los valores iniciales de las propiedades de la clase. El constructor de la clase
acepta cualquier nmero de argumentos. Las propiedades heredadas de la superclase
I mageAdapt er y que se pueden definir al construir cualquier objeto son:
Col or map
Especifica un mapa de color. Utilizar esta propiedad al trabajar con
imgenes indexadas. El valor de la propiedad debe ser una matriz de
M-por-3 de nmeros reales.
(Por defecto: Valor vaco ( [ ] ) que indica o una imagen en escala de
grises, una imagen de clase l ogi cal o una imagen de color
verdadero)
I mageSi ze
Guarda el tamao de la imagen. Cuando se construye una nueva clase
que hereda de I mageAdapt er , se debe definir la propiedad
I mageSi ze en el constructor de la clase. El valor especificado debe
ser un vector de 2 o 3 elementos del tipo [ r ows col s] o [ r ows col s
bands] , donde r ows indica el alto y col s indica el ancho.
Las clases I mageAdapt er (para cada tipo de archivo) que heredan de la superclase
I mageAdapt er deben implementar obligatoriamente los mtodos r eadRegi on (lectura de
una regin de la imagen) y cl ose (cerrar objeto I mageAdapt er ) para permitir una lectura
bsica de imgenes basada en regiones. El mtodo wr i t eRegi on permite la escritura
incremental de imgenes basndose en regiones y es opcional. Las clases I mageAdapt er
que no implementan el mtodo wr i t eRegi on son clases de solo lectura.
Funciones relacionadas
bl ockpr oc

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 327 de 410
imageinfo
Herramienta de informacin de imagen
Sintaxis
i magei nf o
i magei nf o( h)
i magei nf o( f i l ename)
i magei nf o( i nf o)
i magei nf o( hi mage, f i l ename)
i magei nf o( hi mage, i nf o)
hf i g = i magei nf o( . . . )
Descripcin
i magei nf o crea una herramienta de informacin de imagen asociada con la imagen de la
figura actual. La herramienta muestra informacin de los atributos bsicos de la imagen en
una figura separada. i magei nf o obtiene la informacin consultando el objeto de imagen
CDat a.
La siguiente tabla muestra la informacin bsica incluida al utilizar la herramienta. Notar
que la herramienta contiene cuatro o seis campos en funcin del tipo de imagen.
Atributo Descripcin
Wi dt h
Nmero de columnas de la imagen.
Hei ght
Nmero de filas en la imagen.
Cl ass
Tipo de dato usado en la imagen, como p. ej. ui nt 8.
Nota: Para imgenes de clase si ngl e o i nt 16, i magei nf o
devuelve un valor de clase de doubl e porque los objetos de
imagen convierten el CDat a de estas imgenes a clase doubl e.
I mage t ype
Uno de los tipos de imagen identificados: ' i nt ensi t y' si es una
imagen de intensidades, ' t r uecol or ' si es una imagen en color
verdadero, ' bi nar y' si es una imagen binaria, o ' i ndexed' si es una
imagen indexada.
Mi ni mum
i nt ensi t y or
i ndex
Para imgenes en escala de grises este valor representa la menor
intensidad de pixel encontrada.
Para imgenes indexadas el valor representa el menor valor de ndice
en un mapa de color.
Atributo no incluido en imgenes binarias o de color verdadero.
Maxi mum
Para imgenes en escala de grises este valor representa la mayor
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 328 de 410
i nt ensi t y or
i ndex
intensidad de pixel encontrada.
Para imgenes indexadas el valor representa el mayor valor de ndice
en un mapa de color.
Atributo no incluido en imgenes binarias o de color verdadero.
i magei nf o( h) crea una herramienta de informacin de imagen asociada con h, donde h es
un puntero a una figura, eje u objeto de imagen.
i magei nf o( f i l ename) crea una herramienta de informacin de imagen que lee los
metadatos del archivo grfico f i l ename. No hace falta mostrar la imagen en una ventana.
f i l ename puede ser de cualquier tipo registrado en el registro de formatos de archivo
i mf or mat s por lo que su informacin puede leerse con i mf i nf o. f i l ename puede ser
tambin de tipo DICOM, NITF, Interfile, o Analyze.
i magei nf o( i nf o) crea una herramienta de informacin de imagen leyendo los metadatos
de la imagen de la estructura i nf o, una estructura devuelta por las funciones i mf i nf o,
di comi nf o, ni t f i nf o i nt er f i l ei nf o, o anal yze75i nf o. i nf o puede ser tambin una
estructura creada por el usuario.
i magei nf o( hi mage, f i l ename) crea una herramienta de informacin de imagen que lee la
informacin de los atributos bsicos de la imagen desde el puntero hi mage al objeto
grfico y lee los metadatos de la imagen del archivo grfico f i l ename.
i magei nf o( hi mage, i nf o) crea una herramienta de informacin de imagen que lee la
informacin de los atributos bsicos de la imagen desde el puntero hi mage al objeto
grfico y lee los metadatos de la imagen de la estructura i nf o.
hf i g = i magei nf o( . . . ) devuelve un puntero a la figura de la herramienta de
informacin de imagen.
Ejemplos de uso
Ejemplo 1: Mostrar la informacin bsica de una imagen recin mostrada.
i mshow( ' camer aman. t i f ' )
i magei nf o;

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 329 de 410


Figura f.179 - Imagen (cameraman.tif) Figura f.236 - Informacin bsica de la imagen
Ejemplo 2: Mostrar la informacin completa de una imagen y adems mostrar sus
metadatos.
h = i mshow( ' camer aman. t i f ' )
i nf o = i mf i nf o( ' camer aman. t i f ' ) ;
i magei nf o( h, i nf o) ;
Funciones relacionadas
anal yze75i nf o, di comi nf o, i mat t r i but es, i mf i nf o, i mf or mat s, i mt ool ,
i nt er f i l ei nf o, ni t f i nf o

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 330 de 410
imagemodel
Creacin de un objeto modelo de imagen
Introduccin
Un objeto modelo de imagen guarda cierta informacin de una imagen: clase, tipo, rango
de intensidades, anchura, altura y mnimo y mximo valor de intensidad. El objeto acepta
mtodos que se pueden utilizar para acceder y mostrar la informacin. Para obtener la lista
de mtodos se debe escribir en MATLAB el cdigo met hods i magemodel o tambin se
puede escribir hel p i magemodel / mt odo para obtener ms informacin a cerca de un
mtodo determinado. Estos son los mtodos aceptados y los valores devueltos:
st r = get Cl assType( i mgmodel )
Clase de la imagen.

di sp_r ange = get Di spl ayRange( i mgmodel )
Rango de la imagen, si esta es de intensidades.

hei ght = get I mageHei ght ( i mgmodel )
Nmero de filas.

st r = get I mageType( i mgmodel )
Tipo de imagen.

wi dt h = get I mageWi dt h( i mgmodel )
Nmero de columnas.

mi nval = get Mi nI nt ensi t y( i mgmodel )
Mnimo valor de intensidad de la imagen.

maxval = get MaxI nt ensi t y( i mgmodel )
Mximo valor de intensidad de la imagen.

f un = get Number For mat Fcn( i mgmodel )
Puntero a una funcin que convierte un valor numrico en una cadena de texto. Por
ejemplo, st r = f un( get Pi xel Val or ( i mgmodel , 100, 100) ) convierte el valor
numrico devuelto por la funcin get Pi xel Val or a una cadena de texto.

st r = get Pi xel I nf oSt r i ng( i mgmodel , r ow, col umn)
Cadena de texto del valor del pixel especificado.

f un = get Pi xel Regi onFor mat Fcn( i mgmodel )
Puntero a una funcin que da formato al valor del pixel especificado.

val = get Pi xel Val or ( i mgmodel , r ow, col umn)
Array numrico del valor del pixel especificado.


Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 331 de 410
st r = get Def ect oPi xel I nf oSt r i ng( i mgmodel )
Cadena de texto que indica el tipo de pixel.

st r = get Def ect Pi xel Regi onSt r i ng( i mgmodel )
Cadena de texto que indica el tipo de informacin mostrada en la regin seleccionada.

val = get Scr eenPi xel RGBVal or ( i mgmodel , r ow, col )
Valor en pantalla del pixel especificado.
Sintaxis
i mgmodel = i magemodel ( hi mage)
Descripcin
i mgmodel = i magemodel ( hi mage) crea un objeto modelo de imagen asociado con una
imagen destino. hi mage es un puntero a un objeto de imagen o un array de punteros a
objetos de imagen.
i magemodel devuelve un objeto modelo de imagen o un array de objetos modelo de
imagen si hi mage es un array de objetos de imagen.
i magemodel trabaja consultando la propiedad de objeto de imagen CDat a. Para imgenes
tipo si ngl e o i nt 16 el objeto de imagen convierte su CDat a a clase doubl e.
Ejemplos de uso
Ejemplo 1: Crear un objeto modelo de imagen de una imagen.
h = i mshow( ' pepper s. png' )
i m= i magemodel ( h) ;

Funciones relacionadas
get i magemodel

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 332 de 410
imattributes
Atributos de una imagen
Sintaxis
at t r s = i mat t r i but es
at t r s = i mat t r i but es( hi mage)
at t r s = i mat t r i but es( i mgmodel )
Descripcin
at t r s = i mat t r i but es devuelve informacin sobre la imagen de la figura actual
consultando la propiedad CDat a del objeto de imagen. Si la figura actual no contiene
ninguna imagen, la funcin devuelve un array vaco.
at t r s = i mat t r i but es( hi mage) devuelve informacin sobre la imagen especificada por
hi mage, un puntero a un objeto de imagen.
i mat t r i but es devuelve la informacin de los atributos de la imagen en la variable at t r s,
un array de celdas de tamao 4-por-2 o 6-por-2 dependiendo del tipo de imagen. La
primera columna del array de celdas contiene el nombre del atributo guardado como
cadena de texto. La segunda columna contiene el valor del atributo tambin como cadena
de texto. La siguiente tabla muestra los atributos en el orden en que aparecen en el array de
celdas:
Nombre del
atributo
Valor
Wi dt h
Nmero de columnas de la imagen.
Hei ght
Nmero de filas en la imagen.
Cl ass
Tipo de dato usado en la imagen, como p.ej. ui nt 8.
Nota: Para imgenes de clase si ngl e o i nt 16, i magei nf o
devuelve un valor de clase de doubl e porque los objetos de
imagen convierten el CDat a de estas imgenes a clase doubl e.
I mage t ype
Uno de los tipos de imagen identificados: ' i nt ensi t y' si es una
imagen de intensidades, ' t r uecol or ' si es una imagen en color
verdadero, ' bi nar y' si es una imagen binaria, o ' i ndexed' si es una
imagen indexada.
Mi ni mum
Para imgenes en escala de grises este valor representa la menor
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 333 de 410
i nt ensi t y or
i ndex
intensidad de pixel encontrada.
Para imgenes indexadas el valor representa el menor valor de ndice
en un mapa de color.
Atributo no incluido en imgenes binarias o de color verdadero.
Maxi mum
i nt ensi t y or
i ndex
Para imgenes en escala de grises este valor representa la mayor
intensidad de pixel encontrada.
Para imgenes indexadas el valor representa el mayor valor de ndice
en un mapa de color.
Atributo no incluido en imgenes binarias o de color verdadero.
at t r s = i mat t r i but es( i mgmodel ) devuelve informacin a cerca de la imagen
representada por el objeto modelo de imagen i mgmodel .
Ejemplos de uso
Ejemplo 1: Leer los atributos de una imagen en escala de grises.
h = i mshow( ' l i f t i ngbody. png' )
at t r s = i mat t r i but es( h)

at t r s =
' Wi dt h ( col umns) ' ' 512'
' Hei ght ( r ows) ' ' 512'
' Cl ass' ' ui nt 8'
' I mage t ype' ' i nt ensi t y'
' Mi ni mumi nt ensi t y' ' 0'
' Maxi mumi nt ensi t y' ' 255'

Funciones relacionadas
i magemodel

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 334 de 410
imbothat
Filtrado tipo bottom-hat
Introduccin
En morfologa matemtica y procesado digital de imgenes la transformada bottom-hat o
black top-hat (sombrero de copa negro), dual a la transformada white top-hat o top-hat
(sombrero de copa blanco), se define como la diferencia entre la clausura de una imagen
por un elemento estructurante (la coleccin de partes del fondo de la imagen que
corresponden con un elemento estructurante o patrn particular) y la imagen original. Es
una dilatacin seguida de una erosin.
Las transformadas top-hat se utilizan en numerosas tareas dentro del procesado digital de
imgenes como por ejemplo la extraccin de caractersticas, ecualizacin del fondo o
mejora de la imagen. En concreto, la transformada bottom-hat devuelve una imagen con
los objetos que son menores que el elemento estructurante y que son ms oscuros que sus
vecinos (se debe aumentar el tamao del elemento estructurante para extraer objetos
mayores). Es por tanto til para extraer pequeos objetos o detalles oscuros sobre fondo
claro y tambin para corregir la iluminacin desigual cuando el fondo es claro. Adems, se
puede mejorar el contraste de una imagen sumando la imagen original y la imagen filtrada
con top-hat y posteriormente restndole la imagen filtrada con bottom-hat.
[22] [23]

Sintaxis
I M2 = i mbot hat ( I M, SE)
I M2 = i mbot hat ( I M, NHOOD)
Descripcin
I M2 = i mbot hat ( I M, SE) realiza un filtrado tipo bottom-hat a la imagen binaria o en
escala de grises I M devolviendo la imagen filtrada I M2. El argumento SE es un elemento
estructurante como el devuelto por la funcin st r el . SE debe ser un elemento estructurante
individual, no un array de elementos.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 335 de 410
I M2 = i mbot hat ( I M, NHOOD) realiza un filtrado tipo bottom-hat donde NHOOD es un array
de 0's y 1's que especifica el tamao y forma del elemento estructurante. Esto equivale a
i mbot hat ( I M, st r el ( NHOOD) ) .
I M puede ser de clase numer i c o l ogi cal y debe ser no disperso. La imagen de salida ser
del mismo tipo que la de entrada. Si la entrada es binaria (l ogi cal ) el elemento
estructurante debe ser plano.
Ejemplos de uso
Ejemplo 1: Separar los objetos del fondo con filtrado bottom-hat, variando el tamao del
elemento estructurante en forma de disco. Observar cmo el fondo se hace uniforme.
I = i mr ead( ' cacao. t i f ' ) ; i mshow( I )
se = st r el ( ' di sk' , 3) ;
B1 = i mbot hat ( I , se) ; f i gur e, i mshow( B1)
se = st r el ( ' di sk' , 10) ;
B2 = i mbot hat ( I , se) ; f i gur e, i mshow( B2)
se = st r el ( ' di sk' , 30) ;
B3 = i mbot hat ( I , se) ; f i gur e, i mshow( B3)


Figura f.237 - Imagen original (I) sin procesar Figura f.238 - Imagen procesada (B1) con imbothat y
elemento estructurante disco de 3


Figura f.239 - Imagen procesada (B2) con imbothat
y elemento estructurante disco de 10
Figura f.240 - Imagen procesada (B3) con imbothat
y elemento estructurante disco de 30
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 336 de 410
Ejemplo 2: Quedarse solo con los crculos ms pequeos de la imagen.
I = i mr ead( ' punt os. t i f ' ) ; i mshow( I )
se = st r el ( ' di sk' , 14) ;
B = i mbot hat ( I , se) ; f i gur e, i mshow( B)


Figura f.241 - Imagen original (I) sin procesar Figura f.242 - Imagen procesada (B) con imbothat
Ejemplo 3: Aumentar el contraste de una imagen utilizando filtrado top-hat y bottom-hat.
I = i mr ead( ' espaci o. t i f ' ) ; i mshow( I )
se = st r el ( ' di sk' , 3) ;
T = i mt ophat ( I , se) ;
B = i mbot hat ( I , se) ;

%Aadi mos l a i magen or i gi nal I a l a i magen f i l t r ada t op- hat y despus l e
r est amos l a i magen f i l t r ada bot t om- hat par a aument ar l e el cont r ast e.

J = i msubt r act ( i madd( I , T) , B) ; f i gur e, i mshow( J )



Figura f.1 - Imagen original (I) sin procesar Figura f.243 - Imagen procesada (J) aumentndole el
contraste con imtophat e imbothat
Funciones relacionadas
i mt ophat , st r el
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 337 de 410
imclearborder
Eliminacin de estructuras suaves conectadas al borde de una imagen
Sintaxis
I M2 = i mcl ear bor der ( I M)
I M2 = i mcl ear bor der ( I M, conn)
Descripcin
I M2 = i mcl ear bor der ( I M) elimina estructuras que son ms suaves que sus vecinos y que
estn conectadas al borde de la imagen (til para limpiar el borde de la imagen). I M puede
ser una imagen binaria o en escala de grises. La imagen de salida I M2 ser igualmente
binaria o en escala de grises. La conectividad por defecto es 8 para dos dimensiones, 26
para tres dimensiones y conndef ( ndi ms( BW) , ' maxi mal ' ) para mayores dimensiones.
Nota: Para imgenes en escala de grises, i mcl ear bor der tiende a reducir el nivel
de intensidad general adems de suprimir estructuras de borde.
I M2 = i mcl ear bor der ( I M, conn) especifica la conectividad deseada. conn puede tener
cualquiera de los siguiente valores escalares (siempre simtrica respecto su elemento
central):
Valor Significado
Conectividades Bidimensionales
4
Vecindad de 4 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos y
conectados en vertical u horizontal.

Figura f.32 - vecindad 4
8
Vecindad de 8 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos.
(Por defecto)

Figura f.33 - vecindad 8
Conectividades Tridimensionales
6
Vecindad de 6 pxeles.
18
Vecindad de 18 pxeles.
26
Vecindad de 26 pxeles. (Por defecto)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 338 de 410
Nota: La conectividad se puede definir para cualquier dimensin de forma ms
general utilizando para conn una matriz de 3-por-3-por-...-por-3 de ceros y unos.
Los unos definen las localizaciones de los pxeles vecinos relativas al elemento
central de conn. Por ejemplo, conn = ones( 3) define una conectividad de 8
pxeles.
Puede que un pixel en el borde de una imagen no se considere un pixel del borde si se elige
una conectividad no por defecto. Por ejemplo, si conn = [ 0 0 0; 1 1 1; 0 0 0] , los
elementos en la primera y ltima fila no se considerarn pxeles de borde porque segn la
conectividad, no estn conectados a la regin de fuera de la imagen.
I M puede ser un array de tipo numer i c o l ogi cal de cualquier dimensin y debe ser no
disperso y real. I M2 ser de la misma clase que I M.
Ejemplos de uso
Ejemplo 1: Utilizar i mcl ear bor der con diferentes conectividades y analizar los
resultados partiendo del siguiente array.
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
Usando una conectividad de 4 elementos, el pixel en la posicin ( 5, 2) no se considera
conectado al pixel del borde ( 4, 1) , as que no se elimina.
BWc1 = i mcl ear bor der ( BW, 4)

BWc1 =
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
Usando una conectividad de 8 elementos, el pixel en la posicin ( 5, 2) se considera
conectado al pixel del borde ( 4, 1) , as que ambos se eliminan.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 339 de 410
BWc2 = i mcl ear bor der ( BW, 8)

BWc2 =
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
Funciones relacionadas
conndef

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 340 de 410
imclose
Cierre morfolgico o clausura de una imagen
Sintaxis
I M2 = i mcl ose( I M, SE)
I M2 = i mcl ose( I M, NHOOD)
Descripcin
I M2 = i mcl ose( I M, SE) cierra morfolgicamente la imagen binaria o en escala de grises
I M, devolviendo la imagen procesada I M2. El elemento estructurante SE debe ser
individual, no un array de objetos. La operacin morfolgica de cierre o clausura de una
imagen consiste una dilatacin seguida por una erosin usando el mismo elemento
estructurante en ambas operaciones.
I M2 = i mcl ose( I M, NHOOD) cierra la imagen utilizando el elemento estructurante
st r el ( NHOOD) , donde NHOOD es un array de 0's y 1's que especifican la vecindad o patrn
del elemento estructurante.
I M puede ser de cualquier clase numer i c o l ogi cal y de cualquier dimensin y debe ser no
disperso. Si I M es l ogi cal , entonces SE debe ser plano. I M2 ser de la misma clase que I M.
Ejemplos de uso
Ejemplo 1: Utilizar i mcl ose para unir los crculos de la imagen rellenando el hueco entre
ellos y suavizando los bordes exteriores.
I = i mr ead( ' ci r cul os. t i f ' ) ;
i mshow( I )

%Cr ear un el ement o est r uct ur ant e en f or ma de di sco par a pr eser var l a
nat ur al eza ci r cul ar del obj et o. Usamos un r adi o de 10 p xel es par a
consegui r r el l enar l os huecos, que si f uer an ms gr andes, habr a que
aument ar l o.

se = st r el ( ' di sk' , 10) ;
%Cer r ar l a i magen mor f ol gi cament e.
cl oseI = i mcl ose( I , se) ;
f i gur e, i mshow( cl oseI )

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 341 de 410

Figura f.244 - Imagen original (I) sin procesar Figura f.245 - Imagen procesada (closeI)
Funciones relacionadas
i mdi l at e, i mer ode, i mopen, st r el

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 342 de 410
imcolormaptool
Herramienta de seleccin de mapa de color
Sintaxis
i mcol or mapt ool
i mcol or mapt ool ( hcl i ent f i g)
hf i g = i mcol or mapt ool ( . . . )
Descripcin
La herramienta de seleccin del mapa de color es una herramienta interactiva de seleccin
del mapa de color que permite cambiar el mapa de color de una figura (la actual)
seleccionando el mapa de color de una lista de funciones o de variables en el espacio de
trabajo o introduciendo una expresin especfica.
i mcol or mapt ool abre la herramienta de seleccin del mapa de color en una nueva figura
que estar asociada con la figura destino.
i mcol or mapt ool ( hcl i ent f i g) abre la herramienta de seleccin del mapa de color
utilizando hcl i ent f i g como figura destino. hcl i ent f i g debe contener o una imagen en
escala de grises o una indexada.
hf i g = i mcol or mapt ool ( . . . ) devuelve un puntero a la herramienta de seleccin del
mapa de color en la variable hf i g.
Ejemplos de uso
Ejemplo 1: Abrir la herramienta de seleccin de mapa de color despus de abrir una
imagen.
h = f i gur e;
i mshow( ' camer aman. t i f ' )
i mcol or mapt ool ( h) ;
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 343 de 410


Figura f.179 - Imagen (cameraman.tif) Figura f.246 - Herramienta de seleccin de mapa de
color
Funciones relacionadas
col or map, i mshow, i mt ool

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 344 de 410
imcomplement
Imagen complementaria
Sintaxis
I M2 = i mcompl ement ( I M)
Descripcin
I M2 = i mcompl ement ( I M) calcula la imagen complementaria de la imagen I M. I M puede
ser una imagen binaria, en escala de grises, o RGB. I M2 ser de la misma clase y tamao
que I M.
En la imagen complementaria de una imagen binaria, los ceros se convierten en unos y los
unos en ceros; los colores blanco y negro se invierten. En la imagen complementaria de
una imagen en escala de grises o RGB, cada valor de pixel se resta del mximo valor de
pixel posible debido a la clase de la imagen y la diferencia se usa como valor de pixel en la
imagen de salida. En este caso, las reas oscuras se convierten en reas ms claras en la
imagen de salida y las reas ms claras se convierten en ms oscuras.
Si I M es una imagen en escala de grises o RGB de clase doubl e, se puede usar la expresin
1- I M en vez de esta funcin. Si I M es una imagen binaria, se puede usar la expresin ~I M
en vez de esta funcin.
Ejemplos de uso
Ejemplo 1: Crear el complemento de un array de clase ui nt 8.
X = ui nt 8( [ 255 10 75; 44 225 100] ) ;
C = i mcompl ement ( X)

C =
0 245 180
211 30 155
Ejemplo 2: Crear la imagen complementaria de una imagen binaria (invirtiendo el negro y
el blanco).
I = i mr ead( ' ci r cul os. t i f ' ) ;
C = i mcompl ement ( I ) ;
i mshow( I )
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 345 de 410
f i gur e, i mshow( C)


Figura f.245 - Imagen original (I) sin procesar Figura f.247 - Imagen procesada (C) con
imcomplement
Ejemplo 3: Crear la imagen complementaria de una imagen en escala de grises.
I = i mr ead( ' camer aman. t i f ' ) ;
C = i mcompl ement ( I ) ;
i mshow( I )
f i gur e, i mshow( C)


Figura f.179 - Imagen original (I) sin procesar Figura f.248 - Imagen procesada (C) con
imcomplement
Funciones relacionadas
i mabsdi f f , i madd, i mdi vi de, i ml i ncomb, i mmul t i pl y, i msubt r act
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 346 de 410
imcontour
Dibujo del contorno de una imagen
Sintaxis
i mcont our ( I )
i mcont our ( I , n)
i mcont our ( I , v)
i mcont our ( x, y, . . . )
i mcont our ( . . . , Li neSpec)
[ C, handl e] = i mcont our ( . . . )
Descripcin
i mcont our ( I ) crea una nueva figura dibujando el contorno de la imagen en escala de
grises I y definiendo automticamente los ejes para que su orientacin y proporcin
coincidan con la imagen.
i mcont our ( I , n) crea una nueva figura dibujando el contorno de la imagen en escala de
grises I y definiendo automticamente los ejes para que su orientacin y proporcin
coincidan con la imagen. n es el nmero de niveles de contorno equiespaciados en la
figura; si se omite el argumento, el nmero de niveles y de valores de los niveles se eligen
automticamente.
i mcont our ( I , v) dibuja el contorno de I con lneas de contorno especificadas en el vector
v. El nmero de niveles de contorno es igual a l engt h( v) .
i mcont our ( x, y, . . . ) usa los vectores x e y para especificar los lmites en el eje x e y
respectivamente.
i mcont our ( . . . , Li neSpec) dibuja los contornos utilizando el tipo de lnea y color
especificados en la variable Li neSpec. Los smbolos marcadores se ignoran.
[ C, handl e] = i mcont our ( . . . ) devuelve la matriz de contorno C y un puntero a un
objeto hggroup.
La imagen de entrada puede ser de clase ui nt 8, ui nt 16, i nt 16, si ngl e, doubl e o
l ogi cal .
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 347 de 410
Ejemplos de uso
Ejemplo 1: Dibujar el contorno de una imagen.
I = i mr ead( ' ci r cui t o. t i f ' ) ;
i mshow( I )
f i gur e, i mcont our ( I , 3)


Figura f.249 - Imagen original (I) sin procesar Figura f.250 - Contorno de la imagen con imcontour
Funciones relacionadas
cl abel , cont our , Li neSpec

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 348 de 410
imcontrast
Herramienta de ajuste del contraste
Sintaxis
i mcont r ast
i mcont r ast ( h)
hf i gur e = i mcont r ast ( . . . )
Descripcin
i mcont r ast crea una herramienta para el ajuste interactivo del contraste en una figura
separada asociada con la imagen en escala de grises de la figura actual. Cuando se usa la
herramienta, i mcont r ast ajusta el contraste de la imagen mostrada modificando la
propiedad CLi m. Para modificar los valores de los pxeles de la imagen actual se debe hacer
clic en el botn Adjust Data (Ajustar datos). El botn no est disponible hasta que se
haga un cambio al contraste de la imagen.
Nota: La herramienta de ajuste del contraste puede manejar imgenes en escala de
grises de clase doubl e y si ngl e con rangos de datos ms all que el rango por
defecto, que en este caso es [ 0, 1] . i mcont r ast fija los lmites del histograma
rellenando las fronteras superior e inferior para que cubra el rango de datos de la
imagen.
i mcont r ast ( h) crea la herramienta de ajuste de contraste asociada con la imagen
especificada por el puntero h. h puede ser un puntero a una figura, eje u objeto de imagen.
Si h es un eje o puntero a una figura, i mcont r ast usa la primera imagen devuelta por
f i ndobj ( H, ' Type' , ' i mage' ) .
hf i gur e = i mcont r ast ( . . . ) devuelve un puntero a la herramienta de ajuste del
contraste.
Ejemplos de uso
Ejemplo 1: Abrir la herramienta de ajuste del contraste despus de abrir una imagen.
I = i mr ead( ' ci r cui t o. t i f ' ) ;
i mshow( I )
i mcont r ast

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 349 de 410


Figura f.249 - Imagen original (I) sin procesar Figura f.251 - Herramienta de ajuste del contraste
Funciones relacionadas
i madj ust , i mt ool , st r et chl i m

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 350 de 410
imcrop
Herramienta para el recorte de una imagen
Sintaxis
I = i mcr op
I 2 = i mcr op( I )
X2 = i mcr op( X, map)
I = i mcr op( h)
I 2 = i mcr op( I , r ect )
X2 = i mcr op( X, map, r ect )
[ . . . ] = i mcr op( x, y, . . . )
[ I 2 r ect ] = i mcr op( )
[ X, Y, I 2, r ect ] = i mcr op( )
Descripcin
I = i mcr op crea una herramienta interactiva para el recorte de una imagen asociada con la
imagen de la figura actual. La herramienta consiste en un rectngulo de seleccin que es
posible mover y redimensionar con el ratn para despus recortar esa zona. Cuando la
herramienta est activa, el puntero del ratn se convierte en una cruz al moverlo por la
imagen. Al finalizar la seleccin mediante el ratn, se debe hacer doble clic para recortar la
imagen por la seleccin o hacer clic en Crop Image (Recortar imagen) del men
contextual. i mcr op devuelve la imagen recortada. La siguiente figura muestra la
herramienta activa:

Figura f.252 - Herramienta de recorte de la imagen
La siguiente tabla describe las diferentes acciones posibles en la herramienta:

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 351 de 410
Accin Operacin
Cancelar lo hecho por
la herramienta.
Pulsar Retroceso, Escape o Suprimir, o hacer clic derecho
dentro del rectngulo de seleccin y pulsar Cancel dentro del
men contextual.
Nota: Al eliminar/cancelar la herramienta, la funcin
devuelve un valor vaco.
Redimensionar la
seleccin de la
imagen.
Poner el ratn encima de las lneas del rectngulo de seleccin, el
cursor cambiar de forma, hacer clic y desplazar para modificar
la seleccin.
Mover el rectngulo
de seleccin.
Mover el ratn dentro de la zona de seleccin hasta que el
puntero cambie a una forma de cruz, y mover el rectngulo
pinchando y desplazando.
Cambiar el color del
rectngulo de
seleccin.
Hacer clic derecho dentro del rectngulo y luego pulsar Set
Color (Elegir Color) del men contextual.
Recortar la imagen. Hacer doble clic con el botn izquierdo o un solo clic con el
botn derecho del ratn y luego seleccionar Crop Image
(Recortar imagen) en el men contextual.
Recibir las
coordenadas del
rectngulo de
seleccin.
Hacer clic derecho dentro del rectngulo de seleccin y
seleccionar Copy Position (Copiar posicin) en el men
contextual. i mcr op copia al portapapeles un vector de posicin de
cuatro elementos ([ xmi n ymi n wi dt h hei ght ] ).
I 2 = i mcr op( I ) muestra la imagen I en una nueva ventana y crea la herramienta de
recorte asociada con la imagen. I puede ser una imagen en escala de grises, una imagen de
color verdadero, o un array tipo l ogi cal . La imagen recortada devuelta, I 2, es del mismo
tipo que I .
X2 = i mcr op( X, map) muestra la imagen indexada X en una nueva ventana utilizando el
mapa de color map y creando la herramienta de recorte asociada con la imagen.
I = i mcr op( h) crea la herramienta de recorte asociada a la imagen apuntada por el
puntero h. h puede ser una imagen, eje, o puntero a una figura. Si h es un eje o puntero a
una figura, la herramienta de seleccin acta sobre la primera imagen encontrada en el
objeto contenedor.
Nota: Con estas sintaxis, la lnea de comandos de MATLAB se bloquea hasta que
se complete la accin con la herramienta.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 352 de 410
I 2 = i mcr op( I , r ect ) recorta la imagen I . r ect es un vector de posicin de cuatro
elementos [ xmi n ymi n wi dt h hei ght ] que especifica el tamao y posicin del
rectngulo de seleccin.
X2 = i mcr op( X, map, r ect ) recorta la imagen indexada X. map especifica el mapa de
color utilizado con la imagen X. r ect es un vector de posicin de cuatro elementos [ xmi n
ymi n wi dt h hei ght ] que especifica el tamao y posicin del rectngulo de seleccin.
[ . . . ] = i mcr op( x, y, . . . ) especifica un sistema de coordenadas no por defecto para la
imagen destino. x e y son vectores de dos elementos que especifican las propiedades XDat a
e YDat a.
[ I 2 r ect ] = i mcr op( ) devuelve el rectngulo de seleccin en la variable r ect , que es
un vector de posicin de cuatro elementos.
[ X, Y, I 2, r ect ] = i mcr op( ) devuelve x e y, vectores de dos elementos que especifican
las propiedades XDat a e YDat a de la imagen destino.
Si se especifica r ect como argumento de entrada, la imagen de entrada puede ser de tipo
numer i c o l ogi cal y debe ser real y no disperso. r ect es de clase doubl e.
Si no se especifica r ect como argumento de entrada, i mcr op llama a i mshow. i mshow
espera que I sea de clase l ogi cal , ui nt 8, ui nt 16, i nt 16, si ngl e o doubl e. La imagen
en color verdadero puede ser ui nt 8, i nt 16, ui nt 16, si ngl e o doubl e. X puede ser
l ogi cal , ui nt 8, ui nt 16, si ngl e o doubl e. La imagen de entrada debe ser real y no
dispersa.
Si se especifica una imagen como argumento de entrada, la imagen de salida ser de la
misma clase que la de entrada.
Si no se especifica una imagen como argumento de entrada, por ejemplo llamando a la
funcin i mcr op con ningn argumento de entrada o con un puntero, la imagen de salida
ser de la misma clase que la de entrada salvo para los tipos i nt 16 o si ngl e, en los que la
imagen de salida ser de clase doubl e.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 353 de 410
Nota: r ect es un vector de posicin de cuatro elementos [ xmi n ymi n wi dt h
hei ght ] que especifica el tamao y posicin del rectngulo de seleccin. Como
r ect se define en trminos de coordenadas espaciales, las variables wi dt h y
hei ght no siempre se corresponden exactamente con el tamao de la imagen de
salida. Por ejemplo, si r ect vale [ 20 20 40 30] , utilizando el sistema de
coordenadas por defecto, la esquina superior izquierda del rectngulo especificado
es el centro del pixel (20,20) y la esquina inferior derecha es el centro del pixel
(50,60). La imagen resultante de salida es de tamao 31-por-41, no de 30-por-40,
porque la imagen de salida incluye todos los pxeles de la imagen de entrada que
estn parcial o completamente encerrados por el rectngulo.
Ejemplos de uso
Ejemplo 1: Recortar una imagen y mostrar el recorte.
I = i mr ead( ' ci r cui t o. t i f ' ) ;
I 2 = i mcr op( I , [ 75 68 130 112] ) ;
i mshow( I )
f i gur e, i mshow( I 2)



Figura f.249 - Imagen original (I) sin procesar Figura f.253 - Imagen recortada (I2)
Funciones relacionadas
i mr ect , zoom

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 354 de 410
imdilate
Dilatacin de una imagen
Sintaxis
I M2 = i mdi l at e( I M, SE)
I M2 = i mdi l at e( I M, NHOOD)
I M2 = i mdi l at e( I M, SE, PACKOPT)
I M2 = i mdi l at e( . . . , SHAPE)
Descripcin
I M2 = i mdi l at e( I M, SE) dilata la imagen en escala de grises, binaria o binaria
empaquetada I M y devuelve la imagen dilatada I M2. El argumento SE es un elemento
estructurante (o un array de elementos estructurantes) como el devuelto por la funcin
st r el .
Si I M es de clase l ogi cal y el elemento estructurante es plano, i mdi l at e realiza una
dilatacin binaria; de cualquier otro modo, realiza una dilatacin en escala de grises. Si SE
es un array de elementos estructurantes, i mdi l at e realiza dilataciones mltiples de la
imagen de entrada, utilizando sucesivamente cada elemento estructurante en SE.
I M2 = i mdi l at e( I M, NHOOD) dilata la imagen I M, donde NHOOD es una matriz de 0's y 1's
que especifica la vecindad o patrn del elemento estructurante. Esto es equivalente a la
expresin i mdi l at e( I M, st r el ( NHOOD) ) . La funcin i mdi l at e determina el elemento
central de la vecindad como f l oor ( ( si ze( NHOOD) +1) / 2) .
I M2 = i mdi l at e( I M, SE, PACKOPT) o i mdi l at e( I M, NHOOD, PACKOPT) especifica si I M es
una imagen binaria empaquetada en la variable PACKOPT que puede tener cualquiera de los
siguientes valores:
Valor Descripcin
' i spacked'
I M se trata como una imagen binaria empaquetada igual que la
producida por bwpack. I M debe ser un array bidimensional de clase
ui nt 32 y SE debe ser un elemento estructurante plano bidimensional. Si
el valor de PACKOPT es ' i spacked' , PADOPT debe ser ' same' .
' not packed'
I M se trata como si fuera un array normal. (Por defecto)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 355 de 410
I M2 = i mdi l at e( . . . , SHAPE) especifica el tamao de la imagen de salida en la variable
SHAPE, que puede tener cualquiera de los siguientes valores:
Valor Descripcin
' same'

Crea la imagen de salida con el mismo tamao que la de entrada. Si el
valor de PACKOPT es ' i spacked' , PADOPT debe ser ' same' .
(Por defecto)
' f ul l '
Calcula una dilatacin completa.
I M puede ser de clase l ogi cal o numer i c y debe ser real y no disperso. Puede tener
cualquier dimensin. Si I M es de clase l ogi cal , SE debe ser plano. La salida ser de la
misma clase que la entrada. Si la entrada es binaria empaquetada, entonces la salida ser
del mismo tipo.
Ejemplos de uso
Ejemplo 1: Dilatar una imagen binaria con una lnea vertical como elemento estructurante.
I = i mr ead( ' t ext o. t i f ' ) ;
se = st r el ( ' l i ne' , 11, 90) ;
I 2 = i mdi l at e( I , se) ;
i mshow( bw) , t i t l e( ' Or i gi nal ' )
f i gur e, i mshow( I 2) , t i t l e( ' Di l at ed' )


Figura f.80 - Imagen original (I) Figura f.254 - Imagen dilatada (I2) con imdilate
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 356 de 410
Ejemplo 2: Dilatar una imagen en escala de grises con una bola que rueda como elemento
estructurante (no se puede dilatar una imagen binaria con un elemento estructurante no
plano).
I = i mr ead( ' camer aman. t i f ' ) ;
se = st r el ( ' bal l ' , 5, 5) ;
I 2 = i mdi l at e( I , se) ;
i mshow( I )
f i gur e, i mshow( I 2)


Figura f.179 - Imagen original (I) Figura f.255 - Imagen dilatada (I2) con imdilate
Funciones relacionadas
bwpack, bwunpack, conv2, f i l t er 2, i mcl ose, i mer ode, i mopen, st r el

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 357 de 410
imdisplayrange
Herramienta para mostrar el rango de visualizacin de una imagen
Sintaxis
i mdi spl ayr ange
i mdi spl ayr ange( h)
i mdi spl ayr ange( hpar ent , hi mage)
hpanel = i mdi spl ayr ange( . . . )
Descripcin
i mdi spl ayr ange crea una herramienta en la figura actual que muestra el rango de
visualizacin de la imagen o imgenes de la figura.
La herramienta es un objeto tipo uipanel, posicionado en la esquina inferior derecha de la
figura, que muestra el rango de visualizacin con la cadena de texto Di spl ay r ange:
(Rango de visualizacin) seguida de los valores correspondientes al rango.
Para imgenes indexadas, binarias o de color verdadero, el rango de visualizacin no es
aplicable y se muestra vaco ([ ] ).
i mdi spl ayr ange( h) crea la herramienta para mostrar el rango en la figura especificada
por el puntero h, donde h es un puntero a una imagen, eje, objeto uipanel o figura. Los ejes,
objetos uipanel o figuras deben contener al menos una imagen.
i mdi spl ayr ange( hpar ent , hi mage) crea la herramienta para mostrar el rango donde
apunta hpar ent y muestra el rango de la imagen apuntada por hi mage. hi mage es un
puntero a una imagen o array de punteros a imgenes. hpar ent es un puntero a la figura u
objeto uipanel que contiene la herramienta.
hpanel = i mdi spl ayr ange( . . . ) devuelve un puntero al objeto con la herramienta que
muestra el rango de visualizacin.
Nota: para mostrar el rango de visualizacin de una imagen la herramienta puede
trabajar con mltiples imgenes en una figura pero se tendr que poner el cursor
encima de cada una de las imgenes de la figura para mostrar el rango de cada una
de ellas. Cuando no se posiciona el cursor encima de ninguna imagen la
herramienta muestra el rango [ bl ack, whi t e] .
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 358 de 410
Ejemplos de uso
Ejemplo 1: Mostrar una imagen y su rango de visualizacin.
i mshow( ' camer aman. t i f ' )
i mdi spl ayr ange;


Figura f.256 - Imagen con informacin de rango
Funciones relacionadas
i mt ool

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 359 de 410
imdistline
Herramienta de medida de distancia
Sintaxis
h = i mdi st l i ne
h = i mdi st l i ne( hpar ent )
h = i mdi st l i ne( . . . , x, y)
Descripcin
h = i mdi st l i ne crea una herramienta de medida de distancia en los ejes actuales. La
funcin devuelve h, un puntero a un objeto tipo i mdi st l i ne.
La herramienta de medida de distancia consiste en una lnea desplazable, que se superpone
con los ejes, y que mide la distancia entre sus dos puntos finales. La herramienta muestra la
distancia medida en un texto sobreimpresionado encima de la lnea. La herramienta
especifica la distancia en la unidad de medida definida en las propiedades XDat a e YDat a y
que es de pxeles por defecto.
Para mover la herramienta se debe posicionar el ratn encima de la lnea hasta que el
cursor cambie de forma y despus hacer clic y desplazar. Para modificar el tamao de la
lnea se debe de mover el puntero del ratn a cualquiera de los dos puntos finales de la
lnea, hacer clic y desplazar el punto. Tambin se pueden controlar distintos aspectos del
funcionamiento y de la apariencia de la herramienta a travs del men contextual que
aparece haciendo clic derecho con el ratn encima de la lnea de la herramienta.
h = i mdi st l i ne( hpar ent ) crea una herramienta de medida de la distancia en el objeto
especificado por hpar ent , tpicamente un objeto con ejes pero puede ser cualquier objeto
del tipo hggroup.
h = i mdi st l i ne( . . . , x, y) crea una herramienta de medida de la distancia con los
puntos finales de la lnea localizados en las posiciones especificadas por los vectores x e y,
donde x = [ x1 x2] e y =[ y1 y2] .
Las funciones del men contextual de la herramienta se describen a continuacin:
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 360 de 410
Accin Operacin
Exportar los datos de final de lnea y
distancia al espacio de trabajo.
Seleccionar Export to Workspace
Mostrar u ocultar la etiqueta de distancia. Seleccionar Show Distance Label
Especificar restricciones para el
desplazamiento horizontal y vertical.
Seleccionar Constrain Drag
Cambiar el color de la lnea. Seleccionar Set Color
Eliminar el objeto de distancia. Seleccionar Delete
La herramienta de medida de distancia contiene una API (Application Programming
Interface, Interfaz de programacin de aplicaciones) o conjunto de funciones internas que
se pueden utilizar para obtener y controlar diferentes aspectos de la herramienta. Para
poder utilizar estas funciones se debe recibir la estructura asociada a las funciones
utilizando la funcin i pt get api a la que se le pasa un puntero h a la herramienta de
medida de distancia de la siguiente manera:
api = i pt get api ( h)
La siguiente tabla muestra las funciones disponibles en la API de la herramienta:
Funcin Descripcin
get Di st ance
Devuelve la distancia entre los extremos de la lnea de la
herramienta.
di st = get Di st ance( )
El valor devuelto est en las unidades definidas por las
propiedades XData e YData y ser en pxeles por
defecto.
get Angl eFr omHor i zont al
Devuelve el ngulo en grados entre la lnea definida por
la herramienta y el eje horizontal. El ngulo devuelto
estar entre 0 y 180 grados.
angl e = get Angl eFr omHor i zont al ( )
set Label Text For mat t er
Especifica la cadena de texto utilizada para mostrar la
distancia de un modo esperado por la funcin spr i nt f .
set Label Text For mat t er ( st r )
get Label Text For mat t er
Recoge un array de caracteres que especifica la cadena
de texto utilizada para mostrar la distancia de un modo
esperado por la funcin spr i nt f .
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 361 de 410
st r = get Label Text For mat t er ( )
set Label Vi si bl e
Especifica la visibilidad del texto de la herramienta.
set Label Vi si bl e( h, TF)
h es la herramienta de medida de distancia. TF es un
escalar lgico. Cuando el texto de la herramienta es
visible, TF es verdadero. Cuando es invisible, TF es falso.
get Label Vi si bl e
Lee la visibilidad del texto de la herramienta.
TF = get Label Vi si bl e( h)
h es la herramienta de medida de distancia. TF es un
escalar lgico. Cuando el texto de la herramienta es
visible, TF es verdadero. Cuando es invisible, TF es falso.
set Posi t i on
Especifica la posicin de los puntos finales de la lnea de
la herramienta.
set Posi t i on( X, Y)
set Posi t i on( [ X1 Y1; X2 Y2] )
get Posi t i on
Devuelve la posicin de los puntos finales de la lnea de
la herramienta.
pos = get Posi t i on( )
pos es un array de 2-por-2 [X1 Y1; X2 Y2].
del et e
Elimina la herramienta asociada con la API.
del et e( )
set Col or
Especifica el color utilizado en la lnea de la herramienta.
set Col or ( new_col or )
new_col or puede ser un vector de tres elementos que
especifica un color RGB, o una cadena de texto que
especifica los nombres de un color predefinido, como el
blanco con ' whi t e' o ' w' .
get Col or
Lee el color utilizado para dibujar el objeto h.
col or = get Col or ( h)
col or es un vector de tres elementos que especifica un
color RGB.
addNewPosi t i onCal l back
Aade el puntero a la funcin f cn a la lista de funciones
de rellamada o callback de nueva posicin (se las
llamar cada vez que se cambie la posicin del objeto
con la posicin como argumento).
i d = addNewPosi t i onCal l back( f cn)
Siempre que la herramienta cambie su posicin, se
llamar a cada funcin en la lista con la siguiente
sintaxis:
f cn( pos)
pos es un array de 2-por-2 [X1 Y1; X2 Y2].
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 362 de 410
El valor devuelto i d, se utiliza solo con
r emoveNewPosi t i onCal l back.
r emoveNewPosi t i onCal l back
Elimina la funcin correspondiente de la lista de
funciones de rellamada o callback de nueva posicin.
r emoveNewPosi t i onCal l back( i d)
i d es el identificador devuelto por
addNewPosi t i onCal l back.
set Posi t i onConst r ai nt Fcn
Hace que la funcin de restriccin de posicin sea la
especificada por el puntero f cn. Utilizar esta funcin
para controlar dnde puede moverse y redimensionarse
la herramienta.
set Posi t i onConst r ai nt Fcn( f cn)
Siempre que la herramienta se mueva o se redimensione,
se llamar a la funcin de restriccin con la siguiente
sintaxis.
const r ai ned_posi t i on = f cn( new_posi t i on)
new_posi t i on es un array de 2-por-2 [X1 Y1; X2 Y2].
get Posi t i onConst r ai nt Fcn
Devuelve el puntero a la funcin de restriccin actual.
f cn = get Dr agConst r ai nt Fcn( )
Ejemplos de uso
Ejemplo 1: Insertar la herramienta de medida de distancia en una imagen. Utilizar la
funcin makeConst r ai nToRect Fcn para especificar una funcin de restriccin de
desplazamiento que evite desplazar la herramienta fuera de los lmites de la imagen.
f i gur e, i mshow( ' camer aman. t i f ' )
h = i mdi st l i ne( gca) ;

%Accedemos a l a API de l a her r ami ent a.

api = i pt get api ( h) ;
f cn = makeConst r ai nToRect Fcn( ' i ml i ne' , get ( gca, ' XLi m' ) , get ( gca, ' YLi m' ) ) ;
api . set Dr agConst r ai nt Fcn( f cn) ;

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 363 de 410

Figura f.257 - Imagen con la herramienta de medida de distancia
Funciones relacionadas
i pt get api , makeConst r ai nToRect Fcn
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 364 de 410
imdivide
Divisin de una imagen entre otra o entre una constante
Sintaxis
Z = i mdi vi de( X, Y)
Descripcin
Z = i mdi vi de( X, Y) divide cada elemento del array X entre el elemento correspondiente
del array Y y devuelve el resultado en el array de salida Z. X e Y son arrays numricos
reales, no dispersos y siempre con el mismo tamao y clase salvo cuando Y es un escalar
tipo doubl e. Z tendr el mismo tipo y clase que X e Y.
Si X es un array de enteros, se truncarn los elementos en la salida que excedan el rango de
los enteros, y se redondearn los valores fraccionarios.
Ejemplos de uso
Ejemplo 1: Dividir dos arrays de clase ui nt 8. Notar que los valores fraccionarios se
redondean al entero ms cercano.
X = ui nt 8( [ 255 10 75; 44 225 100] ) ;
Y = ui nt 8( [ 50 20 50; 50 50 50 ] ) ;
Z = i mdi vi de( X, Y)

Z =
5 1 2
1 5 2
Ejemplo 2: Dividir una imagen por una constante.
I = i mr ead( ' ci r cui t o. t i f ' ) ;
J = i mdi vi de( I , 2) ;
i mshow( I )
f i gur e, i mshow( J )

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 365 de 410

Figura f.249 - Imagen original (I) sin procesar Figura f.258 - Imagen dividida por constante (J)
Ejemplo 3: Dividir una imagen por su fondo estimado.
I = i mr ead( ' ci r cui t o. t i f ' ) ;
backgr ound = i mopen( I , st r el ( ' di sk' , 15) ) ;
J = i mdi vi de( I , backgr ound) ;
i mshow( J , [ ] )
f i gur e, i mshow( I )


Figura f.249 - Imagen original (I) sin procesar Figura f.259 - Imagen dividida por fondo (J)
Funciones relacionadas
i mabsdi f f , i madd, i mcompl ement , i ml i ncomb, i mmul t i pl y, i msubt r act , i ppl

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 366 de 410
imellipse
Creacin de una elipse desplazable
Sintaxis
h = i mel l i pse
h = i mel l i pse( hpar ent )
h = i mel l i pse( hpar ent , posi t i on)
H = i mel l i pse( . . . , par am1, val 1, . . . )
Descripcin
h = i mel l i pse posiciona una elipse desplazable en los ejes actuales. La funcin devuelve
h, un puntero a un objeto i mel l i pse. La elipse tiene un men contextual asociado con ella
que controla aspectos de su visualizacin y comportamiento y que se activa haciendo clic
derecho sobre su contorno.
h = i mel l i pse( hpar ent ) posiciona una elipse desplazable en el objeto especificado por
hpar ent , que normalmente es un eje pero puede ser cualquier otro objeto perteneciente al
grupo hggroup.
h = i mel l i pse( hpar ent , posi t i on) posiciona una elipse desplazable en objeto
especificado por hpar ent . posi t i on es un vector de cuatro elementos que especifica la
localizacin inicial de la elipse en trminos de un rectngulo circundante. posi t i on tiene
la estructura [ xmi n ymi n wi dt h hei ght ] .
H = i mel l i pse( . . . , par am1, val 1, . . . ) crea una elipse desplazable, especificando
parmetros sus valores correspondientes para controlar el comportamiento de la elipse. La
siguiente tabla muestra los parmetros posibles. Los nombres de los parmetros se pueden
abreviar y no son sensibles a las maysculas:
Parmetro Valor
' Posi t i onConst r ai nt Fcn'
Puntero a una funcin de restriccin de posicin que se
llama cuando se desplaza el ratn. Se puede usar esta
herramienta para desplazar la elipse.
Si se utiliza i mel l i pse en una imagen y no se especifica
una funcin de restriccin de posicin, los usuarios podrn
desplazar la elipse fuera de los lmites de la imagen y
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 367 de 410
perder la elipse. Cuando los ejes se crean con la funcin
pl ot se expanden automticamente para acomodar el
movimiento de la elipse.
Cuando se llama a la funcin i mel l i pse con una sintaxis interactiva, el puntero del ratn
tendr la forma de una cruz cuando se est encima de la imagen. Se deber hacer clic y
desplazar el ratn para crear la elipse con el tamao deseado. Una vez creada, se podr
desplazar poniendo el cursor encima de ella, haciendo clic y desplazando. Si se hace clic
derecho encima de ella aparecer el men contextual que permite seleccionar diferentes
opciones de visualizacin y comportamiento.
La siguiente tabla muestra las acciones interactivas que se pueden realizar con la
herramienta i mel l i pse.
Accin Operacin
Mover la elipse. Mover el puntero del ratn dentro de la elipse. El puntero
cambiar a forma de cruz. Hacer clic y desplazar el ratn para
mover la elipse.
Redimensionar la elipse. Mover el puntero del ratn encima de los cuadrados de
redimensin de la elipse. El puntero tendr forma de flecha.
Hacer clic y desplazar el ratn para mover la elipse.
Cambiar el color de la
elipse.
Mover el puntero del ratn dentro de la elipse. Hacer clic
derecho y seleccionar Set Color (Establecer color) del men
contextual.
Leer la posicin actual
de la elipse.
Mover el puntero del ratn dentro de la elipse. Hacer clic
derecho y seleccionar Copy Position (Copiar posicin) del
men contextual. i mel l i pse copia al portapapeles un vector de
posicin de cuatro elementos [xmin ymin width height].
Mantener las
proporciones de la
elipse al
redimensionarla.
Mover el puntero del ratn dentro de la elipse. Hacer clic
derecho y seleccionar Fix Aspect Ratio (Mantener
proporciones) del men contextual.
Cada objeto i mel l i pse soporta una serie de mtodos que pueden verse mediante el
comando met hods i mel l i pse y que se listan a continuacin:
addNewPosi t i onCal l back
Aade una funcin a la lista de funciones de rellamada o callback de nueva posicin (se
las llamar cada vez que se cambie la posicin del objeto ROI (Region-of-interest) con la
posicin como argumento).
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 368 de 410
cr eat eMask
Crea una mscara dentro de la imagen.

del et e
Elimina el objeto ROI.

get Col or
Lee el color utilizado para dibujar el objeto ROI.

get Posi t i on
Lee la posicin actual de la elipse.

get Posi t i onConst r ai nt Fcn
Devuelve el puntero a la funcin de restriccin de posicin actual.

get Ver t i ces
Devuelve los vrtices de la elipse.

r emoveNewPosi t i onCal l back
Elimina la funcin de rellamada o callback de nueva posicin del objeto ROI.

r esume
Contina la ejecucin de la lnea de comandos.

set Col or
Especifica el color utilizado para dibujar el objeto ROI.

set Const r ai nedPosi t i on
Especifica la nueva posicin del objeto ROI.

set Fi xedAspect Rat i oMode
Mantiene las proporciones cuando se redimensiona el objeto.

set Posi t i on
Especifica la nueva posicin de la elipse.

set Posi t i onConst r ai nt Fcn
Especifica la funcin de restriccin de posicin del objeto ROI.

set Resi zabl e
Activa el redimensionado de la elipse.

wai t
Bloquea la ejecucin de la lnea de comandos hasta que se finaliza el posicionamiento del
objeto ROI.

Los comandos anteriores se ejecutan sobre h, el puntero al objeto i mel l i pse.
Ejemplos de uso
Ejemplo 1: Crear una elipse utilizando rellamadas o callbacks para visualizar su posicin
actualizada en el ttulo de la figura. El ejemplo muestra cmo utilizar la funcin
makeConst r ai nToRect Fcn para mantener la elipse en los lmites de rango xl i me yl i m.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 369 de 410
f i gur e, i mshow( ' camer aman. t i f ' )

%Cr eaci n de l a el i pse en l a posi ci n especi f i cada.

h = i mel l i pse( gca, [ 10 10 200 200] ) ;

%Aadi r l a f unci n t t ul o a l a l i st a de f unci ones de r el l amada par a
nuevas posi ci ones, par a que al mover l a el i pse a una nueva posi ci n se
l l ame a di cha f unci n t t ul o con l a posi ci n como ar gument o, l o que har
most r ar en el obj et o l a posi ci n como t t ul o.

addNewPosi t i onCal l back( h, @( p) t i t l e( mat 2st r ( p, 3) ) ) ;

%Rest r i ngi r el r ango de despl azami ent o de l a el i pse a l os l mi t es.

f cn =
makeConst r ai nToRect Fcn( ' i mel l i pse' , get ( gca, ' XLi m' ) , get ( gca, ' YLi m' ) ) ;
set Posi t i onConst r ai nt Fcn( h, f cn) ;


Figura f.260 - Imagen con elipse y su posicin
Funciones relacionadas
i mf r eehand, i ml i ne, i mpoi nt , i mpol y, i mr ect , i mr oi , i pt get api ,
makeConst r ai nToRect Fcn


Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 370 de 410
imerode
Erosin de una imagen
Sintaxis
I M2 = i mer ode( I M, SE)
I M2 = i mer ode( I M, NHOOD)
I M2 = i mer ode( . . . , PACKOPT, M)
I M2 = i mer ode( . . . , SHAPE)
Descripcin
I M2 = i mer ode( I M, SE) erosiona la imagen en escala e grises, binaria o binaria
empaquetada I M, devolviendo la imagen erosionada I M2. El argumento SE es un elemento
estructurante o un array de elementos estructurantes devueltos por la funcin st r el .
Si I M es lgica y el elemento estructurante es plano, i mer ode realiza una erosin binaria;
de otra manera realiza una erosin en escala de grises. Si SE es un array de elementos
estructurantes, i mer ode realiza mltiples erosiones de la imagen de entrada utilizando
sucesivamente cada elemento estructurante de SE.
I M2 = i mer ode( I M, NHOOD) erosiona la imagen I M, donde NHOOD es un array de 0's y 1's
que especifica la vecindad o patrn del elemento estructurante. Esto es equivalente a la
sintaxis i mer ode( I M, st r el ( NHOOD) ) . La funcin i mer ode determina el elemento central
de la vecindad mediante f l oor ( ( si ze( NHOOD) +1) / 2) .
I M2 = i mer ode( . . . , PACKOPT, M) especifica si I M es una imagen binaria empaquetada y si
lo es, proporciona la dimensin o fila M de la imagen original desempaquetada. PACKOPT
puede ser cualquiera de los siguientes valores:
Valor Descripcin
' i spacked'
I Mse trata como una imagen binaria empaquetada, como la producida
con la funcin bwpack. I Mdebe ser un array bidimensional de clase
ui nt 32 y SE debe ser un elemento estructurante plano bidimensional.
Se debe especificar un valor paraM.
' not packed'
I Mse trata como un array normal. (Por defecto)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 371 de 410
I M2 = i mer ode( . . . , SHAPE) especifica el tamao de la imagen de salida. SHAPE puede ser
cualquiera de los siguientes valores:
Valor Descripcin
{' same' }
Crea la imagen de salida con el mismo tamao que la de entrada. Si el valor de
PACKOPT es ' i spacked' , SHAPE debe valer ' same' .
' f ul l '
Calcula la erosin completa.
I M puede ser numrica o lgica y puede ser de cualquier dimensin. Si I M es lgica y el
elemento estructurante es plano, la imagen de salida ser lgica. De otro modo la imagen
de salida ser de la misma clase que la imagen de entrada.
Ejemplos de uso
Ejemplo 1: Erosionar una imagen binaria con un disco como elemento estructurante.
I = i mr ead( ' ci r cul os. t i f ' ) ;
se = st r el ( ' di sk' , 11) ;
E = i mer ode( I , se) ;
i mshow( I ) , f i gur e, i mshow( E)


Figura f.245 - Imagen original (I) sin procesar Figura f.261 - Imagen erosionada (E) con imerode
Ejemplo 2: Erosionar una imagen en escala de grises con una bola que rueda como
elemento estructurante.
I = i mr ead( ' camer aman. t i f ' ) ;
se = st r el ( ' bal l ' , 5, 5) ;
E = i mer ode( I , se) ;
i mshow( I )
f i gur e, i mshow( E)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 372 de 410


Figura f.179 - Imagen original (I) sin procesar Figura f.262 - Imagen erosionada (E) con imerode
Funciones relacionadas
bwpack, bwunpack, conv2, f i l t er 2, i mcl ose, i mdi l at e, i mopen, st r el

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 373 de 410
imextendedmax
Transformada extendida mxima
Introduccin
La toolbox para el procesado de imgenes en MATLAB incluye varias funciones que se
pueden utilizar para encontrar reas de mayor o menor intensidad en una imagen. La
Transformada extendida mxima es una de esas funciones y es til para identificar grupos
de pxeles que tienen un valor de intensidad significativamente ms alto que el de sus
vecinos, o lo que es lo mismo, pxeles que son mximos regionales. Es por lo tanto una
funcin til en tcnicas de segmentacin de imgenes.
Un mximo (o mnimo) regional son un conjunto de pxeles conectados con un valor de
intensidad constante y cuyos vecinos tienen un valor inferior (o mayor). Por ejemplo, la
siguiente imagen cuenta con dos mximos regionales principales (bloques de pxeles de
valor 13 y 18) y varios mximos regionales inferiores de valor 11.
A =
10 10 10 10 10 10 10 10 10 10
10 13 13 13 10 10 11 10 11 10
10 13 13 13 10 10 10 11 10 10
10 13 13 13 10 10 11 10 11 10
10 10 10 10 10 10 10 10 10 10
10 11 10 10 10 18 18 18 10 10
10 10 10 11 10 18 18 18 10 10
10 10 11 10 10 18 18 18 10 10
10 11 10 11 10 10 10 10 10 10
10 10 10 10 10 10 11 10 10 10
Las funciones i mr egi onal max e i mr egi onal mi n identifican todos los mximos o mnimos
regionales respectivamente produciendo una imagen binaria de salida. Para la imagen
anterior, la imagen de salida tras aplicar la funcin de regional mxima sera la siguiente:
B = i mr egi onal max( A)

B =
0 0 0 0 0 0 0 0 0 0
0 1 1 1 0 0 1 0 1 0
0 1 1 1 0 0 0 1 0 0
0 1 1 1 0 0 1 0 1 0
0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 1 1 1 0 0
0 0 0 1 0 1 1 1 0 0
0 0 1 0 0 1 1 1 0 0
0 1 0 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 374 de 410
Para identificar reas de una imagen en donde el cambio de intensidad sea extremo, tal que
la diferencia entre el pixel y los pxeles vecinos sea mayor (o menor) que un cierto valor de
umbral especificado, se deben usar las funciones i mext endedmax e i mext endedmi n
(Transformada extendida mxima y mnima). Por ejemplo, para la imagen anterior, la
imagen binaria de salida para un umbral de 4 sera la siguiente:
B = i mext endedmax( A, 4)

B =
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
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 0 1 1 1 0 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

Si adems se quiere limitar la altura de los mximos o la profundidad de los mnimos
regionales a un cierto valor, se usan las funciones i mhmax e i mhmi n (Transformada H-
mxima y H-mnima) que eliminan cualquier mximo o mnimo regional en donde la
diferencia entre el pixel regional y los pxeles vecinos sea menor (o mayor) que un cierto
valor de umbral. Por ejemplo, para la imagen original A, la imagen de salida tras aplicar la
Transformada H-mxima con la funcin i mhmax utilizando un umbral de valor 4 sera la
siguiente:
B = i mhmax( A, 4)

B =
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 14 14 14 10 10
10 10 10 10 10 14 14 14 10 10
10 10 10 10 10 14 14 14 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
Se puede observar que la transformada extendida mxima es el mximo regional de la
transformada H-mxima.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 375 de 410
Sintaxis
BW= i mext endedmax( I , H)
BW= i mext endedmax( I , H, conn)
Descripcin
BW= i mext endedmax( I , H) calcula la transformada extendida mxima de la imagen I . H
es un escalar no negativo que especifica el umbral o diferencia que debe existir entre los
pxeles mximos regionales y los pxeles vecinos. Es una forma de identificar grupos de
pxeles que tienen un valor de intensidad significativamente ms alto que el de sus vecinos.
i mext endedmax utiliza por defecto vecindades de 8 pxeles para imgenes en 2-D y
vecindad de 26 pxeles para imgenes en 3-D. Para dimensiones mayores, i mext endedmax
utiliza la conectividad dada por conndef ( ndi ms( I ) , ' maxi mal ' ) .
BW= i mext endedmax( I , H, conn) calcula la transformada extendida mxima donde conn
especifica la conectividad y puede tener cualquiera de los siguientes valores escalares
(siempre simtrica respecto su elemento central):
Valor Significado
Conectividades Bidimensionales
4
Vecindad de 4 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos y
conectados en vertical u horizontal.

Figura f.32 - vecindad 4
8
Vecindad de 8 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos.
(Por defecto)

Figura f.33 - vecindad 8
Conectividades Tridimensionales
6
Vecindad de 6 pxeles.
18
Vecindad de 18 pxeles.
26
Vecindad de 26 pxeles. (Por defecto)
Nota: La conectividad se puede definir para cualquier dimensin de forma ms
general utilizando para conn una matriz de 3-por-3-por-...-por-3 de ceros y unos.
Los unos definen las localizaciones de los pxeles vecinos relativas al elemento
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 376 de 410
central de conn. Por ejemplo, conn = ones( 3) define una conectividad de 8
pxeles.
I puede ser de cualquier clase numrica no dispersa y de cualquier dimensin. BWtiene el
mismo tamao que I y es siempre de tipo lgico.
Ejemplos de uso
Ejemplo 1: Crear la mscara de una imagen.
I = i mr ead( ' gl ass. png' ) ;
i mshow( I )

BW= i mext endedmax( I , 80) ;
f i gur e, i mshow( BW)


Figura f.263 - Imagen original (I) sin procesar Figura f.264 - Imagen procesada (BW) con
imextendedmax
Ejemplo 2: Identificar los ncleos (zonas ms claras) de las clulas de la imagen utilizando
la Transformada extendida mxima comparando los diferentes resultados obtenidos al
variar el valor de umbral mximo.
I = i mr ead( ' cel ul as. png' ) ;

%Sacamos l os mxi mos r egi onal es si n umbr al .

r max = i mr egi onal max ( I ) ;
i mshow( I )

%Sacamos l os mxi mos r egi onal es con umbr al .

I 40 = i mext endedmax( I , 40) ;
I 60 = i mext endedmax( I , 60) ;

%Super ponemos l os r esul t ados en ver de sobr e l a i magen or i gi nal .

o1 = i mover l ay( I , r max, [ . 3 1 . 3] ) ;
o2 = i mover l ay( I , I 40, [ . 3 1 . 3] ) ;
o3 = i mover l ay( I , I 60, [ . 3 1 . 3] ) ;
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 377 de 410

f i gur e, i mshow( o1)
f i gur e, i mshow( o2)
f i gur e, i mshow( o3)


Figura f.265 - Imagen original (I) sin procesar Figura f.266 - Imagen (o1) con los mximos
regionales de I superpuestos


Figura f.267 - Imagen (o2) con los mximos
regionales de I con umbral 40 superpuestos
Figura f.268 - Imagen (o3) con los mximos
regionales de I con umbral 60 superpuestos
Funciones relacionadas
conndef , i mext endedmi n, i mhmax, i mr econst r uct , i mr egi onal max

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 378 de 410
imextendedmin
Transformada extendida mnima
Sintaxis
BW= i mext endedmi n( I , h)
BW= i mext endedmi n( I , h, conn)
Descripcin
BW= i mext endedmi n( I , h) calcula la transformada extendida mnima de la imagen I . h
es un escalar no negativo que especifica el umbral o diferencia que debe existir entre los
pxeles mnimos regionales y los pxeles vecinos. Es una forma de identificar grupos de
pxeles que tienen un valor de intensidad significativamente ms bajo que el de sus
vecinos. Para ms informacin consultar la pgina de la funcin complementaria
i mext endedmax.
i mext endedmi n utiliza por defecto vecindades de 8 pxeles para imgenes en 2-D y
vecindad de 26 pxeles para imgenes en 3-D. Para dimensiones mayores, i mext endedmi n
utiliza la conectividad dada por conndef ( ndi ms( I ) , ' maxi mal ' ) .
BW= i mext endedmi n( I , h, conn) calcula la transformada extendida mnima donde conn
especifica la conectividad y puede tener cualquiera de los siguientes valores escalares
(siempre simtrica respecto su elemento central):
Valor Significado
Conectividades Bidimensionales
4
Vecindad de 4 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos y
conectados en vertical u horizontal.

Figura f.32 - vecindad 4
8
Vecindad de 8 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos.
(Por defecto)

Figura f.33 - vecindad 8
Conectividades Tridimensionales
6
Vecindad de 6 pxeles.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 379 de 410
18
Vecindad de 18 pxeles.
26
Vecindad de 26 pxeles. (Por defecto)
Nota: La conectividad se puede definir para cualquier dimensin de forma ms
general utilizando para conn una matriz de 3-por-3-por-...-por-3 de ceros y unos.
Los unos definen las localizaciones de los pxeles vecinos relativas al elemento
central de conn. Por ejemplo, conn=ones( 3) define una conectividad de 8 pxeles.
I puede ser de cualquier clase numrica no dispersa y de cualquier dimensin. BWtiene el
mismo tamao que I y es siempre de tipo lgico.
Ejemplos de uso
Ejemplo 1: Crear la mscara de una imagen.
I = i mr ead( ' gl ass. png' ) ;
BW= i mext endedmi n( I , 50) ;
i mshow( I ) , f i gur e, i mshow( BW)


Figura f.263 - Imagen original (I) sin procesar Figura f.269 - Imagen procesada (BW) con
imextendedmin
Funciones relacionadas
conndef , i mext endedmax, i mhmi n, i mr econst r uct , i mr egi onal mi n

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 380 de 410
imfill
Relleno de regiones y huecos de una imagen
Sintaxis
BW2 = i mf i l l ( BW)
[ BW2, l ocat i ons] = i mf i l l ( BW)
BW2 = i mf i l l ( BW, l ocat i ons)
BW2 = i mf i l l ( BW, ' hol es' )
I 2 = i mf i l l ( I )
BW2 = i mf i l l ( BW, l ocat i ons, conn)
Descripcin
BW2 = i mf i l l ( BW) muestra en pantalla la imagen binaria BWy permite definir la regin a
rellenar interactivamente, especificando los puntos de la regin con el ratn. Para poder
usar esta herramienta interactiva BWdebe ser una imagen en 2-D. Se debe pulsar las teclas
de retroceso o borrado para eliminar el punto seleccionado. Pulsando la tecla Shift,
haciendo clic derecho o doble clic, se selecciona el punto final y se empieza la operacin
de relleno. Al pulsar la tecla Intro se termina la seleccin sin aadir ningn punto ms.
[ BW2, l ocat i ons] = i mf i l l ( BW) devuelve las localizaciones de los puntos seleccionados
(regin a rellenar) de forma interactiva en la variable l ocat i ons. Para utilizar esta sintaxis
BWdebe ser una imagen en 2-D.
BW2 = i mf i l l ( BW, l ocat i ons) rellena los pxeles de fondo de la imagen binaria BW
especificados en la variable l ocat i ons. l ocat i ons es un vector que puede contener el
ndice lineal de una serie de puntos que marcan la regin a rellenar o el ndice lineal de un
punto que marque dnde comenzar la operacin de relleno.
BW2 = i mf i l l ( BW, ' hol es' ) rellena los huecos en la imagen binaria BW. En esta sintaxis
un hueco es un conjunto de pxeles de fondo que no se pueden alcanzar rellenando el fondo
desde el borde de la imagen.
I 2 = i mf i l l ( I ) rellena los huecos en la imagen en escala de grises I . En esta sintaxis un
hueco es una zona de pxeles oscuros rodeada de pxeles ms claros.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 381 de 410
BW2 = i mf i l l ( BW, l ocat i ons, conn) rellena el rea definida por la variable l ocat i ons,
donde conn especifica la conectividad y puede tener cualquiera de los siguientes valores
escalares (siempre simtrica respecto su elemento central):
Valor Significado
Conectividades Bidimensionales
4
Vecindad de 4 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos y
conectados en vertical u horizontal.

Figura f.32 - vecindad 4
8
Vecindad de 8 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos.
(Por defecto)

Figura f.33 - vecindad 8
Conectividades Tridimensionales
6
Vecindad de 6 pxeles.
18
Vecindad de 18 pxeles.
26
Vecindad de 26 pxeles. (Por defecto)
Nota: La conectividad se puede definir para cualquier dimensin de forma ms
general utilizando para conn una matriz de 3-por-3-por-...-por-3 de ceros y unos.
Los unos definen las localizaciones de los pxeles vecinos relativas al elemento
central de conn. Por ejemplo, conn=ones( 3) define una conectividad de 8 pxeles.
i mf i l l utiliza por defecto una vecindad de 4 pxeles de fondo para entradas en 2-D y
vecindad de 6 pxeles de fondo para entradas en 3-D. Para dimensiones mayores, la
conectividad del fondo por defecto viene determinada por
conndef ( NUM_DI MS, ' mi ni mal ' ) . Se puede anular la conectividad por defecto con
cualquiera de las siguientes sintaxis:
BW2 = i mf i l l ( BW, l ocat i ons, conn)
BW2 = i mf i l l ( BW, conn, ' hol es' )
I 2 = i mf i l l ( I , conn)
Para anular la conectividad por defecto y adems especificar las localizaciones de partida
se debe utilizar la siguiente sintaxis:
BW2 = i mf i l l ( BW, 0, conn)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 382 de 410
La imagen de entrada puede tener cualquier dimensin, puede ser de clase numrica o
lgica y debe ser real y no dispersa. La imagen de salida ser de la misma clase que la de
entrada.
Ejemplos de uso
Ejemplo 1: Rellenar los huecos de una imagen binaria primero partiendo de una
localizacin determinada de uno de los pxeles hueco, luego aplicando un relleno
especificando todos los pxeles hueco y finalmente rellenando los huecos sin especificar
localizacin.
BW1 = l ogi cal ( [ 1 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0
1 0 0 0 1 0 1 0
1 0 0 0 1 1 1 0
1 1 1 1 0 1 1 1
1 0 0 1 1 0 1 0
1 0 0 0 1 0 1 0
1 0 0 0 1 1 1 0] )

%Rel l enamos l os huecos que se encuent r an conect ados con conect i vi dad 8
( en gr i s oscur o) especi f i cando uno de esos p xel es hueco ( en bl anco y
negr i t a) par a que desde ah r el l ene t odos l os huecos conect ados.

BW2 = i mf i l l ( BW1, [ 3 3] , 8)

BW1 =
1 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0
1 0 0 0 1 0 1 0
1 0 0 0 1 1 1 0
1 1 1 1 0 1 1 1
1 0 0 1 1 0 1 0
1 0 0 0 1 0 1 0
1 0 0 0 1 1 1 0

BW2 =
1 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0
1 1 1 1 1 0 1 0
1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1
1 0 0 1 1 1 1 0
1 0 0 0 1 1 1 0
1 0 0 0 1 1 1 0

%Rel l enamos l os huecos que se encuent r an conect ados con conect i vi dad 8
especi f i cando cada uno de el l os en l a var i abl e l ocat i ons.

l ocat i ons = [ 18; 19; 20; 26; 27; 28; 37; 46; 54] ;

BW2 = i mf i l l ( BW1, l ocat i ons, 8)

BW2 =
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 383 de 410
1 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0
1 1 1 1 1 0 1 0
1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1
1 0 0 1 1 1 1 0
1 0 0 0 1 1 1 0
1 0 0 0 1 1 1 0

%Rel l enamos l os huecos que se encuent r an conect ados con conect i vi dad 8
si n especi f i car el punt o de i ni ci o de r el l eno.

%Pr i mer o consi der ando que un hueco es un conj unt o de p xel es de f ondo
que no se pueden al canzar r el l enando el f ondo desde el bor de de l a
i magen. En est e caso no habr a huecos a r el l enar .

BW2 = i mf i l l ( BW1, 8)

BW2 =

1 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0
1 0 0 0 1 0 1 0
1 0 0 0 1 1 1 0
1 1 1 1 0 1 1 1
1 0 0 1 1 0 1 0
1 0 0 0 1 0 1 0
1 0 0 0 1 1 1 0

%Ahor a consi der ando que un hueco es un conj unt o de p xel es de f ondo
r odeados de p xel es bl ancos. En est e caso s habr a huecos a r el l enar .


BW2 = i mf i l l ( BW1, 8, ' hol es' )

BW2 =
1 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0
1 1 1 1 1 0 1 0
1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1
1 0 0 1 1 1 1 0
1 0 0 0 1 1 1 0
1 0 0 0 1 1 1 0
Ejemplo 2: Rellenar los huecos de una imagen binaria.
I = i mr ead( ' ci r cul oshueco. t i f ' ) ;
i mshow( I )

BW= i mf i l l ( I , ' hol es' ) ;
f i gur e, i mshow( BW)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 384 de 410

Figura f.270 - Imagen original (I) sin procesar Figura f.48 - Imagen procesada (BW) con imfill
Funciones relacionadas
bwsel ect , i mr econst r uct , r oi f i l l

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 385 de 410
imfilter
Filtrado espacial lineal de imgenes multidimensionales
Sintaxis
B = i mf i l t er ( A, H)
B = i mf i l t er ( A, H, opt i on1, opt i on2, . . . )
Descripcin
B = i mf i l t er ( A, H) filtra el array multidimensional A con el filtro multidimensional H.
El array A puede ser de tipo lgico o un array numrico no disperso de cualquier clase y
dimensin. B ser del mismo tamao y clase que A, luego i mf i l t er es ms eficiente que
otras operaciones de filtrado.
Cada elemento de la variable de salida B se calcula utilizando precisin doble. Si A es un
array de enteros o un array lgico, se truncarn los elementos de salida que excedan el
rango de los enteros y se redondearn los valores fraccionarios.
B = i mf i l t er ( A, H, opt i on1, opt i on2, . . . ) realiza un filtrado multidimensional de
acuerdo a las opciones especificadas, que pueden tomar los siguientes valores:
Opciones de frontera (determinan cmo ser el borde exterior de la imagen de salida)
Opcin Descripcin
X
Se asume que los valores del array de entrada fuera de las fronteras
exteriores (fuera de la imagen) tienen el valor X. Cuando no se especifica
ninguna opcin de frontera i mf i l t er usa X = 0, por lo que puede
aparecer un borde negro alrededor de la imagen de salida.
' symmet r i c'
Los valores de entrada que se encuentran fuera de las fronteras del array
se calculan reflejando el array a lo largo del borde del array.
' r epl i cat e'
Se asume que los valores de entrada que se encuentran fuera de las
fronteras del array equivalen al valor ms cercano al borde del array.
' ci r cul ar '
Los valores de entrada que se encuentran fuera de las fronteras del array
se calculan asumiendo que el array de entrada es peridico.


Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 386 de 410
Opciones de tamao de salida
Opcin Descripcin
' same'
El array de salida tendr el mismo tamao que el de entrada.
(Por Defecto)
' f ul l '
El array de salida es el resultado del filtrado completo, luego es mayor
que el array de entrada.
Opciones de correlacin y convolucin
Opcin Descripcin
' cor r '
i mf i l t er realiza un filtrado multidimensional utilizando correlacin, la
misma manera con la que la funcin f i l t er 2 realiza el filtrado.
(Por Defecto)
' conv'
i mf i l t er realiza un filtrado multidimensional utilizando convolucin.
Ejemplos de uso
Ejemplo 1: Observar cmo se produce una imagen no deseada cuando la imagen de salida
se convierte al tipo de imagen de entrada al filtrar una imagen.
I = i mr ead( ' cuadr os. t i f ' ) ; i mshow( I , [ ] )

%Cr eamos un f i l t r o l i neal senci l l o de 31 x 31 y f i l t r amos con i mf i l t er .

F = ones( 31) ;
I 2 = i mf i l t er ( I , F) ; f i gur e, i mshow( I 2, [ ] )


Figura f.271 - Imagen original (I) sin procesar Figura f.272 - Imagen procesada (I2) con imfilter con
los parmetros por defecto
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 387 de 410
Observamos como la imagen de salida no es la esperada, perdiendo datos. La razn es que
la suma de los coeficientes de la mscara no est en el rango [0, 1] lo que ocasiona unos
valores filtrados fuera del rango [0, 255] de las imgenes tipo ui nt 8. Para evitar esto se
deben normalizar los coeficientes de la mscara del filtro para que su suma est en el rango
[0, 1]. En el ejemplo anterior se hara dividiendo los coeficientes entre 31 x 31. Otra
opcin sera convertir la imagen de entrada a tipo doubl e, aunque en este caso tambin
podra ser necesario normalizar los valores posteriormente para guardar la imagen en un
formato de imagen apropiado. En el siguiente ejemplo se utiliza esta solucin.
Ejemplo 2: Comparar todas las opciones de frontera.
I = i mr ead( ' cuadr os. t i f ' ) ; i mshow( I , [ ] )
F = ones( 31) ;

%Escal amos l os dat os de ent r ada par a que no se pr oduzcan val or es f uer a
del r ango del t i po de i magen ui nt 8 que es [ 0, 255] .

I 2 = i m2doubl e( I ) ;

%Opci n por def ect o. Se r el l ena el bor de de l a i magen con cer os ( negr o) ,
l o que cr ea un bor de desenf ocado ent r e l a f r ont er a y l os cuadr ados
bl ancos.

I 3 = i mf i l t er ( I 2, F) ; f i gur e, i mshow( I 3, [ ] )

%Opci n ' r epl i cat e' que no pr oduce bor de desenf ocado ent r e l a f r ont er a y
l os cuadr ados bl ancos.

I 4 = i mf i l t er ( I 2, F, ' r epl i cat e' ) ; f i gur e, i mshow( I 4, [ ] )

%Opci n ' symmet r i c' .

I 5 = i mf i l t er ( I 2, F, ' symmet r i c' ) ; f i gur e, i mshow( I 5, [ ] )

%Opci n ' ci r cul ar ' que vuel ve a gener ar bor de desenf ocado ent r e l a
f r ont er a y l os cuadr ados bl ancos debi do al uso de l a per i odi ci dad, que
cr ea par t es negr as asyacent es a l as bl ancas.

I 6 = i mf i l t er ( I 2, F, ' ci r cul ar ' ) ; f i gur e, i mshow( I 6, [ ] )

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 388 de 410

Figura f.271 - Imagen original (I) sin procesar


Figura f.273 - Imagen procesada (I3) con imfilter
con los parmetros por defecto
Figura f.274 - Imagen procesada (I4) con imfilter
con frontera tiporeplicate


Figura f.275 - Imagen procesada (I5) con imfilter
con frontera tiposymmetric
Figura f.276 - Imagen procesada (I6) con imfilter
con frontera tipocircular
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 389 de 410
Ejemplo 2: Aplicar un filtro de movimiento a una imagen con las opciones por defecto y
despus utilizar la opcin de frontera r epl i cat e para eliminar el borde negro.
RGB = i mr ead( ' cher r y. j pg' ) ;
i mshow( RGB)

%Cr eamos un f i l t r o que si mul a el movi mi ent o l i neal de una cmar a.

h = f speci al ( ' mot i on' , 50, 45) ;

%Apl i camos el f i l t r o con l as opci ones por def ect o.

f RGB = i mf i l t er ( RGB, h) ;
f i gur e, i mshow( f RGB)

%Apl i camos el f i l t r o ut i l i zando una f r ont er a de r pl i ca par a evi t ar el
bor de negr o de l a i magen de sal i da.

bf RGB = i mf i l t er ( RGB, h, ' r epl i cat e' ) ;
f i gur e, i mshow( bf RGB)


Figura f.277 - Imagen original (RGB) sin procesar Figura f.278 - Imagen procesada (fRGB) con imfilter
con los parmetros por defecto

Figura f.279 - Imagen procesada (bfRGB)
con imfilter con frontera tiporeplicate
Funciones relacionadas
conv2, convn, f i l t er 2, f speci al , i ppl
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 390 de 410
imfreehand
Creacin de una regin a mano alzada
Sintaxis
h = i mf r eehand
h = i mf r eehand( hpar ent )
h = i mf r eehand( . . . , par am1, val 1, . . . )
Descripcin
h = i mf r eehand inicia la herramienta interactiva de creacin de una regin a mano alzada
en los ejes actuales de la figura. La funcin devuelve h, un puntero a un objeto
i mf r eehand. La regin a mano alzada se puede desplazar interactivamente utilizando el
ratn y dispone de un men contextual con acciones que controlan su apariencia y
comportamiento.
h = i mf r eehand( hpar ent ) inicia la herramienta interactiva de creacin de una regin a
mano alzada en el objeto especificado por la variable hpar ent , tpicamente unos ejes,
pudiendo ser tambin cualquier objeto hggr oup.
h = i mf r eehand( . . . , par am1, val 1, . . . ) crea la regin especificando parmetros y
valores que controlan su comportamiento. La siguiente tabla muestra los parmetros
disponibles. Los nombres de los parmetros se pueden abreviar y no son sensibles a las
maysculas:
Parmetro Descripcin
' Cl osed'
Valor escalar lgico que controla si la regin es cerrada o
no. Cuando es 1 (por defecto), i mf r eehand dibuja una
lnea recta para conectar los puntos finales de la lnea y
cerrar la regin. Si su valor es 0, i mf r eehand deja abierta
la regin.
' Posi t i onConst r ai nt Fcn'
Puntero a una funcin de restriccin de posicin que se
llama cuando la regin se desplaza interactivamente con el
ratn. Usar este parmetro para controlar dnde puede
moverse la regin.
Si se utiliza i mf r eehand en una imagen y no se especifica
una funcin de restriccin de posicin, los usuarios podrn
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 391 de 410
desplazar la elipse fuera de los lmites de la imagen y
perder la elipse. Cuando los ejes se crean con la funcin
pl ot se expanden automticamente para acomodar el
movimiento de la elipse.
Cuando se llama a i mf r eehand utilizando la sintaxis interactiva, el puntero del ratn
cambia a forma de cruz cuando se posiciona encima de la imagen. La regin se crea
haciendo clic con el ratn y desplazando el puntero. i mf r eehand dibuja por defecto una
lnea recta para unir los extremos de la regin y cerrar la regin. La siguiente tabla explica
las acciones ms comunes a realizar con la herramienta:
Accin Operacin
Mover la elipse. Mover el puntero del ratn dentro de la regin. El puntero
cambiar a forma de cruz. Hacer clic y desplazar el ratn para
mover la elipse.
Cambiar el color
usado para dibujar la
regin.
Mover el puntero del ratn dentro de regin, hacer clic derecho y
seleccionar Set Color (Establecer color) del men contextual.
Leer la posicin
actual de la regin.
Mover el puntero del ratn dentro de la regin. Hacer clic derecho
y seleccionar Copy Position (Copiar posicin) del men
contextual. i mf r eehand copia al portapapeles un array de
coordenadas de tamao n-por-2.
Cada objeto i mf r eehand soporta una serie de mtodos que pueden verse mediante el
comando met hods i mf r eehand y que se listan a continuacin:
addNewPosi t i onCal l back
Aade una funcin a la lista de funciones de rellamada o callback de nueva posicin (se
las llamar cada vez que se cambie la posicin del objeto ROI (Region-of-interest) con la
posicin como argumento).

cr eat eMask
Crea una mscara dentro de la imagen.

del et e
Elimina el objeto ROI.

get Col or
Lee el color utilizado para dibujar el objeto ROI.

get Posi t i on
Lee la posicin actual de la elipse.



Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 392 de 410
get Posi t i onConst r ai nt Fcn
Devuelve el puntero a la funcin de restriccin de posicin actual.

r emoveNewPosi t i onCal l back
Elimina la funcin de rellamada o callback de nueva posicin del objeto ROI.

r esume
Contina la ejecucin de la lnea de comandos.

set Cl osed( h, TF)
Especifica la geometra de la regin. TF es un escalar lgico que marca si la regin ser
cerrada (valor 1) o abierta (valor 0).

set Col or
Especifica el color utilizado para dibujar el objeto ROI.

set Const r ai nedPosi t i on
Especifica la nueva posicin del objeto ROI.

set Posi t i onConst r ai nt Fcn
Especifica la funcin de restriccin de posicin del objeto ROI.

wai t
Bloquea la ejecucin de la lnea de comandos hasta que se finaliza el posicionamiento del
objeto ROI.

Los comandos anteriores se ejecutan sobre h, el puntero al objeto i mf r eehand.
Ejemplos de uso
Ejemplo 1: Posicionar de forma interactiva una regin a mano alzada y utilizar el mtodo
wai t para bloquear la lnea de comandos de MATLAB hasta que se haga doble clic en la
regin (se finalice la seleccin).
f i gur e, i mshow( ' pout . t i f ' )
h = i mf r eehand;
posi t i on = wai t ( h) ;
Funciones relacionadas
i mel l i pse, i ml i ne, i mpoi nt , i mpol y, i mr ect , i pt get api ,
makeConst r ai nToRect Fcn

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 393 de 410
imgca
Obtencin del puntero a los ejes de la imagen
Sintaxis
h = i mgca
h = i mgca( hf i g)
Descripcin
h = i mgca devuelve el puntero a los ejes actuales de la imagen para poder luego actuar
sobre dichos ejes directamente utilizando otras funciones. Los ejes actuales pueden estar en
una figura o una ventana de la herramienta imagen. Si no hay figuras que contengan ejes
con imagen, i mgca crea unos nuevos ejes.
h = i mgca( hf i g) devuelve el puntero a los ejes actuales de la imagen de la figura
especificada (no hace falta que sea la figura actual).
Ejemplos de uso
Ejemplo 1: Hacer desaparecer los ejes de la figura actual y volver a hacerlos aparecer.
I = i mr ead( ' ci r cul os. t i f ' ) ;
i mshow( I )
h = i mgca;
set ( h, ' vi si bl e' , ' of f ' )
pause
set ( h, ' vi si bl e' , ' on' )
Ejemplo 2: Calcular el centroide de cada crculo de la imagen binaria y superponerlos
encima de cada crculo utilizando la funcin i mgca:
I = i mr ead( ' ci r cul os. t i f ' ) ;
i mshow( I )

%Obt enemos l os cent r oi des.

s = r egi onpr ops( I , ' cent r oi d' ) ;
cent r oi de = cat ( 1, s. Cent r oi d) ;

%Most r amos l a i magen or i gi nal en una nueva f i gur a con l os cent r oi des
super puest os.

i mt ool ( I )
hol d( i mgca, ' on' )
pl ot ( i mgca, cent r oi de( : , 1) , cent r oi de( : , 2) , ' r *' )
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 394 de 410
hol d( i mgca, ' of f ' )


Figura f.48 - Imagen original (I) sin procesar Figura f.280 - Imagen original con centroides
Funciones relacionadas
gca, gcf , i mgcf , i mhandl es

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 395 de 410
imgcf
Obtencin del puntero a la figura actual de la imagen
Sintaxis
hf i g = i mgcf
Descripcin
hf i g = i mgcf devuelve el puntero a la figura actual que contiene la imagen para poder
luego actuar sobre dicha figura directamente utilizando otras funciones. La figura puede
ser una figura normal con al menos una imagen o una ventana de la herramienta imagen. Si
ninguna de las figuras actuales abiertas contiene una imagen, i mgcf crea una nueva figura.
Ejemplos de uso
Ejemplo 1: Abrir una imagen en una ventana de la herramienta imagen y cambiar su mapa
de color utilizando la funcin i mgcf .
i mt ool r i ce. png
cmap = copper ( 256) ;
set ( i mgcf , ' Col or map' , cmap)
Funciones relacionadas
gca, gcf , i mgca, i mhandl es

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 396 de 410
imgetfile
Ventana para la lectura de la ruta de una imagen
Sintaxis
[ f i l ename, user _cancel ed] = i mget f i l e
Descripcin
[ f i l ename, user _cancel ed] = i mget f i l e muestra la ventana de apertura de una
imagen que permite seleccionar una imagen para leer su ruta completa en el espacio de
trabajo. Se pueden seleccionar los tipos comunes de imagen soportados en MATLAB y
especificados en i mf or mat s. Al seleccionar una imagen y hacer clic en el botn de Abrir,
i mget f i l e devuelve la ruta completa a la imagen en la variable f i l ename y la variable
user _cancel ed con valor FALSE. Si el usuario hace clic en el botn de Cancelar o cierra la
ventana, i mget f i l e devuelve una cadena vaca en la variable f i l ename y la variable
user _cancel ed con valor TRUE. Esta herramienta bloquea la lnea de comandos de
MATLAB mientras est en ejecucin.
Funciones relacionadas
i mf or mat s, i mt ool , ui get f i l e

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 397 de 410
imhandles
Lectura de todos los punteros a imagen asociados con un puntero grfico
Sintaxis
hi mage = i mhandl es( h)
Descripcin
hi mage = i mhandl es( h) recibe un puntero grfico h como entrada y devuelve todos los
punteros a imagen asociados con l. h puede ser un array de punteros a figuras, ejes,
imgenes u objetos uipanel. hi mage es un array de punteros a imgenes.
Ejemplos de uso
Ejemplo 1: Devolver el puntero a la imagen del eje actual.
f i gur e, i mshow( ' moon. t i f ' )
hi mage = i mhandl es( gca)
Ejemplo 2: Mostrar dos imgenes en una misma figura y utilizar i mhandl es para leer los
punteros a ambas imgenes.
subpl ot ( 1, 2, 1) , i mshow( ' aut umn. t i f ' )
subpl ot ( 1, 2, 2) , i mshow( ' gl ass. png' )
hi mages = i mhandl es( gcf )
Funciones relacionadas
i mgca, i mgcf

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 398 de 410
imhist
Creacin y visualizacin del histograma de una imagen
Introduccin
El histograma es un grfico que relaciona los niveles de intensidad de gris de una imagen y
el nmero de pxeles que hay para cada nivel de intensidad. El histograma, adems de
caracterizar la imagen, se puede utilizar tambin para la segmentacin de imgenes.
La funcin de la IPT para crear histogramas es i mhi st , pero para mostrar el histograma
(los datos devueltos por i mhi st ) existen tambin otras funciones que permiten tener ms
control sobre la representacin, como son: bar , st emo pl ot . Se compararn todas estas
funciones en un ejemplo posterior.
Sintaxis
i mhi st ( I )
i mhi st ( I , n)
i mhi st ( X, map)
[ count s, x] = i mhi st ( . . . )
Descripcin
i mhi st ( I ) muestra el histograma de la imagen I en escala de grises. El nmero de barras
y los intervalos de intensidad utilizados en el histograma dependen del tipo de imagen. Por
ejemplo si I es una imagen en escala de grises, i mhi st utiliza 256 barras e intervalos de
intensidad por defecto y si I es una imagen binaria, i mhi st utiliza dos. Podemos
normalizar el histograma mediante la expresin: i mhi st ( I ) / numel ( I ) .
i mhi st ( I , n) muestra el histograma donde n especifica el nmero de barras e intervalos
de intensidad utilizados en el histograma. Si I es una imagen binaria, n solo puede valer 2.
Por ejemplo, si especificamos n=2 para una imagen de clase uint8 (rango [0, 255])
estaremos creando dos rangos de intensidad: de 0 a 127 y de 128 a 255, por lo que el
histograma resultante devuelto por la funcin tendr dos valores nicamente: el primero
con un valor igual al nmero de pxeles en la imagen con valores en el intervalo [0, 127] y
el segundo igual pero para el intervalo [128, 255].
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 399 de 410
i mhi st ( X, map) muestra el histograma para la imagen indexada X. Este histograma
muestra la distribucin de los valores de los pxeles sobre una barra de color que usa el
mapa de color especificado en la variable map. El mapa de color debe de tener una longitud
de al menos el mayor ndice en X. El histograma tiene una barra e intervalo para cada
entrada en el mapa de color.
[ count s, x] = i mhi st ( . . . ) devuelve los valores del histograma en la variable count s y
las localizaciones de las barras e intervalos en x para su posterior uso, por ejemplo para
visualizarlo con las funciones bar , st emo pl ot (p.ej. st em( x, count s) ). Para imgenes
indexadas, i mhi st devuelve los valores del histograma para cada entrada del mapa de
color; la longitud de count s es la misma que la longitud del mapa de color.
Si la imagen de entrada es de intensidades puede ser de clase ui nt 8, ui nt 16, i nt 16,
si ngl e, doubl e o l ogi cal . Si la imagen de entrada es indexada puede ser de clase ui nt 8,
ui nt 16, si ngl e, doubl e o l ogi cal .
Nota: Puede que el mximo valor en el eje-y se reduzca automticamente. Para
mostrar el rango completo del eje se debe de llamar a i mhi st con la siguiente
sintaxis:
[ count s, x] = i mhi st ( . . . )
st em( x, count s)
Ejemplos de uso
Ejemplo 1: Mostrar el histograma de una imagen uint8 (intervalo [0, 255]) con la funcin
i mhi st , primero con el nmero de barras e intervalos por defecto y luego reducindolos a
16 y luego a 8.
I = i mr ead( ' camer aman. t i f ' ) ;

i mhi st ( I )
f i gur e, i mhi st ( I , 16)
f i gur e, i mhi st ( I , 8)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 400 de 410

Figura f.179 - Imagen original (I) Figura f.281 - Histograma por defecto de I


Figura f.282 - Histograma de I con 16 intervalos Figura f.283 - Histograma de I con 8 intervalos
Ejemplo 1: Comparar los histogramas visualizados mediante las funciones i mhi st , bar ,
st emy pl ot .
I = i mr ead( ' camer aman. t i f ' ) ;

%Pr i mer o cr eamos, guar damos y most r amos el hi st ogr ama con i mhi st .

[ count s, x] = i mhi st ( I ) ;
i mhi st ( I )

%Vi sual i zamos el hi st ogr ama con l a f unci n bar : bar ( hor z, v) .
%v cont i ene l os punt os que se r epr esent ar n.
%hor z es del mi smo t amao que v y t i ene l os i ncr ement os hor i zont al es.
%Se suel e r educi r l a r esol uci n hor i zont al par a di f er enci ar l as bar r as.
%En nuest r o caso cr eamos gr upos de 10 val or es. Par a most r ar t odos l os
val or es se debe ut i l i zar di r ect ament e l a var i abl e x en vez de hor z.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 401 de 410

h2 = count s( 1: 10: 256) ;
hor z = 1: 10: 256;
f i gur e, bar ( hor z, h2)

%Le damos a l a f i gur a el mi smo r ango en el ej e x que en l a f unci n
i mhi st y ampl i amos el ej e y par a poder vi sual i zar mej or l os val or es.

axi s ( [ 0 255 0 15000] )

set ( gca, ' xt i ck' , 0: 50: 255) %Val or es mar cados en el ej e x.
set ( gca, ' yt i ck' , 0: 2000: 15000) %Val or es mar cados en el ej e y.

%Vi sual i zamos el hi st ogr ama con l a f unci n st em.

f i gur e, st em( x, count s) %Most r amos t odos l os val or es.
axi s ( [ 0 255 0 15000] )
set ( gca, ' xt i ck' , 0: 50: 255)
set ( gca, ' yt i ck' , 0: 2000: 15000)

%Vi sual i zamos el hi st ogr ama con l a f unci n pl ot .

f i gur e, pl ot ( count s)
axi s ( [ 0 255 0 15000] )
set ( gca, ' xt i ck' , 0: 50: 255)
set ( gca, ' yt i ck' , 0: 2000: 15000)


Figura f.284 - Histograma de I con hist Figura f.285 - Histograma de I con bar


Figura f.286 - Histograma de I con stem Figura f.287 - Histograma de I con plot
Funciones relacionadas
adapt hi st eq, hi st eq, hi st

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 402 de 410
imhmax
Transformada H-mxima
Introduccin
Un mximo (o mnimo) regional son un conjunto de pxeles conectados con un valor de
intensidad constante y cuyos vecinos tienen un valor inferior (o mayor). Su altura (o
profundidad) es la diferencia de valor. Por ejemplo, la siguiente imagen cuenta con dos
mximos regionales principales (bloques de pxeles de valor 13 y 18) y varios mximos
regionales inferiores de valor 11 con alturas de 3, 8 y 1 respectivamente.
A =
10 10 10 10 10 10 10 10 10 10
10 13 13 13 10 10 11 10 11 10
10 13 13 13 10 10 10 11 10 10
10 13 13 13 10 10 11 10 11 10
10 10 10 10 10 10 10 10 10 10
10 11 10 10 10 18 18 18 10 10
10 10 10 11 10 18 18 18 10 10
10 10 11 10 10 18 18 18 10 10
10 11 10 11 10 10 10 10 10 10
10 10 10 10 10 10 11 10 10 10
Si se quiere limitar la altura de los mximos o la profundidad de los mnimos regionales a
un cierto valor, se usan las funciones i mhmax e i mhmi n (Transformada H-mxima y H-
mnima), que eliminan cualquier mximo o mnimo regional en donde la diferencia entre el
pixel regional y los pxeles vecinos sea menor (o mayor) que un cierto valor de umbral.
Sintaxis
I 2 = i mhmax( I , h)
I 2 = i mhmax( I , h, conn)
Descripcin
I 2 = i mhmax( I , h) elimina cualquier mximo regional en la imagen de intensidades I en
donde la diferencia entre el mximo regional y los pxeles vecinos (altura) sea menor que
un cierto valor de umbral h. Se reducirn los mximos regionales existentes que tengan una
diferencia mayor que la especificada en el umbral para que su diferencia coincida con
dicho umbral. h es un escalar positivo que marca el umbral.
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 403 de 410
i mhmax utiliza por defecto vecindades de 8 pxeles para imgenes en 2-D y vecindad de 26
pxeles para imgenes en 3-D. Para dimensiones mayores, i mhmax utiliza la conectividad
dada por conndef ( ndi ms( I ) , ' maxi mal ' ) .
I 2 = i mhmax( I , h, conn) calcula la transformada H-mxima donde conn especifica la
conectividad y puede tener cualquiera de los siguientes valores escalares (siempre
simtrica respecto su elemento central):
Valor Significado
Conectividades Bidimensionales
4
Vecindad de 4 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos y
conectados en vertical u horizontal.

Figura f.32 - vecindad 4
8
Vecindad de 8 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos.
(Por defecto)

Figura f.33 - vecindad 8
Conectividades Tridimensionales
6
Vecindad de 6 pxeles.
18
Vecindad de 18 pxeles.
26
Vecindad de 26 pxeles. (Por defecto)
Nota: La conectividad se puede definir para cualquier dimensin de forma ms
general utilizando para conn una matriz de 3-por-3-por-...-por-3 de ceros y unos.
Los unos definen las localizaciones de los pxeles vecinos relativas al elemento
central de conn. Por ejemplo, conn=ones( 3) define una conectividad de 8 pxeles.
I puede ser de cualquier clase numrica no dispersa y de cualquier dimensin. I 2 tiene el
mismo tamao y clase que I .
Ejemplos de uso
Ejemplo 1: Aplicar la Transformada H-mxima para limitar la altura de los mximos
regionales y conseguir solo mximos regionales que difieran en 4 respecto sus pxeles
vecinos.

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 404 de 410
a = zer os( 10, 10) ;
a( 2: 4, 2: 4) = 3; %mxi mo r egi onal con di f er enci a 3 r espect o sus veci nos.
a( 6: 8, 6: 8) = 8 %mxi mo r egi onal con di f er enci a 8 r espect o sus veci nos.

b = i mhmax( a, 4) %Tr ansf or mada H- mxi ma con umbr al 4.

a =
0 0 0 0 0 0 0 0 0 0
0 3 3 3 0 0 0 0 0 0
0 3 3 3 0 0 0 0 0 0
0 3 3 3 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 8 8 8 0 0
0 0 0 0 0 8 8 8 0 0
0 0 0 0 0 8 8 8 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

b =
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
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 4 4 4 0 0
0 0 0 0 0 4 4 4 0 0
0 0 0 0 0 4 4 4 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

Funciones relacionadas
conndef , i mext endedmax, i mhmi n, i mr econst r uct , i mr egi onal max

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 405 de 410
imhmin
Transformada H-mnima
Sintaxis
I 2 = i mhmi n( I , h)
I 2 = i mhmi n( I , h, conn)
Descripcin
I 2 = i mhmi n( I , h) elimina cualquier mnimo regional (pxeles conectados con un valor
de intensidad constante y cuyos vecinos tienen un valor mayor) en la imagen de
intensidades I en donde la diferencia entre los pxeles vecinos y el mnimo regional
(profundidad) sea menor que un cierto valor de umbral h. Se aumentarn los mnimos
regionales existentes que disten de los pxeles vecinos un valor mayor que el especificado
en el umbral para que su diferencia coincida con dicho umbral. h es un escalar positivo que
marca el umbral. Para ms informacin consultar la pgina de la funcin complementaria
i mhmax.
i mhmi n utiliza por defecto vecindades de 8 pxeles para imgenes en 2-D y vecindad de 26
pxeles para imgenes en 3-D. Para dimensiones mayores, i mhmi n utiliza la conectividad
dada por conndef ( ndi ms( I ) , ' maxi mal ' ) .
I 2 = i mhmi n( I , h, conn) calcula la transformada H-mnima donde conn especifica la
conectividad y puede tener cualquiera de los siguientes valores escalares (siempre
simtrica respecto su elemento central):
Valor Significado
Conectividades Bidimensionales
4
Vecindad de 4 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos y
conectados en vertical u horizontal.

Figura f.32 - vecindad 4
8
Vecindad de 8 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos.
(Por defecto)

Figura f.33 - vecindad 8
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 406 de 410
Conectividades Tridimensionales
6 Vecindad de 6 pxeles.
18 Vecindad de 18 pxeles.
26 Vecindad de 26 pxeles. (Por defecto)
Nota: La conectividad se puede definir para cualquier dimensin de forma ms
general utilizando para conn una matriz de 3-por-3-por-...-por-3 de ceros y unos.
Los unos definen las localizaciones de los pxeles vecinos relativas al elemento
central de conn. Por ejemplo, conn=ones( 3) define una conectividad de 8 pxeles.
I puede ser de cualquier clase numrica no dispersa y de cualquier dimensin. I 2 tiene el
mismo tamao y clase que I .
Ejemplos de uso
Ejemplo 1: Aplicar la Transformada H-mnima para conseguir solo mnimos regionales
que difieran en 4 respecto sus pxeles vecinos.
a = 10*ones( 10, 10) ;
a( 2: 4, 2: 4) = 7; %m ni mo r egi onal con di f er enci a 3 r espect o sus veci nos.
a( 6: 8, 6: 8) = 2 %m ni mo r egi onal con di f er enci a 8 r espect o sus veci nos.

b = i mhmi n( a, 4) %Tr ansf or mada H- m ni ma con umbr al 4.

a =
10 10 10 10 10 10 10 10 10 10
10 7 7 7 10 10 10 10 10 10
10 7 7 7 10 10 10 10 10 10
10 7 7 7 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 2 2 2 10 10
10 10 10 10 10 2 2 2 10 10
10 10 10 10 10 2 2 2 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10

b =
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 6 6 6 10 10
10 10 10 10 10 6 6 6 10 10
10 10 10 10 10 6 6 6 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
Funciones relacionadas
conndef , i mext endedmi n, i mhmax, i mr econst r uct , i mr egi onal mi n
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 407 de 410
imimposemin
Imposicin de mnimo regional
Sintaxis
I 2 = i mi mposemi n( I , BW)
I 2 = i mi mposemi n( I , BW, conn)
Descripcin
I 2 = i mi mposemi n( I , BW) modifica la imagen de intensidades I utilizando reconstruccin
morfolgica para que solo tenga un mnimo regional en la regin positiva especificada por
la mscara BW. BWes una imagen binaria del mismo tamao que I .
Por defecto, i mhmi n utiliza vecindades de 8 pxeles para imgenes en 2-D y vecindad de 26
pxeles para imgenes en 3-D. Para dimensiones mayores, i mi mposemi n utiliza la
conectividad dada por conndef ( ndi ms( I ) , ' mi ni mum' ) .
I 2 = i mi mposemi n( I , BW, conn) especifica la conectividad en la variable conn, que
puede tener cualquiera de los siguientes valores escalares (siempre simtrica respecto su
elemento central):
Valor Significado
Conectividades Bidimensionales
4
Vecindad de 4 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos y
conectados en vertical u horizontal.

Figura f.32 - vecindad 4
8
Vecindad de 8 pxeles: Un par de
pxeles colindantes forman parte del
mismo objeto solo si estn activos.
(Por defecto)

Figura f.33 - vecindad 8
Conectividades Tridimensionales
6
Vecindad de 6 pxeles.
18
Vecindad de 18 pxeles.
26
Vecindad de 26 pxeles. (Por defecto)
Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 408 de 410
Nota: La conectividad se puede definir para cualquier dimensin de forma ms
general utilizando para conn una matriz de 3-por-3-por-...-por-3 de ceros y unos.
Los unos definen las localizaciones de los pxeles vecinos relativas al elemento
central de conn. Por ejemplo, conn=ones( 3) define una conectividad de 8 pxeles.
I puede ser de cualquier dimensin y clase numrica no dispersa. BWdebe ser un array
numrico no disperso del mismo tamao que I . I 2 ser del mismo tamao y clase que I .
Ejemplos de uso
Ejemplo 1: Imponer un mnimo regional en una imagen dada.
I = 10*ones( 10, 10) ;
I ( 2: 4, 2: 4) = 7; %m ni mo r egi onal .
I ( 6: 8, 6: 8) = 2 %m ni mo r egi onal .

%Def i ni mos dnde va a est ar el m ni mo r egi onal ut i l i zando zonas
posi t i vas en una mscar a bi nar i a.

mask = zer os( 10, 10) ;
mask( 7: 9, 2: 4) = 1 %r egi n donde habr m ni mo r egi onal .

%I mponemos m ni mo r egi onal en l a r egi n posi t i va def i ni da en mask.

J = i mi mposemi n( I , mask) ;

%Compar amos l os m ni mos r egi onal es ant es y despus de l a oper aci n.

MI = i mr egi onal mi n( I )
MJ = i mr egi onal mi n( I )

I =
10 10 10 10 10 10 10 10 10 10
10 7 7 7 10 10 10 10 10 10
10 7 7 7 10 10 10 10 10 10
10 7 7 7 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 2 2 2 10 10
10 10 10 10 10 2 2 2 10 10
10 10 10 10 10 2 2 2 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10

mask =
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
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
0 1 1 1 0 0 0 0 0 0
0 1 1 1 0 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

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 409 de 410
MI =
0 0 0 0 0 0 0 0 0 0
0 1 1 1 0 0 0 0 0 0
0 1 1 1 0 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 1 1 1 0 0
0 0 0 0 0 1 1 1 0 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

MJ =
0 0 0 0 0 0 0 0 0 0
0 1 1 1 0 0 0 0 0 0
0 1 1 1 0 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 1 1 1 0 0
0 0 0 0 0 1 1 1 0 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
Ejemplo 2: Hacer que una imagen en escala de grises tenga solo un mnimo regional en un
sitio especfico.
I = i mr ead( ' gl ass. t i f ' ) ;

%Def i ni mos l a zona donde est ar el m ni mo r egi onal con una i magen
bi nar i a del mi smo t amao que l a or i gi nal y con val or posi t i vo sol o en l a
zona dest i nada al m ni mo r egi onal .

mask = f al se( si ze( I ) ) ;
mask( 65: 70, 65: 70) = t r ue;

%Most r amos l a zona sobr ei mpr esi onada en l a i magen or i gi nal .

Z = I ;
Z( mask) = 255;
f i gur e, i mshow( Z)

%I mponemos el m ni mo r egi onal en l a i magen. Not ar cmo t odas l as r eas
oscur as de l a i magen or i gi nal se han acl ar ado except o el r ea def i ni da
par a el m ni mo r egi onal .

J = i mi mposemi n( I , mask) ;
f i gur e, i mshow( J )

%Compar amos l os m ni mos r egi onal es ant es y despus de l a oper aci n.

BW= i mr egi onal mi n( I ) ;
f i gur e, i mshow( BW)
BW2 = i mr egi onal mi n( J ) ;
f i gur e, i mshow( BW2)

Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB


Pgina 410 de 410

Figura f.263 - Imagen original (I) y mscara (mask)
superpuesta
Figura f.288 - Imagen procesada (J)


Figura f.289 - Mnimos regionales (BW) de imagen
original (I)
Figura f.290 - Mnimos regionales (BW2) de imagen
procesada (J)
Funciones relacionadas
conndef , i mr econst r uct , i mr egi onal mi n

Вам также может понравиться