SlideShare uma empresa Scribd logo
1 de 17
Detección y Reconocimiento
Esquelético utilizado por KINECT
Paute Nieves, Andrés Geovanny
Escuela de Ingeniería de Sistema y Telemática - Universidad del Azuay - Cuenca, Ecuador
Abstract
 Kinect, desarrollado por PrimeSense y distribuido por Microsoft, es un dispositivo diseñando
con el propósito de realizar captura de movimiento, a través de una serie de algoritmos
como son: Randomized Decision Forests, algoritmo capaz de aprender ciertas
características de un conjunto de imágenes de profundidad con el fin de clasificar los
pixeles de una imagen para obtener la pose de un objeto. Mean-Shift, algoritmo capaz
de estimar la posición correspondiente de las articulaciones del esqueleto.
 Aplicando dichos algoritmos se pretende demostrar como la tecnología Kinect es capaz
de realizar el reconocimiento esquelético de un individuo en tiempo real.
KINECT
 Kinect es un dispositivo de control que permite a los usuarios controlar e interactuar con la
consola sin necesidad de tener contacto físico con un controlador de videojuegos
tradicional, sino con el cuerpo, es decir con movimientos físicos. Esto se realiza mediante
una interfaz natural de usuario que reconoce gestos, comandos de voz, objetos e
imágenes. Los cuales son interpretados como órdenes.
Apariencia
 El Kinect cuenta con una cámara RGB, un sensor de profundidad, un micrófono de
múltiples matrices y un motor de inclinación. Todos estos componentes hacen del Kinect
un dispositivo muy completo y potente.
Funcionamiento
 Mientras los sensores reconocen y capturan el entorno del juego, Kinect utiliza una serie
de filtros para procesar la información. Los cuales son:
Captura de Profundidad
 La cámara RGB permite generar una imagen tridimensional de lo que tiene por delante.
Para ello, el sensor de profundidad, que permite ver una habitación en 3D, emite rayos
infrarrojos que se proyecta sobre la escena con un patrón de 50.000 puntos, invisibles al
ojo humano, con el fin de marcar las líneas de profundidad, deducir el tiempo que tarda
en rebotar el haz de luz con respecto al dispositivo y calcular distancia al objeto
identificado.
Sustracción de Fondo
 Permite extraer, de una imagen, aquellos elementos de interés para ser analizados de
forma aislada.
 Por ejemplo, se utiliza para extraer únicamente los pixeles del individuo de las imágenes
producidas por Kinect.
Sustracción de Fondo (Algoritmos)
Existen varias aproximaciones para tratar el problema de sustracción de fondo, entre las que
se pueden nombrar a:
 Estimación basada en Mean-Shift.
 Diferencia de cuadros.
 Promedio de fondo.
 Mezcla de Gaussiana
Mean-Shift
 Es un método para encontrar extremos o picos locales en la distribución de densidad de un
conjunto de datos. Este algoritmo puede verse, además, como una técnica no paramétrica
de agrupación o clustering que no requiere conocimiento previo sobre el número de
agrupación a utilizar.
 Se dice, que es un método robusto ya que no toma en cuenta aquellos puntos fuera de lugar
de los datos. El algoritmo opera procesando solo los puntos que se encuentren dentro de una
ventana local. La idea consiste en estimar el vector de medias que indica el desplazamiento
de la ventana hasta converger a la moda (valor con una mayor frecuencia en una
distribución de datos) de la distribución.
 Para estimar la distribución de los datos, el algoritmo emplea técnicas de estimación de
densidad por kernel (núcleo de una función). Por lo general, se utiliza un Kernel Gaussiano para
estimar la media ponderada de los puntos vecinos xi a un punto fijo x dentro de la ventana,
con el fin de obtener el vector de desplazamiento que recibe el nombre de MEAN SHIFT.
Mean-Shift

Bosques de Decisión Aleatoria -
Randomized Decision Forests

Clasificación de un pixel

Compresión de Imágenes
 Para que el algoritmo pueda operar de forma óptima en tiempo real,
es necesario reducir la carga de procesamiento correspondiente a
aplicar el clasificador sobre todos los pixeles de la persona en la
imagen. Para ello se propone un método de compresión que
consiste en clasificar solo algunos pixeles correspondientes a la
persona en vez de clasificarlos todos. Para ello, se fijan saltos de n
pixeles en la imagen, es decir, para cada pixel, el próximo vecino
con información será aquel que se encuentra a n pixeles de
distancia.
 A partir de esto se obtiene una imagen de la persona más
