sistema de tracking para inserção dinâmica de linha de...
TRANSCRIPT
![Page 1: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/1.jpg)
Sistema de tracking para inserção dinâmica de linha de
impedimento em vídeos de jogos de futebol
Rodrigo Busato SartorOrientador: Paulo César Rodacki Gomes
![Page 2: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/2.jpg)
Roteiro
• Introdução• Objetivos• Fundamentação teórica• Desenvolvimento• Resultados e discussões• Conclusão• Extensões
![Page 3: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/3.jpg)
Roteiro
• Introdução• Objetivos• Fundamentação teórica• Desenvolvimento• Resultados e discussões• Conclusão• Extensões
![Page 4: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/4.jpg)
Introdução
• Impedimento • Detecção de objetos em movimento• Tracking• Realce das linhas do campo
![Page 5: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/5.jpg)
Roteiro
• Introdução• Objetivos• Fundamentação teórica• Desenvolvimento• Resultados e discussões• Conclusão• Extensões
![Page 6: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/6.jpg)
Objetivos
• Desenvolver os passos iniciais para inserção da linha de impedimento em vídeos de jogos de futebol
• Identificar as linhas que delimitam o campo, incluindo a pequena e grande área.
• Realizar o acompanhamento dos jogadores através de técnicas de tracking.
![Page 7: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/7.jpg)
Roteiro
• Introdução• Objetivos• Fundamentação teórica• Desenvolvimento• Resultados e discussões• Conclusão• Extensões
![Page 8: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/8.jpg)
Fundamentação teórica• Posição de impedimento• Detecção de objetos em movimentos
– Tracking– Objetos em movimento– Optical flow
• Filtros de Imagem– Imagens de vídeo
• Realce de linhas– Passa-alta– Passa-baixa– Limiarização (threshold)
![Page 9: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/9.jpg)
Fundamentação teórica
Posição de impedimento• A lei 11 do livro de regras do futebol rege
que:
“Um jogador estará em posição de impedimento quando se encontrar mais próximo da linha de meta adversária do que a bola e o penúltimo adversário”
![Page 10: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/10.jpg)
Fundamentação teórica
Posição de impedimento
![Page 11: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/11.jpg)
Fundamentação teóricaDetecção de objetos em movimentos
• Tracking– É um registro especial de imagens onde
procura-se um objeto dado em uma imagem dada
– O espaço de busca é limitado, pois é considerado que objeto tenha uma trajetória continua.
![Page 12: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/12.jpg)
Fundamentação teóricaDetecção de objetos em movimentos
• Tracking (continuação...)– Muitos sistemas de tracking utilizam como
passo inicial a detecção dos movimentos (optical flow)
– Após a detecção do movimento podem ser utilizadas algumas técnicas como a segmentação adaptativa para realizar o optical flow apenas na área de interesse
![Page 13: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/13.jpg)
Fundamentação teóricaDetecção de objetos em movimentos
• Objetos em movimento– Uma das maneiras mais simples de realizar a
detecção dos movimentos, é a comparação pixel por pixel, o que gera uma imagem binaria, onde na comparação entre os frames os pixels que tiverem uma diferença significativa, ficam em branco, e o restante em preto
![Page 14: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/14.jpg)
Fundamentação teóricaDetecção de objetos em movimentos
• Optical flow– Fornece meios de determinar e representar o
movimento dentro de uma sequencia de imagens
– Quando é detectado movimento em um pixel toda região em sua volta é examinada
– O tamanho da área examinada é determinada pelo tamanho da aceleração máxima tanto para x quanto para y
![Page 15: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/15.jpg)
Fundamentação teóricaDetecção de objetos em movimentos
• Optical flow (continuação...)– A área é analisada de dentro para fora partindo
do pixel central até encontrar um pixel correspondente
– Após a detecção do movimento, pode ser previsto a posição esperada do pixel no próximo frame
– A localização do pixel no próximo frame é dada pela soma da posição atual mais a diferença entre a posição atua e a posição anterior. Tanto para o eixo “x” quanto para o eixo “y”
![Page 16: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/16.jpg)
Fundamentação teóricaFiltros de imagem
• Imagens de vídeo– Um vídeo é uma sequência S de imagens It,
onde It indica a imagem no tempo t do vídeo– Uma imagem I pode ser representada pela
funçãoI : D⊂ℜ² →ℜn
– Onde D é o domínio da imagem e n é um número escalar para representar a cor de um pixel qualquer
– geralmente um byte ou seja de 0 a 255
![Page 17: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/17.jpg)
Fundamentação teóricaFiltros de imagem• Representação da imagem de um vídeo
![Page 18: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/18.jpg)
Fundamentação teóricaFiltros de imagem
• Realce de linhas– É realizado para detectar pontos candidato a
estarem sobre os segmentos de retas presentes na imagem
![Page 19: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/19.jpg)
Fundamentação teóricaFiltros de imagem
• Passa-alta– Funciona mantendo os trechos de alta
frequência e eliminando as baixas, sendo utilizado para detectar as bordas da imagem
– Pode ser utilizado o algoritmo laplaciano que é definido pelo operado matemático ∇.
– Devido à interferência, o laplaciano mantem pontos que possuem frequência alta, mais não pertencem a imagem
![Page 20: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/20.jpg)
Fundamentação teóricaFiltros de imagem
• Passa-alta (continuação...)
![Page 21: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/21.jpg)
Fundamentação teóricaFiltros de imagem
• Passa-baixa– Funciona mantendo os trechos de baixa
frequência e eliminando as altas, sendo utilizado para reduzir as interferências ocasionadas por exemplo pela transmissão da TV
– Pode ser utilizado o algoritmo de gaussiano
![Page 22: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/22.jpg)
Fundamentação teóricaFiltros de imagem
• Passa-baixa (continuação...)
![Page 23: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/23.jpg)
Fundamentação teóricaFiltros de imagem
• A junção do algoritmo laplaciano e gaussiano é descrito como algoritmo laplaciano da gaussiana ou simplesmente LoG
![Page 24: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/24.jpg)
Fundamentação teóricaFiltros de imagem
• Laplassiano da gaussiana (continuação...)
![Page 25: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/25.jpg)
Fundamentação teóricaFiltros de imagem
• Limiarização (threshold)– O principio da limiarização consiste em separar
de uma imagem em duas classes (o fundo e o objeto). Produzindo ao seu final uma imagem binaria
– A forma mais simples de limiarização consiste na bipartição do histograma, convertendo os pixels cujo tom de cinza é maior ou igual a um certo valor limiar em branco e os demais em pretos
![Page 26: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/26.jpg)
Fundamentação teóricaFiltros de imagem
• Limiarização (threshold) (continuação...)
![Page 27: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/27.jpg)
Fundamentação teórica
Trabalhos correlatos• Calibração de câmeras para cálculo de
impedimentos (FURB, 2003)• Ambiente virtual tridimensional para cálculo de
impedimento (FURB, 2004)• Acompanhamento de cenas com calibração
automática de câmeras (PUC-RJ, 2001)
![Page 28: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/28.jpg)
Roteiro
• Introdução• Objetivos• Fundamentação teórica• Desenvolvimento• Resultados e discussões• Conclusão• Extensões
![Page 29: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/29.jpg)
Desenvolvimento
• Especificação– Requisitos– Caso de uso– Diagrama de classes – Diagrama de sequência
• Implementação– Ferramentas e técnicas– Principais funcionalidades
![Page 30: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/30.jpg)
Desenvolvimento
Principais requisitos• Fncionais
– Permitir inserir um vídeo de uma partida de futebol;– Disponibilizar o vídeo para visualização com o rastreamento
de jogadores;– Disponibilizar o vídeo para visualização com o realce de
linhas;• Não funcionais
– O protótipo será desenvolvido na linguagem de programação Java, no ambiente de desenvolvimento Eclipse;
– O protótipo será desenvolvido utilizando framework Java Media Framework (JMF);
– O protótipo executará o vídeo gerado sem atrasos ou falhas de reprodução.
![Page 31: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/31.jpg)
Desenvolvimento
Casos de uso uc Use Case Model
UsuárioGerar linha de impedimento
Informar v ídeo contendo um jogo de
futebol
![Page 32: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/32.jpg)
Desenvolvimento
Diagrama de classes class Class Model
WeightedBlobCorrelator
- confidence: double ([][])- hcNew: int- hcOld: int- infoWeight: double ([])- minCorrelationConfidence: double = NO_CONFIDENCE- nextLabel : int = 1- NO_CONFIDENCE: double = -Double.MAX_VALUE {readOnly}- prevNow: double = 0.0
- calcAllConfidences(List<Blob>, List<Blob>) : void- calculateConfidence(Blob, Blob) : double+ correlate(List<Blob>, List<Blob>) : List<Blob>- correlate(Blob, Blob) : Blob- findHighestConfidence(List<Blob>, List<Blob>) : double+ WeightedBlobCorrelator()
«interface»BlobCorrelator
+ correlate(List<Blob>, List<Blob>) : List<Blob>
BlobManager
- blobAgeOfAcceptance: double- correlatedBlobList: List<Blob>- correlator: BlobCorrelator- listeners: List<BlobManagerListener>- maxBlobMissingTime: double- uncorrelatedBlobList: List<Blob>- videoSize: Dimension
+ addListener(BlobManagerListener) : void+ BlobManager()+ getBlobAgeOfAcceptance() : double+ getBlobList() : List<Blob>+ getMaxBlobMissingTime() : double+ getUncorrelatedBlobList() : List<Blob>+ getVideoSize() : Dimension+ removeListener(BlobManagerListener) : void- removeOldBlobs() : void+ setBlobAgeOfAcceptance(double) : void+ setMaxBlobMissingTime(double) : void+ setVideoSize(Dimension) : void+ updateBlobs(List<Blob>) : void
Blob
+ bounds: Rectangle+ frameLabel: int+ frameNumber: int+ label: int+ NOT_CORRELATED: int = -1 {readOnly}+ pixelCount: int+ timeCreated: double+ timeLastUpdated: double+ timeMissing: double+ velocity: Point2D.Double
+ Blob(int, Rectangle)
EffectCodecVideo
- active: boolean# displayImage: BufferedImage- frameListenerList: List<VideoFrameListener>- input: Format = null- nCalls: long- output: Format = null+ PROP_VIDEO_SIZE: String = "videoSize" {readOnly}- propSupport: PropertyChangeSupport = new PropertyCha...# supportedIns: Format ([]) = new Format[] { ...# supportedOuts: Format ([]) = new Format[] { ...- totalT ime: double- videoSize: Dimension = new Dimension()
+ addVideoFrameListener(VideoFrameListener) : void+ close() : void+ CodecVideo()+ getAvgProcessingTime() : double+ getControl(String) : Object+ getControls() : Object[]+ getDisplayImage() : BufferedImage+ getName() : String+ getSupportedInputFormats() : Format[]+ getSupportedOutputFormats(Format) : Format[]+ getVideoSize() : Dimension+ isActive() : boolean- notifyVideoFrameListeners() : void+ open() : void+ process(Buffer, Buffer) : int# processRGB(byte[], byte[], VideoFormat) : boolean+ removeVideoFrameListener(VideoFrameListener) : void+ reset() : void+ setActive(boolean) : void+ setInputFormat(Format) : Format+ setOutputFormat(Format) : Format# updateImage(byte[], VideoFormat) : void
JFrameControllerListener
VirtualFlag
# backgroundUpdater: BackgroundUpdater# blobManager: BlobManager# bufferAccessor: BufferAccessor- effectChain: CodecVideo ([])- processor: Processor- stateTransitionOK: boolean = true- waitSync: Object = new Object()
+ controllerUpdate(ControllerEvent) : void# createEffectChain() : CodecVideo[]+ getEffect(Class<? extends RgbVideoEffect>) : CodecVideo+ getMediaLocator() : MediaLocator+ getProcessingChain() : CodecVideo[]- initConponents() : void+ main(String[]) : void+ menu() : JMenuBar+ open(MediaLocator) : boolean+ VirtualFlag()~ waitForState(int) : boolean
+correlator
#blobManager
-effectChain
![Page 33: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/33.jpg)
Desenvolvimento
Diagrama de classes class Class Model
BlobDetector
- blobManager: BlobManager- changeLabel: int ([]) = new int[MAX_LAB...- format: VideoFormat- frameNumber: int = -1- labelImage: int ([]) = new int[0]+ MAX_LABELS: int = 320 * 240 / 4 {readOnly}- maxBlobSize: int = Integer.MAX_VALUE- minBlobSize: int = 16
+ BlobDetector(BlobManager, int, int, int)- checkNeighborLabel(VideoFormat, int, int) : int- compressLabelEquivalences(int) : void- createBlobList(VideoFormat, int, int) : List<Blob>- doLabel ing(byte[], VideoFormat, int) : int- fi lterBlobsBySize(List<Blob>) : List<Blob>+ getCurrentFrameNumber() : int+ getLastLabelImage() : int[]+ getLastLabelImageSize() : Dimension+ getMaxBlobSize() : int+ getMinBlobSize() : int+ getName() : String- ini tFrame(VideoFormat) : int- makeLabelsContiguous(int) : int# processRGB(byte[], byte[], VideoFormat) : boolean- resolveLabelEquivalences(byte[], VideoFormat, int) : void+ setMaxBlobSize(int) : void+ setMinBlobSize(int) : void# updateImage(byte[], VideoFormat) : void- updateNeighbor(int, int) : void
FilterLoG
- bti: BufferToImage~ first: boolean = true
- convolveImagem(BufferedImage, double[][]) : double[]+ cruzaZero(double[][], BufferedImage) : void- distancia(double, double, double, double) : double+ fil terExecute(double, BufferedImage) : void+ Fi lterLoG()- funcLoG(double, double) : double- gauss(double, double) : double
BackgroundUpdater
- background: byte ([]) = nul l- BACKGROUND_GRAB_TIME: int = 1 {readOnly}- buffAcc: BufferAccessor- frameNumber: long = 0
+ BackgroundUpdater(BufferAccessor)+ getBackground() : byte[]+ getName() : String+ isCapturing() : boolean# processRGB(byte[], byte[], VideoFormat) : boolean+ resetBackground() : void# updateImage(byte[], VideoFormat) : void
BufferAccessor
- buffer: byte ([])- size: Dimension
+ BufferAccessor()+ getBuffer() : byte[]+ getBufferSize() : Dimension+ getName() : String# processRGB(byte[], byte[], VideoFormat) : boolean# updateImage(byte[], VideoFormat) : void
DifferenceInputBackground
- bgUpdater: BackgroundUpdater
+ DifferenceInputBackground(BackgroundUpdater)+ getName() : String# processRGB(byte[], byte[], VideoFormat) : boolean
ThresholdEffect
# passCount: int# passRatio: float# threshold: char = 64
+ getName() : String+ getPassCount() : int+ getPassRatio() : float+ getThreshold() : char# processRGB(byte[], byte[], VideoFormat) : boolean+ setThreshold(char) : void+ ThresholdEffect()# updateImage(byte[], VideoFormat) : void
EffectCodecVideo
- active: boolean# displayImage: BufferedImage- frameListenerList: List<VideoFrameListener>- input: Format = nul l- nCal ls: long- output: Format = nul l+ PROP_VIDEO_SIZE: String = "videoSize" {readOnly}- propSupport: PropertyChangeSupport = new PropertyCha...# supportedIns: Format ([]) = new Format[] { ...# supportedOuts: Format ([]) = new Format[] { ...- totalTime: double- videoSize: Dimension = new Dimension()
+ addVideoFrameListener(VideoFrameListener) : void+ close() : void+ CodecVideo()+ getAvgProcessingTime() : double+ getControl(String) : Object+ getControls() : Object[]+ getDisplayImage() : BufferedImage+ getName() : String+ getSupportedInputFormats() : Format[]+ getSupportedOutputFormats(Format) : Format[]+ getVideoSize() : Dimension+ isActive() : boolean- notifyVideoFrameListeners() : void+ open() : void+ process(Buffer, Buffer) : int# processRGB(byte[], byte[], VideoFormat) : boolean+ removeVideoFrameListener(VideoFrameListener) : void+ reset() : void+ setActive(boolean) : void+ setInputFormat(Format) : Format+ setOutputFormat(Format) : Format# updateImage(byte[], VideoFormat) : void
-bgUpdater
-buffAcc
![Page 34: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/34.jpg)
Desenvolvimento
Diagrama de sequencia
![Page 35: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/35.jpg)
Desenvolvimento
Ferramentas e técnicas• Linguagem Java versão 6.0• API Java Media Framework (JMF)• IDE Eclipse Helios
![Page 36: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/36.jpg)
Desenvolvimento
Principais funcionalidades• Carregar vídeo
![Page 37: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/37.jpg)
Desenvolvimento
Principais funcionalidades• Vídeo executando reconhecimento de movimentos
![Page 38: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/38.jpg)
Desenvolvimento
Principais funcionalidades• Vídeo executando realce de linhas
![Page 39: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/39.jpg)
Roteiro
• Introdução• Objetivos• Fundamentação teórica• Desenvolvimento• Resultados e discussões• Conclusão• Extensões
![Page 40: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/40.jpg)
Resultados e discussões
• Rastreamento dos jogadores com visualização dinâmica
• É necessário refinar a solução• O rastreamento considerou objetos do
fundo da cena (tais como placas de propaganda)
• Foi feito pré-processamento gráfico para detecção de linhas mais faltou implementação de reconhecimento, classificação e cálculo de homografia
![Page 41: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/41.jpg)
Roteiro
• Introdução• Objetivos• Fundamentação teórica• Desenvolvimento• Resultados e discussões• Conclusão• Extensões
![Page 42: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/42.jpg)
Conclusão
• Não foi possível a atender todos os objetivos propostos por terem se tornado demasiadamente complexos, para o período de desenvolvimento
• O trabalho implementou tracking para jogos de futebol, mais ainda necessita refinamento
• Pode ser agregado a trabalhos correlatos para a continuação da linha de pesquisa
![Page 43: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/43.jpg)
Roteiro
• Introdução• Objetivos• Fundamentação teórica• Desenvolvimento• Resultados e discussões• Conclusão• Extensões
![Page 44: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/44.jpg)
Extensões
• Melhoria no rastreamento de jogadores• Implementação de reconhecimento de linhas
e cálculo de homografia (calibração de câmeras)
• Implementação de inserção da linha de impedimento
• Um sistema estático utilizando o rastreamento dos jogadores para verificar a distancia percorrida, área que mais atuou entre outros dados
![Page 45: Sistema de tracking para inserção dinâmica de linha de ...dsc.inf.furb.br/arquivos/tccs/apresentacoes/TCC2011-2-25-AP-Rodrig… · • Passa-alta – Funciona mantendo os trechos](https://reader035.vdocuments.mx/reader035/viewer/2022070815/5f0f048a7e708231d4421412/html5/thumbnails/45.jpg)
Apresentação do protótipo