segmentada, la cual es comprimida uniendo los pixeles que poseen
información, obteniendo así una imagen de menor dimensión que es
más rápida de procesar.
Definición de las articulaciones del
esqueleto
 Para ello, se utiliza el algoritmo Mean-Shift sobre el conjunto de puntos clasificados de la
imagen. El algoritmo es utilizado para estimar los puntos correspondientes a las
propuestas finales de las articulaciones de cada parte del cuerpo. Mean-Shift [2] utiliza las
probabilidades de clasificación de los pixeles y desplaza la ventana hacia el punto
donde se tengan los mayores porcentajes de clasificación. Con este algoritmo es posible
ignorar aquellos puntos fuera de lugar que puedan dañar la estimación final de la
articulación.
 El algoritmo es aplicado en cada parte del cuerpo. Como posición inicial para la
ventana del algoritmo, se utiliza el promedio de los puntos cuyo porcentaje de
clasificación sea mayor que un valor umbral aprendido Ƭ. Con ello se garantiza que el
algoritmo empiece en una zona donde pueda converger a una buena solución. En la
figura 1 se observa la solución del Mean-shift aplicada a una imagen.
Definición de las articulaciones del
esqueleto
 Una vez obtenidos los puntos de la imagen correspondientes a cada articulación, con sus
respectivos valores de profundidad, es necesario obtener la posición en el espacio 3D de
los mismos para obtener los puntos finales del esqueleto.
 Para ello se realiza la transformación de los parámetros intrínsecos, encargados de definir
el modelo de distorsión de los lentes y el modelo de geometría de la cámara, a partir de
la cual se obtienen las coordenadas 3D en espacio euclidiano de las articulaciones del
esqueleto, figura 2.
Definición de las articulaciones del
esqueleto (Resultado)
“Fig. 1. Mean - shift sobre imagen clasificada”
Fig2. Esqueleto sobre imagen clasificada.
Referencias
 [1] Jamie Shotton, Andrew Fitzgibbon, Mat Cook, Toby Sharp, Mark Finocchio, Richard Moore, Alex Kipman,
and Andrew Blake. Real-Time Human Pose Recognition in Parts from Single Depth Images. 2013, 22 de Junio.
[En línea]. Disponible: http://research.microsoft.com/pubs/145347/BodyPartRecognition.pdf
 [2] Richard Szeliski. (2013, 23 de Junio). Computer Vision: Algorithms and Applications. [En línea]. Disponible:
http://szeliski.org/Book/drafts/SzeliskiBook_20100903_draft.pdf
 [3] David de la Fuente. (2013, 20 de Junio). Aplicaciones de Kinect para Neurohabilitación, [En línea].
Disponible: http://upcommons.upc.edu/pfc/bitstream/2099.1/15334/1/memoria.pdf
 [4] Jamie Shotton, Andrew Fitzgibbon, Mat Cook, Toby Sharp, Mark Finocchio, Richard Moore, Alex Kipman,
and Andrew Blake. Real-Time Human Pose Recognition in Parts from Single Depth Images. 2013, 22 de Junio.
[En línea]. Disponible: http://research.microsoft.com/pubs/145347/BodyPartRecognition.pdf
 [5] Jamie Shotton, Andrew Fitzgibbon, Mat Cook, Toby Sharp, Mark Finocchio, Richard Moore, Alex Kipman,
and Andrew Blake. Real-Time Human Pose Recognition in Parts from Single Depth Images. 2013, 22 de Junio.
[En línea]. Disponible: http://research.microsoft.com/pubs/145347/SupplementaryMaterial.pdf

Mais conteúdo relacionado

Mais procurados (6)

Nintendo 3DS
Nintendo 3DSNintendo 3DS
Nintendo 3DS
 
Teledeteccion ambiental listo
Teledeteccion ambiental listoTeledeteccion ambiental listo
Teledeteccion ambiental listo
 
Nticv
NticvNticv
Nticv
 
Nticx
NticxNticx
Nticx
 
Nticxe
NticxeNticxe
Nticxe
 
Iniciación a Kinect
Iniciación a KinectIniciación a Kinect
Iniciación a Kinect
 

Destaque

Reconocimiento facial e identificación de textos en videos interactivos - Ram...
Reconocimiento facial e identificación de textos en videos interactivos - Ram...Reconocimiento facial e identificación de textos en videos interactivos - Ram...
Reconocimiento facial e identificación de textos en videos interactivos - Ram...Red Auti
 
Ventajas y aplicaciones de la radiografía panorámica
Ventajas y aplicaciones de la radiografía panorámicaVentajas y aplicaciones de la radiografía panorámica
Ventajas y aplicaciones de la radiografía panorámicaortodiagnosticodigital
 
Articulador completamente ajustable
Articulador completamente ajustableArticulador completamente ajustable
Articulador completamente ajustableJenny Hilares Robles
 
Factores de Ponderacion
Factores de PonderacionFactores de Ponderacion
Factores de PonderacionLetaty Ort
 
Cefalometria Anatomia Y Puntos
Cefalometria Anatomia Y PuntosCefalometria Anatomia Y Puntos
Cefalometria Anatomia Y PuntosOrtokarlos
 
CEFALOMETRÍA DE STEINER
CEFALOMETRÍA DE STEINERCEFALOMETRÍA DE STEINER
CEFALOMETRÍA DE STEINERFreddy Parejas
 
Movimientos mandibulares
Movimientos mandibularesMovimientos mandibulares
Movimientos mandibularesXimena Colorado
 
Anatomia en radiografías panorámicas
Anatomia en radiografías panorámicasAnatomia en radiografías panorámicas
Anatomia en radiografías panorámicasortodiagnosticodigital
 
Reconocimiento de Gestos Kinect + C#
Reconocimiento de Gestos Kinect + C#Reconocimiento de Gestos Kinect + C#
Reconocimiento de Gestos Kinect + C#Jhonnatan Flores
 

Destaque (12)

Reconocimiento facial e identificación de textos en videos interactivos - Ram...
Reconocimiento facial e identificación de textos en videos interactivos - Ram...Reconocimiento facial e identificación de textos en videos interactivos - Ram...
Reconocimiento facial e identificación de textos en videos interactivos - Ram...
 
Ventajas y aplicaciones de la radiografía panorámica
Ventajas y aplicaciones de la radiografía panorámicaVentajas y aplicaciones de la radiografía panorámica
Ventajas y aplicaciones de la radiografía panorámica
 
Articulador completamente ajustable
Articulador completamente ajustableArticulador completamente ajustable
Articulador completamente ajustable
 
Factores de Ponderacion
Factores de PonderacionFactores de Ponderacion
Factores de Ponderacion
 
Radiografia panoramica
Radiografia panoramicaRadiografia panoramica
Radiografia panoramica
 
Presentación movimientos mandibulares
Presentación movimientos mandibularesPresentación movimientos mandibulares
Presentación movimientos mandibulares
 
Cefalometria Anatomia Y Puntos
Cefalometria Anatomia Y PuntosCefalometria Anatomia Y Puntos
Cefalometria Anatomia Y Puntos
 
Radiología Panoramica
Radiología PanoramicaRadiología Panoramica
Radiología Panoramica
 
CEFALOMETRÍA DE STEINER
CEFALOMETRÍA DE STEINERCEFALOMETRÍA DE STEINER
CEFALOMETRÍA DE STEINER
 
Movimientos mandibulares
Movimientos mandibularesMovimientos mandibulares
Movimientos mandibulares
 
Anatomia en radiografías panorámicas
Anatomia en radiografías panorámicasAnatomia en radiografías panorámicas
Anatomia en radiografías panorámicas
 
Reconocimiento de Gestos Kinect + C#
Reconocimiento de Gestos Kinect + C#Reconocimiento de Gestos Kinect + C#
Reconocimiento de Gestos Kinect + C#
 

Semelhante a Detección de Objetos y Reconocimiento Esquelético utilizado por KINECT

Reporte proyecto primer parcial 1
Reporte proyecto primer parcial 1Reporte proyecto primer parcial 1
Reporte proyecto primer parcial 1dave
 
Mantenimiento De Computadoras
Mantenimiento De Computadoras Mantenimiento De Computadoras
Mantenimiento De Computadoras Josue Diaz
 
Segmentación de imágenes con matlab
Segmentación de imágenes con matlabSegmentación de imágenes con matlab
Segmentación de imágenes con matlabDiego Erazo
 
Glosario de términos de diseño 3d
Glosario de términos de diseño 3dGlosario de términos de diseño 3d
Glosario de términos de diseño 3dAfm Zabaleta
 
Sistema de visión artificial para el reconocimiento y
Sistema de visión artificial para el reconocimiento ySistema de visión artificial para el reconocimiento y
Sistema de visión artificial para el reconocimiento yviisonartificial2012
 
Unidad 5 graficación
Unidad 5 graficaciónUnidad 5 graficación
Unidad 5 graficaciónAndhy H Palma
 
Realidad Artificial
Realidad Artificial Realidad Artificial
Realidad Artificial Rufino meri?
 
Graficacion investigacion2
Graficacion investigacion2Graficacion investigacion2
Graficacion investigacion2yesuam
 
Uso de6-d vision en la deteccion de riesgos de colision automovilisticos
Uso de6-d vision en la deteccion de riesgos de colision automovilisticosUso de6-d vision en la deteccion de riesgos de colision automovilisticos
Uso de6-d vision en la deteccion de riesgos de colision automovilisticosJean_Carlo_M
 
Vision por computadora y Robotica 3d
Vision por computadora y Robotica 3dVision por computadora y Robotica 3d
Vision por computadora y Robotica 3dDavid Görcke
 
REALIDAD VIRTUAL EN SISTEMAS INFOMATICOS
REALIDAD VIRTUAL EN SISTEMAS INFOMATICOSREALIDAD VIRTUAL EN SISTEMAS INFOMATICOS
REALIDAD VIRTUAL EN SISTEMAS INFOMATICOSScarlettSalgueiro
 

Semelhante a Detección de Objetos y Reconocimiento Esquelético utilizado por KINECT (20)

Reporte proyecto primer parcial 1
Reporte proyecto primer parcial 1Reporte proyecto primer parcial 1
Reporte proyecto primer parcial 1
 
Mantenimiento De Computadoras
Mantenimiento De Computadoras Mantenimiento De Computadoras
Mantenimiento De Computadoras
 
Segmentación de imágenes con matlab
Segmentación de imágenes con matlabSegmentación de imágenes con matlab
Segmentación de imágenes con matlab
 
Visión artificial
Visión artificialVisión artificial
Visión artificial
 
Glosario de términos de diseño 3d
Glosario de términos de diseño 3dGlosario de términos de diseño 3d
Glosario de términos de diseño 3d
 
Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentada
 
Segmentacion de imagenes
Segmentacion de imagenesSegmentacion de imagenes
Segmentacion de imagenes
 
Proyecto. vision artificial
Proyecto. vision artificialProyecto. vision artificial
Proyecto. vision artificial
 
Reconocimiento del iris
Reconocimiento del irisReconocimiento del iris
Reconocimiento del iris
 
Sistema de visión artificial para el reconocimiento y
Sistema de visión artificial para el reconocimiento ySistema de visión artificial para el reconocimiento y
Sistema de visión artificial para el reconocimiento y
 
Unidad 5 graficación
Unidad 5 graficaciónUnidad 5 graficación
Unidad 5 graficación
 
Realidad Artificial
Realidad Artificial Realidad Artificial
Realidad Artificial
 
Realidad aumentad1
Realidad aumentad1Realidad aumentad1
Realidad aumentad1
 
Graficacion investigacion2
Graficacion investigacion2Graficacion investigacion2
Graficacion investigacion2
 
Uso de6-d vision en la deteccion de riesgos de colision automovilisticos
Uso de6-d vision en la deteccion de riesgos de colision automovilisticosUso de6-d vision en la deteccion de riesgos de colision automovilisticos
Uso de6-d vision en la deteccion de riesgos de colision automovilisticos
 
Vision por computadora y Robotica 3d
Vision por computadora y Robotica 3dVision por computadora y Robotica 3d
Vision por computadora y Robotica 3d
 
10 Visión Por Computador
10 Visión Por Computador10 Visión Por Computador
10 Visión Por Computador
 
REALIDAD VIRTUAL EN SISTEMAS INFOMATICOS
REALIDAD VIRTUAL EN SISTEMAS INFOMATICOSREALIDAD VIRTUAL EN SISTEMAS INFOMATICOS
REALIDAD VIRTUAL EN SISTEMAS INFOMATICOS
 
Rastreador ocular (Uea 2016)
Rastreador ocular (Uea 2016)Rastreador ocular (Uea 2016)
Rastreador ocular (Uea 2016)
 
Graficos por Computadora (2)
Graficos por Computadora (2)Graficos por Computadora (2)
Graficos por Computadora (2)
 

Detección de Objetos y Reconocimiento Esquelético utilizado por KINECT

  • 1. Detección y Reconocimiento Esquelético utilizado por KINECT Paute Nieves, Andrés Geovanny Escuela de Ingeniería de Sistema y Telemática - Universidad del Azuay - Cuenca, Ecuador
  • 2. Abstract  Kinect, desarrollado por PrimeSense y distribuido por Microsoft, es un dispositivo diseñando con el propósito de realizar captura de movimiento, a través de una serie de algoritmos como son: Randomized Decision Forests, algoritmo capaz de aprender ciertas características de un conjunto de imágenes de profundidad con el fin de clasificar los pixeles de una imagen para obtener la pose de un objeto. Mean-Shift, algoritmo capaz de estimar la posición correspondiente de las articulaciones del esqueleto.  Aplicando dichos algoritmos se pretende demostrar como la tecnología Kinect es capaz de realizar el reconocimiento esquelético de un individuo en tiempo real.
  • 3. KINECT  Kinect es un dispositivo de control que permite a los usuarios controlar e interactuar con la consola sin necesidad de tener contacto físico con un controlador de videojuegos tradicional, sino con el cuerpo, es decir con movimientos físicos. Esto se realiza mediante una interfaz natural de usuario que reconoce gestos, comandos de voz, objetos e imágenes. Los cuales son interpretados como órdenes.
  • 4. Apariencia  El Kinect cuenta con una cámara RGB, un sensor de profundidad, un micrófono de múltiples matrices y un motor de inclinación. Todos estos componentes hacen del Kinect un dispositivo muy completo y potente.
  • 5. Funcionamiento  Mientras los sensores reconocen y capturan el entorno del juego, Kinect utiliza una serie de filtros para procesar la información. Los cuales son:
  • 6. Captura de Profundidad  La cámara RGB permite generar una imagen tridimensional de lo que tiene por delante. Para ello, el sensor de profundidad, que permite ver una habitación en 3D, emite rayos infrarrojos que se proyecta sobre la escena con un patrón de 50.000 puntos, invisibles al ojo humano, con el fin de marcar las líneas de profundidad, deducir el tiempo que tarda en rebotar el haz de luz con respecto al dispositivo y calcular distancia al objeto identificado.
  • 7. Sustracción de Fondo  Permite extraer, de una imagen, aquellos elementos de interés para ser analizados de forma aislada.  Por ejemplo, se utiliza para extraer únicamente los pixeles del individuo de las imágenes producidas por Kinect.
  • 8. Sustracción de Fondo (Algoritmos) Existen varias aproximaciones para tratar el problema de sustracción de fondo, entre las que se pueden nombrar a:  Estimación basada en Mean-Shift.  Diferencia de cuadros.  Promedio de fondo.  Mezcla de Gaussiana
  • 9. Mean-Shift  Es un método para encontrar extremos o picos locales en la distribución de densidad de un conjunto de datos. Este algoritmo puede verse, además, como una técnica no paramétrica de agrupación o clustering que no requiere conocimiento previo sobre el número de agrupación a utilizar.  Se dice, que es un método robusto ya que no toma en cuenta aquellos puntos fuera de lugar de los datos. El algoritmo opera procesando solo los puntos que se encuentren dentro de una ventana local. La idea consiste en estimar el vector de medias que indica el desplazamiento de la ventana hasta converger a la moda (valor con una mayor frecuencia en una distribución de datos) de la distribución.  Para estimar la distribución de los datos, el algoritmo emplea técnicas de estimación de densidad por kernel (núcleo de una función). Por lo general, se utiliza un Kernel Gaussiano para estimar la media ponderada de los puntos vecinos xi a un punto fijo x dentro de la ventana, con el fin de obtener el vector de desplazamiento que recibe el nombre de MEAN SHIFT.
  • 11. Bosques de Decisión Aleatoria - Randomized Decision Forests 
  • 12. Clasificación de un pixel 
  • 13. Compresión de Imágenes  Para que el algoritmo pueda operar de forma óptima en tiempo real, es necesario reducir la carga de procesamiento correspondiente a aplicar el clasificador sobre todos los pixeles de la persona en la imagen. Para ello se propone un método de compresión que consiste en clasificar solo algunos pixeles correspondientes a la persona en vez de clasificarlos todos. Para ello, se fijan saltos de n pixeles en la imagen, es decir, para cada pixel, el próximo vecino con información será aquel que se encuentra a n pixeles de distancia.  A partir de esto se obtiene una imagen de la persona más segmentada, la cual es comprimida uniendo los pixeles que poseen información, obteniendo así una imagen de menor dimensión que es más rápida de procesar.
  • 14. Definición de las articulaciones del esqueleto  Para ello, se utiliza el algoritmo Mean-Shift sobre el conjunto de puntos clasificados de la imagen. El algoritmo es utilizado para estimar los puntos correspondientes a las propuestas finales de las articulaciones de cada parte del cuerpo. Mean-Shift [2] utiliza las probabilidades de clasificación de los pixeles y desplaza la ventana hacia el punto donde se tengan los mayores porcentajes de clasificación. Con este algoritmo es posible ignorar aquellos puntos fuera de lugar que puedan dañar la estimación final de la articulación.  El algoritmo es aplicado en cada parte del cuerpo. Como posición inicial para la ventana del algoritmo, se utiliza el promedio de los puntos cuyo porcentaje de clasificación sea mayor que un valor umbral aprendido Ƭ. Con ello se garantiza que el algoritmo empiece en una zona donde pueda converger a una buena solución. En la figura 1 se observa la solución del Mean-shift aplicada a una imagen.
  • 15. Definición de las articulaciones del esqueleto  Una vez obtenidos los puntos de la imagen correspondientes a cada articulación, con sus respectivos valores de profundidad, es necesario obtener la posición en el espacio 3D de los mismos para obtener los puntos finales del esqueleto.  Para ello se realiza la transformación de los parámetros intrínsecos, encargados de definir el modelo de distorsión de los lentes y el modelo de geometría de la cámara, a partir de la cual se obtienen las coordenadas 3D en espacio euclidiano de las articulaciones del esqueleto, figura 2.
  • 16. Definición de las articulaciones del esqueleto (Resultado) “Fig. 1. Mean - shift sobre imagen clasificada” Fig2. Esqueleto sobre imagen clasificada.
  • 17. Referencias  [1] Jamie Shotton, Andrew Fitzgibbon, Mat Cook, Toby Sharp, Mark Finocchio, Richard Moore, Alex Kipman, and Andrew Blake. Real-Time Human Pose Recognition in Parts from Single Depth Images. 2013, 22 de Junio. [En línea]. Disponible: http://research.microsoft.com/pubs/145347/BodyPartRecognition.pdf  [2] Richard Szeliski. (2013, 23 de Junio). Computer Vision: Algorithms and Applications. [En línea]. Disponible: http://szeliski.org/Book/drafts/SzeliskiBook_20100903_draft.pdf  [3] David de la Fuente. (2013, 20 de Junio). Aplicaciones de Kinect para Neurohabilitación, [En línea]. Disponible: http://upcommons.upc.edu/pfc/bitstream/2099.1/15334/1/memoria.pdf  [4] Jamie Shotton, Andrew Fitzgibbon, Mat Cook, Toby Sharp, Mark Finocchio, Richard Moore, Alex Kipman, and Andrew Blake. Real-Time Human Pose Recognition in Parts from Single Depth Images. 2013, 22 de Junio. [En línea]. Disponible: http://research.microsoft.com/pubs/145347/BodyPartRecognition.pdf  [5] Jamie Shotton, Andrew Fitzgibbon, Mat Cook, Toby Sharp, Mark Finocchio, Richard Moore, Alex Kipman, and Andrew Blake. Real-Time Human Pose Recognition in Parts from Single Depth Images. 2013, 22 de Junio. [En línea]. Disponible: http://research.microsoft.com/pubs/145347/SupplementaryMaterial.pdf