Buscar

DESENVOLVIMENTO DE UM SISTEMA DE IDENTIFICAÇÃO E AUTENTICAÇÃO BIOMÉTRICA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

São Paulo – SP 
2020 
 
UNIVERSIDADE PAULISTA – UNIP 
CIÊNCIA DA COMPUTAÇÃO 
 
 
 
 
 
 
 
BRENO LUCAS 
 
 
 
 
 
 
 
 
 
 
 
DESENVOLVIMENTO DE UM SISTEMA DE IDENTIFICAÇÃO E AUTENTICAÇÃO 
BIOMÉTRICA 
São Paulo – SP 
2020 
 
BRENO LUCAS – N253AF4 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
DESENVOLVIMENTO DE UM SISTEMA DE IDENTIFICAÇÃO E 
AUTENTICAÇÃO 
BIOMÉTRICA 
 
 
 
 
 
 
Trabalho semestral apresentado à 
Universidade Paulista como parte 
dos requisitos para aprovação de 
semestre do curso Bacharel em 
Ciência Da Computação. 
Orientador: Dr. Rafael do Espírito 
Santo 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Dedico este trabalho primeiramente a Deus por ter me 
concedido a dádiva da vida até os dias de hoje, aos 
meus pais que me incentivaram incondicionalmente, 
desde o início, com muito amor, compreensão e carinho. 
 
AGRADECIMENTOS 
 
 
 
 
 
Em primeiro lugar, agradeço a Deus por ter me dado forças para 
prosseguir nessa jornada mediante uma época extremamente adversa e por ter 
sido a base sólida e inabalável de todas as minhas conquistas.
Aos meus pais, por sempre acreditarem em mim e não me deixarem 
esmorecer.
Ao professor Dr. Rafael do Espírito Santo, pelo empenho e dedicação 
em suas aulas, me auxiliando e colaborando com o desenvolvimento dessa 
pesquisa acadêmica. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A tarefa não é tanto ver aquilo que ninguém viu, 
mas pensar o que ninguém ainda pensou 
sobre aquilo que todo mundo vê. 
 
 
Arthur Schopenhauer 
 
LISTA DE ABREVIATURA E SIGLAS 
 
 
 
ATM – Automated Teller Machine 
C.V – Computer Vision 
A.I – Artificial Inteligence 
CCD – Change Couple Device 
RGB – Red, Blue e Green. 
TSE – Tribunal Superior Eleitoral. 
PARA – Programa de Análise de Resíduos de Agrotóxicos em Alimentos. 
ANVISA – Agência Nacional de Vigilância Sanitária. 
POO – Programação Orientada a Objetos. 
 
SUMARIO 
INTRODUÇÃO .................................................................................................. 8 
OBJETIVO ...................................................................................................... 10 
FUNDAMENTOS DAS PRINCIPAIS TÉCNICAS BIOMÉTRICAS .................. 11 
VISÃO HUMANA .................................................................................. 11 
COMPUTER VISION (VISÃO COMPUTACIONAL) .............................. 12 
AQUISIÇÃO DE IMAGENS .................................................................. 12 
CONCEITOS GERAIS: BIOMETRIA ............................................................... 15 
USO DE AGROTÓXICOS E FERTILIZANTES DANOSOS À SAÚDE EM 
TERRITÓRIO NACIONAL ............................................................................... 16 
RESÍDUOS DE AGROTÓXICOS EM ALIMENTOS NO BRASIL .......... 18 
COMO PROCEDER? ............................................................................ 19 
TECNOLOGIAS UTILIZADAS PARA IMPLEMENTAÇÃO E 
DESENVOLVIMENTO DO SOFTWARE .......................................................... 20 
CONCEITOS BÁSICOS: PYTHON ........................................................ 20 
SQLITE3 ................................................................................................ 22 
SISTEMA USADO PARA A CRIAÇÃO DO PROJETO .......................... 23 
PROJETO. ....................................................................................................... 24 
INTERFACE LOGIN .............................................................................. 24 
INTERFACE CADASTRAR ................................................................... 25 
FAZENDO LOGIN NA REDE ................................................................. 26 
CADASTRANDO NOVOS USUÁRIOS .................................................. 27 
RELATÓRIO COM AS LINHAS DE CÓDIGO DO PROGRAMA..................... 29 
REFERENCIAS ............................................................................................... 41 
8 
 
INTRODUÇÃO 
 
Em culturas mais antigas, na ancestralidade, as pessoas tinham o 
costume de serem gregárias, ou seja, conviver em grupos onde viam-se e 
reconheciam-se um no outro sem quaisquer dificuldades ou equívocos. Todavia, 
com a aceleração da mobilidade e com a abrupta expansão populacional, o 
reconhecimento para com o outro tornou-se um processo mais complexo, 
necessitando, assim, de um meio mais refinado para um melhor reconhecimento 
das possíveis identidades que nos são apresentadas. O termo “identidade” 
refere-se ao conjunto de dados e informações que são ligados a uma pessoa, 
sendo eles, por exemplo, nome, sobrenome, endereço, data de nascimento etc. 
Para um melhor reconhecimento e identificação de quem quer que 
seja, com maior assertividade, a biometria é conhecida como um dos 
procedimentos de reconhecimento mais pragmático e mais utilizados na atual 
sociedade. Ao pé da letra, biometria refere-se à pesquisa dos traços, 
características físicas e comportamental de cada ser humano, pois, é partir do 
corpo humano que essas credenciais serão confrontadas para que se possa 
acessar determinadas informações. Em um sistema de gerenciamento de 
qualquer tipo, a nível usuário, tais informações podem ser acessadas após uma 
breve checagem. Dada a confirmação mediante confrontamento das credenciais 
deste usuário em questão, pode-se atribuir (ou não) privilégios de acesso para o 
mesmo, dando a possibilidade de o usuário fazer alterações significativas no 
sistema. 
Faz-se também o uso da biometria a fim de que haja uma identificação 
de indivíduos suspeitos em locais que tenha ocorrido algum crime. Essa 
metodologia, utilizada pelos órgãos públicos, tem início com a polícia cientifica, 
que coleta os dados do suspeito em questão para posteriormente confrontar e 
examinar os dados coletados. 
Métodos manuais para identificação por biometria em casos criminais 
já existem e se mostraram altamente produtivos, entretanto, a tecnologia torna- 
se uma aliada para minimizar, ou, anular problemas e intercorrências que são 
oriundos dos sistemas manuais. 
9 
 
Os sistemas que não são tecnológicos, ou seja, os que são operados 
de maneira manual possibilitam a procura de indivíduos em uma grande base de 
dados de formulários biométricos, no entanto, o tempo de processamento dessa 
base de dados é demasiadamente demorado, carecem de padrões e formas 
eficazes de relacionamento de informações entre distintos sistemas. 
Tratando-se de uma assinatura biométrica digital, a vantagem 
primária que esse cenário nos apresenta inicialmente é, sem dúvidas, a 
integridade e a segurança da informação. Todavia, existe também diversas 
outras vantagens a qual a biometria digital pode oferecer. 
Atualmente, o Brasil mostrou-se não ter dificuldade para implantar 
esse tipo de tecnologia, pois um dos órgãos que mais utilizam esse método são 
os Bancos, onde adotaram o uso da biometria nos ATM’s (Automated Teller 
Machine) comumente mais conhecido como Caixa Eletrônico, para algumas 
operações. 
Tendo como base o tempo de estudo e absorção dos conteúdos 
transmitidos em aulas, acreditamos que uma aplicação construída na linguagem 
de programação Java, pode, de maneira satisfatória, ajudar na elaboração de 
um Sistema de Identificação e Autenticação Biométrica. 
Através de pesquisas e análises, o vigente trabalho ambiciona 
descrever a metodologia de desenvolvimento de um Sistema de Identificação e 
Autenticação Biométrica, desde sua idealização até seu processo de finalização. 
Por fim, torna-se também um objetivo, mesmo que seja secundário, 
mas não menos importante, juntamente com a elaboração desse sistema de 
identificação e autenticação, restringir o acesso a uma rede com Banco de Dados 
do Ministério do Meio Ambiente, onde as informações contidas nesse Banco são 
estratégicas sobre as propriedadesrurais que utilizam agrotóxicos proibidos, 
causando grandes impactos nos lençóis freáticos, rios e mares. Dividas em três 
níveis de acesso, cada usuário, respeitando sua respectiva hierarquia deverá 
proceder da seguinte maneira de acordo com seu nível: o nível 1, todos podem 
ter acesso; já o nível 2, é restrito o acesso, liberado somente aos diretores de 
divisões; no nível 3, somente quem pode ter acesso são Ministros do Meio 
Ambiente. 
10 
 
OBJETIVO 
 
As Atividades Práticas Supervisionadas do 6º Semestre de 2020 do 
Curso de Ciência da Computação, tem por seu objetivo a pesquisa bibliográfica 
e o desenvolvimento de um sistema de identificação e autenticação biométrica. 
Para tal, a apresentação do desenvolvimento de uma aplicação desse nível 
contempla o uso da seguinte linguagem de programação Python juntamente com 
o auxílio do SQLite3, em linguagem SQL, para que possa ser desenvolvido um 
local de armazenamento de informações estratégicas. 
No intuito de satisfazer e cumprir o que foi proposto para o trabalho 
acadêmico semestral vigente, desenvolver um Banco de Dados para armazenar 
informações estratégicas sobre as propriedades rurais que utilizam agrotóxicos 
proibidos por causarem grandes impactos nos lenções freáticos, rios e mares, 
tornou-se nossa base para atingir o objetivo principal, que visa a criação do 
desenvolvimento de um sistema de identificação e autenticação biométrica. Não 
menos importante, é, compreender os conceitos, a utilização e aplicação das 
técnicas selecionadas, buscando os benefícios que o estudo sobre elas 
proporcionou durante o desenvolvimento da atual pesquisa acadêmica. 
Visa-se, também, entender como o processo da utilização de 
agrotóxicos e fertilizantes proibidos, danosos à saúde, em território nacional, 
ocorre, fazendo uma breve abordagem sobre o assunto, tentando encontrar uma 
solução para um equilíbrio ambiental resultando na boa qualidade do meio 
ambiente, no bom funcionamento da vida social campestre e que maneiras 
melhores e sustentáveis fortaleçam o bom desenvolvimento das comunidades 
camponesas. 
11 
 
FUNDAMENTOS DAS PRINCIPAIS TÉCNICAS BIOMÉTRICAS 
 
As áreas que se relacionam aos sistemas de imagens digitais, como, 
por exemplo, processamento de imagens, síntese de imagens, CV (Computer 
Vision) e reconhecimento de padrões, possuem, atualmente, uma área de 
atuação bem definida, relacionando dados e imagens. 
O que difere cada uma delas, concentra-se na relação entre a 
utilização de técnicas de A.I (Artificial Intelligence), imagens e dados. Se os 
dados são utilizados para gerar imagens, a área que será empregada para tal, 
será a síntese de imagens. Se caso os dados forem resultantes das informações 
adquiridas por meio de imagem, a área que compete à essa técnica seria a área 
de análise de imagens. A técnica de processamento de imagens é uma vertente 
da computação gráfica que modifica as imagens, bem como a área de 
processamento de dados, que, por sua vez, faz a transformação dos dados. 
Visão Humana 
 
Por se tratar de um órgão sensorial extremamente complexo que 
realiza a captura de relações espaciais e temporais dos objetos que se 
apresentam no ângulo de visão, o olho torna-se um dos sensores essenciais 
para o entendimento e compreensão do ser humano sobre o que ocorre ao seu 
redor, onde, impulsos luminosos que são capturados pelo olho são 
transformados em impulsos elétricos, que são transmitidos e processados pelo 
cérebro. Nesse caminho, a fase inicial que seria a energia luminosa capturada 
pelo olho, trabalha em conjunto com a retina, enviando os impulsos capturados 
através do nervo óptico para que a imagem possa ser formada no cérebro. 
Esse processo da visão dá-se início pela córnea. A córnea é a parte 
anterior translucida do olho, e nela, acontece a entrada do estímulo luminoso no 
sistema visual humano. Para auxiliar a córnea, a retina converte esses estímulos 
luminosos em impulsos elétricos que são enviados ao cérebro através do nervo 
óptico, que contém aproximadamente 1,000,000 de fibras nervosas. O “modo de 
ignição”, ou seja, o start para a percepção do sistema visual encontra-se na 
retina, que, por sua vez, ocupa um espaço de aproximadamente 1.000mm² e é 
constituída por mais ou menos 100 milhões de sensores. 
12 
 
Cada um desses sensores converte apenas uma parte do estímulo 
luminoso da imagem para impulso elétrico, que será processado pelo cérebro. 
Como resposta ao estímulo luminoso que percorre as camadas 
translucidas da retina e, juntamente, com cones e bastonetes, geram reações 
fotoquímicas que são transformadas em sinais nervosos, enviados pelas fibras 
ópticas aos centros cerebrais superiores, ocasionando, assim, o efeito que 
conhecemos como visão. 
Computer Vision 
 
A visão computacional relaciona-se à análise de imagens, e vem 
sendo muito desenvolvida ao passar dos últimos anos. Este ramo da 
computação, em específico, trata da retirada de informação das imagens e da 
classificação e identificação de objetos que nelas se fazem presentes. Os 
sistemas de Computer Vision vêm sendo utilizados em reconhecimentos de 
pessoas, de assinaturas e de objetos; inspecionamento de peças em linhas de 
fabricação; supervisão de movimentos de robôs em indústrias automatizadas 
etc. Sistemas de Computer Vision (ou Visão Computacional) envolvem a análise 
de imagem e técnicas de Artificial Intelligence (ou Inteligência Artificial) ou 
tomada de decisão, permitindo a identificação e proporcionando a classificação 
de imagens e/ou objetos. 
Aquisição De Imagens 
 
A etapa inicial de um sistema de Computer Vision tem como base a 
aquisição de imagens. 
A conversão de um cenário real tridimensional para uma imagem 
eletrônica é a redução de sua dimensionalidade, esse é o primeiro passo. 
Câmeras fotográficas ou câmeras de vídeo converte cenas 3D em 
representações 2D da imagem. 
Pode-se considerar uma imagem como uma distribuição de energia 
luminosa em um posicionamento espacial. A iluminação distribui energia sobre 
indeterminado objeto. Parte dessa energia luminosa é absorvida por tal objeto, 
outra parte é enviada e uma outra parte é refletida, onde será capturada por uma 
câmera ou por qualquer outro sensor semelhante. 
13 
 
Em caso de ser uma câmera, mais especificamente uma câmera CCD 
(Charge Couple Device) monocromática simples que contém um jogo de lentes 
que focaliza a imagem sobre a área fotossensível do CCD, um sensor CCD e 
seus circuitos complementares. 
Para que haja a possibilidade da aquisição de imagens coloridas 
fazendo a utilização do CCD, necessita-se de um conjunto de primas e filtros de 
cor que são encarregados para realizar a decomposição da imagem colorida em 
suas componentes R, G e B (red, green e blue), onde cada um desses 
componentes será capturado por um CCD de maneira independente. 
Com essas tecnologias computacionais em estágio mais avançado foi 
possível desenvolver novos métodos de segurança para se ter acesso a dados 
pessoais e para possíveis transações, esse método começou a ser conhecido 
como biometria. A biometria pode ser usada com reconhecimento facial, de voz, 
de íris e impressão digital o que automaticamente pode se traduzir em uma 
autenticação muito mais confiável e segura já que possibilidade de erro é bem 
menor, entretanto, isso não faz da biometria a prova de falhas. 
Essa tecnologia começou a ser realmente importante a partir da 
década de 80 onde o FBI realizou a digitalização das digitais de seus bancos de 
dados para maior facilidade na identificação do seu próprio pessoal e de pessoas 
com passagem em delegacias, presídios entre outras ocasiões de interesse do 
governo federal. Acabou se tornando mais popular 10 anos depois, quando 
empresas corporativas despertaram interesse na tecnologia e hoje vemos o 
resultado de tal confiança nela já que no momento atual Celulares, Caixa 
Eletrônicos, Fechaduras entre outrasdezenas de dispositivos funcionam a partir 
da sua digital para autenticar a segurança. E como funciona a autenticação 
utilizando o método impressão digital? 
 
 
• A primeira etapa do processo consiste em capturar a imagem 
digitalizada da impressão digital por meio de um sensor. 
14 
 
• A segunda etapa é chamada de extração, que é a etapa onde a 
imagem é tratada e é retirada características únicas conhecida 
como templates que vão ser usadas na próxima etapa. 
• E por fim a terceira e última camada, que irá comparar a imagem 
capturada pelo sensor com as imagens já armazenadas em seu 
banco de dados, e assim, caso eles sejam iguais, é feita a 
autenticação. 
Atualmente, empresas utilizam as digitais para grande parte de seus 
processos, como por exemplo: para que os funcionários no momento de entrada 
e saída do seu expediente possam bater o ponto, marcando suas horas 
trabalhadas sem a necessidade de passar cartões ou assinar, o que agiliza esse 
processo e aumenta a segurança do local. Outro exemplo, demasiadamente 
visto no cenário corporativo, é a autenticação para acessar o sistema da 
empresa via de impressão digital onde cada funcionário terá acesso sem a 
necessidade de digitar logins e senhas. 
No Brasil, a biometria também é utilizada para auxiliar nas eleições. 
O TSE (Tribunal Superior Eleitoral) decretou a obrigatoriedade do cadastramento 
das digitais para que o eleitor possa participar das eleições, logo, sua 
confirmação de presença na votação seria mais segura, o que poderia minimizar 
ou extinguir alguns erros ou fraudes. Alguns municípios haviam informado que 
as eleições de 2020 utilizariam autenticação via biometria para confirmar a 
presença do eleitor, todavia, com a chegada da pandemia isso acaba se 
tornando incerto. 
15 
 
CONCEITOS GERAIS: BIOMETRIA 
 
A biometria vem sendo apontada como uma rentável e promissora 
solução para sanar os problemas de autenticação. Esse tipo de tecnologia, a 
tecnologia biométrica, consiste em identificar com segurança qualquer indivíduo 
através de sua impressão digital, íris, palma da mão, entre outras características 
corporais. Com ênfase voltada ao combate de fraudes, proporcionar ao cidadão 
o exercício de sua cidadania, promover o conforto e facilitar o acesso em certos 
locais são algumas das benfeitorias que a tecnologia biométrica pode 
proporcionar a sociedade. 
Biometria, (do grego bios: vida; metron: medida), é a utilização de 
características biológicas em sistemas de identificação. Designa-se uma 
maneira automática de verificação ou reconhecimento através de medidas 
anatômicas, fisiológicas e características comportamentais de cada indivíduo em 
sua particularidade. 
No Brasil, a utilização desse tipo de tecnologia faz-se presente em 
diversos lugares, por exemplo, como espaços de ginásticas, controle de acessos 
em universidades, ensino fundamental e médio privado, residências e em 
empresas, para realizar consultas e exames médios em sistemas privatizados 
de saúde. 
Francis Galton, um cientista britânico, é considerado um dos 
fundadores do que é chamado hoje de Biometria. Em meados do ano de 1892, 
Galton desenvolveu o primeiro sistema moderno de impressão digital. 
Posteriormente, esse sistema foi severamente incorporado e utilizado nos 
departamentos de polícia ao redor do mundo, pois, até então, a impressão digital 
era o meio de identificação que mais poderia se confiar, até o surgimento da 
tecnologia do DNA, no século XX. 
As impressões digitais, quando utilizadas a fim de identificar alguém, 
dá-se por meio de uma forma computadorizada, que é baseada no processo de 
análise das minúcias ou pontos singulares, característico de cada indivíduo, a 
saber: linhas da digital, bifurcações e as extremidades, que passam por uma 
transformação algorítmica matemática para posteriormente serem guardadas 
em um banco de dados. 
16 
 
USO DE AGROTÓXICOS E FERTILIZANTES DANOSOS À SAÚDE EM 
TERRITÓRIO NACIONAL 
No Brasil, o estilo de produção agropecuário utilizado baseia-se na 
“revolução-verde”, onde o aumento da produtividade é obtido por meio do 
melhoramento de plantas através de processo genético e pela utilização de 
insumos, como os fertilizantes e agrotóxicos. Todavia, esse processo necessita 
de uma estruturação da sociedade para que seja possível avaliá-la e gerenciar 
os possíveis riscos que surgirão com o uso desses produtos. Mesmo havendo 
um grande número de dados com propriedades físico-químicas, ambientais e 
toxicológicos que são exigidos por órgãos que regulam esse processo de 
registros dos agrotóxicos, restam incertezas inúmeras ao que diz respeito sobre 
os impactos causados ao meio ambiente com a utilização dessas substâncias e, 
por consequência, o detrimento da saúde humana. A supervisão e a avaliação 
dos danos advindos através da utilização destas substâncias tornam-se 
essenciais para assegurar a sustentabilidade dos sistemas de produção 
agropecuários que usam tais insumos (OLIVEIRA, 2005). 
Somente através da realização de avaliações contínuas e periódicas, 
torna-se possível estabelecer um nível considerável de segurança para a 
utilização de substâncias com toxicidade reconhecida para organismos 
biológicos, como são os agrotóxicos. Ao passo que ciência foi avançando, 
observou-se que, atualmente, é imprescindível a geração de dados às novas 
tecnologias, para que sejam verificados os níveis ideais de segurança que foram 
estabelecidos na época da concessão do registro do ingrediente ativo, se são 
validos (ou não) para as condições atuais. 
Sendo assim, o objetivo deste trabalho, especificamente nesta etapa, 
destina-se a identificar a utilização de agrotóxicos e fertilizantes danosos à saúde 
baseando-se em referências que foram geradas e disponibilizadas pela 
comunidade científica nas últimas duas décadas. 
Na figura abaixo, observa-se que consumo médio de agrotóxicos vem 
crescendo comparando-se à a área plantada, ou seja, de 10,5 litros/hectare em 
2002, passou para 12,01 litros/hectare em 2011. Este aumento deve-se a 
diversos fatores contribuintes, como o crescimento do plantio da soja transgênica 
17 
 
que aumenta o consumo de glifosato, a crescente resistência das ervas 
“daninhas”, dos fungos e dos insetos, onde a demanda de agrotóxico torna-se 
maior, aumentando consideravelmente possíveis doenças nas lavouras, como 
ferrugem asiática, na soja, que propicia o aumento do consumo de fungicidas. 
Os agricultores sentem-se estimulado ao uso dos agrotóxicos devido a 
diminuição dos preços e da abrupta isenção de taxas de impostos dos 
agrotóxicos, propiciando aos agricultores uma utilização maior dessas 
substâncias por hectare (PIGNATI, 2012). A utilização dos fertilizantes químicos, 
sua média de consumo por hectare, não sofreu alteração em seu nível no 
período. 
 
 
Figura 1 - Produção agrícola e consumo de agrotóxicos e fertilizantes químicos nas lavouras do Brasil, de 
2002 a 2011. 
 
Fonte: Dossiê Abrasco. Um alerta sobre os impactos dos Agrotóxicos na Saúde, 2012. 
 
Dado o volume de agrotóxicos que fora consumido por inúmeros tipos 
de culturas sendo que a soja, a que mais utilizou, fez uso de 40% do volume total 
entre herbicidas, inseticidas, fungicidas, acaricidas e outros. Logo após está o 
milho, que utilizou 15%, a cana e o algodão com 10%, posteriormente os críticos 
com 7%, o café (3%), o trigo (%3), o feijão, a pastagem (1%), a batata (1%), o 
tomate (1%), a maçã (0,5%), a banana (0,2%) e as outras culturas consumiram 
18 
 
3,3% do total de 852,8 milhões de litros de agrotóxicos pulverizados nessas 
lavouras em 2011, segundo o dossiê Abrasco e a figura exibida acima. 
RESÍDUOS DE AGROTÓXICOS EM ALIMENTOS NO BRASIL 
 
No território nacional brasileiro, um terço dos alimentos que são 
consumidos diariamente encontra-se contaminado pelos agrotóxicos, segundo 
análise de amostras que foram coletadas em 26 Universidades Federadas do 
Brasil,que foi realizada través do Programa de Análise de Resíduos de 
Agrotóxicos em Alimentos (PARA) da ANVISA, em 2010. Abaixo, a figura 
evidencia que um total de 63% das amostras que foram submetidas a análise, 
apresentam contaminação oriundo da utilização de agrotóxicos, sendo que uma 
fatia de 28% exibe ingredientes ativos não autorizados, ou seja, de uso proibido 
ou que excedeu o limite máximo de resíduos que são considerados aceitáveis. 
Na fatia de 35%, exibe-se a porcentagem de contaminação por agrotóxicos 
dentro dos limites estipulados. Embora os números exibidos margeiam um 
cenário demasiado preocupante relacionado à saúde da população, estes 
mesmos números podem não refletir de maneira fidedigna a real dimensão e 
situação do problema, pois, há diversas ignorâncias e incertezas científicas 
enraizadas na definição destes limites, a saber: 37% das amostras sem resíduos 
referem-se aos ingredientes ativos que foram pesquisados, 235 em 2010 – o que 
ainda não permite afirmar com extrema acurácia a ausência dos demais (por 
volta de 400), inclusive o glifosato, amplamente utilizado e não submetido a 
pesquisa no PARA. 
Figura 2 - Distribuição das amostras segundo a presença ou a ausência de resíduos de agrotóxicos. 
PARA, 2010 
 
 
Fonte - Embrapa Meio Ambiente. Impactos dos agrotóxicos na saúde humana, 2013 
19 
 
COMO PROCEDER? 
 
Torna-se fundamental que a academia se junte na construção coletiva 
de maneiras solidárias e sustentáveis de organização da vida social, que 
fortaleçam a realização da reforma agrária, que intensifiquem as experiencias 
que foram construídas pelas comunidades camponesas de alternativas ao 
desenvolvimento, por exemplo, o sistema agroecológico, e que promovam a 
inserção e a participação ativa dos que atuam no campo, para a definição de 
políticas com práticas produtivas que respeitem a vida e o meio ambiente. 
20 
 
TECNOLOGIAS UTILIZADAS PARA IMPLEMENTAÇÃO E 
DESENVOLVIMENTO DO SOFTWARE 
CONCEITOS BÁSICOS: PYTHON 
 
A linguagem de programação Python foi desenvolvida no final da 
década de 80 por Guido Van Rossum quando ainda era funcionário do Centro 
de Matemática e Ciência da Computação em Amsterdam, O Python recebeu 
esse nome em homenagem ao comediante Monty Python e hoje é dirigida pela 
Python Software Foundation. 
Atualmente o Python é uma ferramenta gratuita oque 
ocasionalmente atrai mais pessoas e faz com que ele se popularize bastante, 
outro fator que pode ser algo determinante é facilidade em que as coisas 
podem ser programadas nesta linguagem e que acaba sendo porta de entrada 
para pessoas que queira começar a programar. 
Como qualquer outra linguagem do mercado o Python conta com 
uma quantidade extensa de documentação gratuita na internet, como por 
exemplo bibliotecas bem populares como Numpy entre outra que de certo 
modo agiliza o aprendizado para possíveis projetos como proposto por essa 
APS. 
O Python é multiplataforma, tem capacidade operar em diversas 
plataformas como: Windows, Linux e Mac, assim como dezenas de outras 
plataformas, desde supercomputadores até telefones celulares como Android e 
outros sistemas. O python tem como possibilidade ser usado no 
desenvolvimento de pequenas aplicações, mas também permiti o desenvolver 
programas complexos. Possui um grupo de ferramentas para Interface Gráfica 
do Usuário (GUI) poderoso e simples de ser usado, bibliotecas para 
programação web, e muito mais, as mais populares são: 
Pillow - essa biblioteca pode ser usada para manipular imagem como abrir, 
salvar, também consegue manipular outros tipos de arquivos como PDF, GIF e 
etc, além de conseguir facilmente mostrar miniaturas de imagens. 
Numpy - O Numpy é uma biblioteca muito conhecida de processamento de array 
no Python. Ela oferece um bom suporte para diferentes objetos de matriz 
21 
 
multidimensional. O Numpy também oferece uma variedade de ferramentas para 
gerir matrizes. É eficiente e muito bom para gerenciar arrays e matrizes. 
OpenCV – Igualmente conhecido como Open Source Computer Vision, é uma 
biblioteca destinada para processamento de imagens. Ela supervisiona funções 
gerais ligadas na visão instantânea do computador. Apesar de o OpenCV não 
tenha documentação apropriada, com muitos desenvolvedores pontuam, é uma 
das bibliotecas mais complexas para o aprendizado. No entanto, ele oferece 
muitas funções embutidas através das quais você aprende a visão 
computacional facilmente. 
PySimpleGUI – Biblioteca usada para criação de janelas bem simples, tendo 
como possibilidades a criação de botões, campos de texto, caixas de checagem 
e paneis que podem imprimir os logs. Essa biblioteca funciona de maneira 
diferente de outras, quando é apertado um botão gera um evento que só vai 
funcionar se você já tiver pré-determinado o que ele vai fazer, como no 
emexemplo abaixo. 
If evento == ‘Fechar’’: Fecharjanela() 
 
PyQT5 – Biblioteca usada para criação de janelas como PysimpleGUI, é também 
uma ferramenta muito poderosa para esse desfecho trazendo diversas 
possibilidades para o programador como por exemplo o software QtDesign que 
ajuda muito para quem é iniciante, umas das funções utilizada nesse trabalho foi 
o QFileDialog que é usado para escolher foto de um diretório do sue computador. 
22 
 
SQLITE3 
 
Um banco de dados leve e prático, uma biblioteca feita na linguagem 
C e que implementa o banco de dados SQL embutido. O código para o SQLite 
é de domínio público e gratuito para qualquer finalidade, seja comercial ou 
privada. Diferente da maioria dos outros bancos de dados SQL, o SQLite faz a 
leitura e grava diretamente em arquivos de discos simples. Um banco de dados 
SQL complementa várias tabelas, índices e views que está em um único 
arquivo de disco. Os arquivos de banco de dados são um formato de 
armazenamento recomendado pela Us Library of Congress. O SQLite não é uma 
biblioteca usada para conectar com um grande servidor de banco de dados, 
mas sim com o próprio servidor e os programas que usam o SQLite podem ser 
acesso ao banco de dados sem ter que executar um processo de SGBD de 
forma separada. 
Sendo uma biblioteca compacta, o SQLlite com todos os recursos 
habilitados, dependendo da plataforma do destino e das configurações de 
otimização do compilador, o tamanho da biblioteca pode ser inferior a 600kb. O 
código de 64 bits é maior e algumas otimizações do compilador como inlining 
de função agressiva e loop unrolling podem fazer com que o código do objeto 
seja muito maior. 
O SQLite geralmente funciona mais rápido do que a memória que 
será fornecida a ele. No entanto, o desempenho na maioria das vezes é muito 
bom, mesmo em ambientes com pouca memória. Dependendo de como é 
usado, o SQLite pode ser até mais rápido do que a E/S do sistema de arquivos. 
Antes de cada lançamento, o SQLite é testado de forma cuidadosa e 
tem a reputação de ser bem confiável. A maior parte do código-fonte SQLite é 
dedicado exclusivamente a testes e verificação. O SQLite responde 
normalmente as falhas de alocação de memória e erros de E/S de disco. 
Transações são ACID mesmo se interrompido por falhas do sistema ou falhas 
de energia. Tudo é verificado por testes automatizados usando equipamentos 
de testes especiais que simulam as falhas do sistema, mesmo assim ainda 
podem existir bugs e ao contrário de projetos parecidos, o SQLlite é aberto e 
honesto sobre todos os bugs e o mesmo fornece uma lista de bugs e 
cronologias de minuto a minuto sobre alterações de código. 
23 
 
A base do código SQLite é suportada por uma equipe internacional 
de desenvolvedores que trabalham em SQLite em tempo integral. Os mesmos 
continuam a expandir os recursos e aprimoram sua confiabilidade e 
desempenho, ao mesmo tempo que mantem sua compatibilidade com versões 
anteriores das interfaces publicadas. 
O projeto SQLite foi iniciado em 09/05/2000, a intenção dos 
desenvolvedores é de oferecer suporte aoSQLite até o ano de 2050, mas o 
futuro é sempre difícil de prever. 
 
 
SISTEMA USADO PARA A CRIAÇÃO DO PROJETO 
 
Para o desenvolvimento da aplicação de um sistema de identificação 
e autenticação biométrica, constituído em linguagem Java, foi utilizado um 
monitor Samsung (21,5 Full HD), com processador Ryzen 7 2700, memória RAM 
de 8GB DDR4, placa de vídeo GTX 1050 e armazenamento de 1,5 TB. Para 
auxiliar no desenvolvimento da aplicação, também foram usados os softwares 
Apache NetBeans IDE e, para a construção do banco de dados, o MySQL. 
24 
 
PROJETO 
 
 
 
INTERFACE LOGIN 
 
25 
 
 
 
 
 
INTERFACE DE CADASTRAR 
 
 
 
 
26 
 
FAZENDO LOGIN NA REDE 
Passo 1: 
 
 
 
 
Passo 2: 
 
27 
 
Passo: 3 
 
 
 
CADASTRANDO NOVOS USUÁRIOS 
Passo 1: 
 
 
 
28 
 
Passo 2: 
 
 
 
 
29 
 
RELATÓRIO COM AS LINHAS DE CÓDIGO DO PROGRAMA 
 
 
Na Classe Teste2 foi onde importamos todas as outras classes e 
funções das classes para fazer nosso projeto funcionar. As linhas abaixos 
mostram as bibliotecas e classes que usamos. 
import cursor as cursor 
import cv as cv 
import skimage.morphology 
import cv2 
import numpy as np 
import sqlite3 
import skimage 
import skimage.morphology 
import cv2 as cv 
import mysql.connector 
from getTerminationBifurcation import getTerminationBifurcation; 
from removeSpuriousMinutiae import removeSpuriousMinutiae 
from CommonFunctions import ShowResults 
from extractMinutiaeFeatures import extractMinutiaeFeatures 
from PyQt5 import uic, QtWidgets 
from PyQt5.QtGui import QPixmap 
from PyQt5.QtWidgets import QFileDialog, QLabel, QVBoxLayout 
from PySimpleGUI import PySimpleGUI as sg 
 
Nessa linha foram criadas variáveis locais para que seus valores possam ser 
usados nas funções que foram criadas. 
global autenticador 
global nivel 
global result 
global codigo 
global result1 
30 
 
global result_final 
global nivelc 
Foi criada a função login, login2 e login 3 para enviar os dados da 
digital que foi cadastrada no banco de dados e a mesma retornar todos os 
dados que aquele usuário tem acesso no nivel em que ele foi cadastrado. Caso 
ele tente entrar em outro nivel, aparecerá uma mensagem informando que ele 
não possui acesso. 
def login(): 
nivelc = 'nivel1' 
banco = sqlite3.connect('ministerio') 
cursor = banco.cursor() 
find_user = ("SELECT * FROM pessoas WHERE id = ? AND nda = ?") 
cursor.execute(find_user,[(id),(nivelc)]) 
results = cursor.fetchall() 
if results: 
for i in results: 
print("Welcome " + i [0]) 
cursor.execute("SELECT nome_propriedade,endereço FROM dados") 
print(cursor.fetchall()) 
break 
else: 
print("Não encontrado ou não possui acesso") 
def login2(): 
nivelc = 'nivel2' 
banco = sqlite3.connect('ministerio') 
cursor = banco.cursor() 
find_user = ("SELECT * FROM pessoas WHERE id = ? AND nda = ?") 
cursor.execute(find_user,[(id),(nivelc)]) 
results = cursor.fetchall() 
if results: 
for i in results: 
print("Welcome" + i [0]) 
31 
 
cursor.execute("SELECT nome_propriedade,endereço,agrtox_usado FROM dados") 
print(cursor.fetchall()) 
break 
 
else: 
print("Não encontrado ou Não possui acesso") 
def login3(): 
nivelc = 'nivel3' 
banco = sqlite3.connect('ministerio') 
cursor = banco.cursor() 
find_user = ("SELECT * FROM pessoas WHERE id = ? AND nda = ?") 
cursor.execute(find_user,[(id),(nivelc)]) 
results = cursor.fetchall() 
if results: 
for i in results: 
print("Welcome " + i [0]) 
cursor.execute("SELECT nome_propriedade,endereço,agrtox_usado,dono_p,telefone 
FROM dados") 
print(cursor.fetchall()) 
else: 
print("Não encontrado ou Não possui acesso") 
Função cadastro foi criada para cadastrar o usuário no banco de 
dados, ela reuni todas as informações preenchidas, desde o cadastro da digital 
até as informações pessoais como nome, cargo e seu nível de acesso. Foi 
usada a biblioteca PYSimpleGui para criar a interface gráfica da tela cadastrar, 
inserimos as caixa de texto para o usuário inserir os seus dados e criamos botões 
do nivel1, nivel2 e nivel3 para ele escolher em qual nível vai ter acesso. 
def cadastro(): 
sg.theme("DarkGreen") 
layout = [ 
[sg.Text('Nome'), sg.Input(key='nome', size=(20, 1))], 
[sg.Text('Cargo'), sg.Input(key='cargo', size=(20, 1))], 
[sg.Button('Carregar Digital'), sg.Button('Confirmar')], 
32 
 
[sg.Button('Nivel 1'), sg.Button('Nivel 2'),sg.Button('Nivel 3')], 
[sg.Button('Cadastrar'), sg.Button('Fechar')] 
] 
janela = sg.Window("Cadastro", layout) 
 
 
while True: 
eventos, valores = janela.read() 
if eventos == 'Nivel 1': 
nivelc = 'nivel1' 
if eventos == 'Nivel 2': 
nivelc = 'nivel2' 
if eventos == 'Nivel 3': 
nivelc = 'nivel3' 
if eventos == 'Carregar Digital': 
fname = QFileDialog.getOpenFileName() 
global mostra 
mostra = fname 
global url 
url = convertTuple(fname) 
url = (url[:-13]) 
if eventos == 'Confirmar': 
iniciaprogr() 
if eventos == 'Cadastrar': 
nome = (valores['nome']) 
cargo = (valores['cargo']) 
id = codigo 
banco = sqlite3.connect('ministerio') 
cursor = banco.cursor() 
cursor.execute("INSERT INTO pessoas VALUES ('" + nome + "'," + str(id) + ",'" + cargo + 
"','" + nivelc + "')") 
banco.commit() 
33 
 
if eventos == sg.WIN_CLOSED or eventos == 'Fechar': 
break 
def convertTuple(tup): 
str = ''.join(tup) 
return str 
Classe iniciaprogr está sendo usada para anexar a imagem da digital 
que está no diretório do computador e assim ela é tratada removendo todos 
pixels brancos ao redor da digital e assim ele inverte as cores para que a 
função de minúcias consiga visualizar apenas as minúcias e bifurcações. 
def iniciaprogr(): 
imginput = cv2.imread(url,0) 
img = cv.bitwise_not(imginput) 
 
Essa linha transforma a imagem em linear e retorna ele em 8 bit 
limiar, img = cv2.threshold(img, 128, 255, cv2.THRESH_TOZERO) 
img = np.uint8(img > 128); 
 
skel = skimage.morphology.skeletonize(img) 
skel = np.uint8(skel) * 255; 
 
mask = img * 255; 
(minutiaeTerm, minutiaeBif) = getTerminationBifurcation(skel, mask); 
 
 
minutiaeTerm = skimage.measure.label(minutiaeTerm, connectivity=2); 
RP = skimage.measure.regionprops(minutiaeTerm) 
minutiaeTerm = removeSpuriousMinutiae(RP, np.uint8(img), 10); 
 
 
BifLabel = skimage.measure.label(minutiaeBif, connectivity=2); 
TermLabel = skimage.measure.label(minutiaeTerm, connectivity=2); 
34 
 
Essa linha está usando funções criadas em outras classes que foram 
importadas nessa classe para que elas possam extrair as minúcias e bifurcação 
e assim ela faz a soma delas que retorna um valor e usamos ele como o ID de 
cada usuário. 
FeaturesTerm, FeaturesBif = extractMinutiaeFeatures(skel, minutiaeTerm, minutiaeBif) 
chave = len(FeaturesTerm + FeaturesBif); 
global codigo 
codigo = (chave+1000) 
global id 
id = codigo 
ShowResults(skel, TermLabel, BifLabel) 
return codigo 
 
Nessa linha foi criada os botões de puxar a função iniciaprogr para poder 
carregar a imagem e o botão confirmar é quem vai fazer a função funcionar para 
que a imagem seja tratada e retorne o ID que será necessario para a realização 
do cadastro no banco de dados. 
sg.theme("DarkGreen") 
layout = [ 
[sg.Button('Carregar Digital'), sg.Button('Confirmar')], 
[sg.Button('Nivel 1'), sg.Button('Nivel 2'),sg.Button('Nivel 3')], 
[sg.Button('Cadastrar'),], 
[sg.Text('MINISTÉRIO DO MEIO AMBIENTE')], 
[sg.Output(size=(60,30))] 
] 
janela = sg.Window('LOGIN').layout(layout) 
app = QtWidgets.QApplication([]) 
while True: 
eventos, valores = janela.read() 
if eventos == 'Carregar Digital': 
fname = QFileDialog.getOpenFileName() 
global mostra 
35 
 
mostra = fname 
global url 
url = convertTuple(fname) 
url = (url[:-13]) 
 
 
 
if eventos == 'Confirmar': 
iniciaprogr() 
 
 
Essas linhas são as condições que foram criadas para cada botão, se o usuario 
por exemplo ao colocar seus dados e clicar no botão nivel 1, a função login vai 
registrar no banco de dados que aquele usuariovai pertencer ao nivel 1. 
if eventos == 'Nivel 1': 
login() 
if eventos == 'Nivel 2': 
login2() 
if eventos == 'Nivel 3': 
login3() 
if eventos == 'Cadastrar': 
cadastro() 
if eventos == sg.WIN_CLOSED or eventos == 'Fechar': 
break 
 
COMMONFUNCTIONS 
 
 
Essa classe é onde tem as funções que irão tratar as imagens, colocando as minuncias e 
bifurcações na imagem após ser tradada. 
 
 
import numpy as np 
import skimage 
import cv2 
36 
 
def ShowResults(skel, TermLabel, BifLabel): 
minutiaeBif = TermLabel * 0; 
minutiaeTerm = BifLabel * 0; 
(rows, cols) = skel.shape 
DispImg = np.zeros((rows, cols, 3), np.uint8) 
DispImg[:, :, 0] = skel; 
DispImg[:, :, 1] = skel; 
DispImg[:, :, 2] = skel; 
 
 
RP = skimage.measure.regionprops(BifLabel) 
for idx, i in enumerate(RP): 
(row, col) = np.int16(np.round(i['Centroid'])) 
minutiaeBif[row, col] = 1; 
(rr, cc) = skimage.draw.circle_perimeter(row, col, 3); 
skimage.draw.set_color(DispImg, (rr, cc), (255, 0, 0)); 
 
RP = skimage.measure.regionprops(TermLabel) 
for idx, i in enumerate(RP): 
(row, col) = np.int16(np.round(i['Centroid'])) 
minutiaeTerm[row, col] = 1; 
(rr, cc) = skimage.draw.circle_perimeter(row, col, 3); 
skimage.draw.set_color(DispImg, (rr, cc), (0, 0, 255)); 
cv2.imshow('a', DispImg); 
 
cv2.waitKey(0) 
extractminutiaefeatures 
 
 
Essa Classe é onde as extrações das minúcias que logo são 
chamadas no main (classe Teste2). Foi utilizada as bibliotecas numpy para que 
pudesse fazer essa extração nas imagens e retornar um valor ou mostrar em 
uma nova tela as bifurcações e minúcias encontradas na imagem. 
37 
 
import numpy as np 
import cv2 
import skimage 
import math 
 
class MinutiaeFeature(object): 
def init (self, locX, locY, Orientation, Type): 
self.locX = locX; 
self.locY = locY; 
self.Orientation = Orientation; 
self.Type = Type; 
 
def computeAngle(block, minutiaeType): 
(blkRows, blkCols) = np.shape(block); 
CenterX, CenterY = (blkRows-1)/2, (blkCols-1)/2 
if(minutiaeType.lower() == 'termination'): 
sumVal = 0; 
for i in range(blkRows): 
for j in range(blkCols): 
if((i == 0 or i == blkRows-1 or j == 0 or j == blkCols-1) and block[i][j] != 0): 
angle = -math.degrees(math.atan2(i-CenterY, j-CenterX)) 
sumVal += 1 
if(sumVal > 1): 
angle = float('nan'); 
return(angle) 
elif(minutiaeType.lower() == 'bifurcation'): 
(blkRows, blkCols) = np.shape(block); 
CenterX, CenterY = (blkRows - 1) / 2, (blkCols - 1) / 2 
angle = [] 
sumVal = 0; 
for i in range(blkRows): 
38 
 
for j in range(blkCols): 
if ((i == 0 or i == blkRows - 1 or j == 0 or j == blkCols - 1) and block[i][j] != 0): 
angle.append(-math.degrees(math.atan2(i - CenterY, j - CenterX))) 
sumVal += 1 
if(sumVal != 3): 
angle = float('nan') 
return(angle) 
 
 
Essa função é onde recebe os dados já lidos e assim identifica quantas 
bifurcações e minúcias foram extraídas e retorna o valor da FeaturesTerm e 
FeaturesBif. 
 
 
def extractMinutiaeFeatures(skel, minutiaeTerm, minutiaeBif): 
FeaturesTerm = [] 
 
minutiaeTerm = skimage.measure.label(minutiaeTerm, connectivity=2); 
RP = skimage.measure.regionprops(minutiaeTerm) 
 
WindowSize = 2 # --> For Termination, the block size must can be 3x3, or 5x5. Hence 
the window selected is 1 or 2 
FeaturesTerm = [] 
for i in RP: 
(row, col) = np.int16(np.round(i['Centroid'])) 
block = skel[row-WindowSize:row+WindowSize+1, col-WindowSize:col+WindowSize+1] 
angle = computeAngle(block, 'Termination') 
FeaturesTerm.append(MinutiaeFeature(row, col, angle, 'Termination')) 
FeaturesBif = [] 
minutiaeBif = skimage.measure.label(minutiaeBif, connectivity=2); 
RP = skimage.measure.regionprops(minutiaeBif) 
WindowSize = 1 # --> For Bifurcation, the block size must be 3x3. Hence the window 
selected is 1 
for i in RP: 
39 
 
(row, col) = np.int16(np.round(i['Centroid'])) 
block = skel[row-WindowSize:row+WindowSize+1, col-WindowSize:col+WindowSize+1] 
angle = computeAngle(block, 'Bifurcation') 
FeaturesBif.append(MinutiaeFeature(row, col, angle, 'Bifurcation')) 
 
 
return(FeaturesTerm, FeaturesBif) 
 
 
getTerminationBifurcation 
 
 
def getTerminationBifurcation(img, mask): 
img = img == 255; 
(rows, cols) = img.shape; 
minutiaeTerm = np.zeros(img.shape); 
minutiaeBif = np.zeros(img.shape); 
 
for i in range(1,rows-1): 
for j in range(1,cols-1): 
if(img[i][j] == 1): 
block = img[i-1:i+2,j-1:j+2]; 
block_val = np.sum(block); 
if(block_val == 2): 
minutiaeTerm[i,j] = 1; 
elif(block_val == 4): 
minutiaeBif[i,j] = 1; 
 
 
mask = convex_hull_image(mask>0) 
mask = erosion(mask, square(5)) # Structuing element for mask erosion = square(5) 
minutiaeTerm = np.uint8(mask)*minutiaeTerm 
return(minutiaeTerm, minutiaeBif) 
40 
 
removeSpuriousMinutiae 
Essa função consiste em retirar o máximo de interferências da extração de 
minutos da digital selecionada. 
import cv2 
 
import numpy as np 
 
import skimage.morphology 
 
import skimage 
 
def removeSpuriousMinutiae(minutiaeList, img, thresh): 
 
 img = img * 0; 
 
 SpuriousMin = []; 
 
 numPoints = len(minutiaeList); 
 
 D = np.zeros((numPoints, numPoints)) 
 
 for i in range(1,numPoints): 
 
 for j in range(0, i): 
 
 (X1,Y1) = minutiaeList[i]['centroid'] 
 
 (X2,Y2) = minutiaeList[j]['centroid'] 
 
 dist = np.sqrt((X2-X1)**2 + (Y2-Y1)**2); 
 
 D[i][j] = dist 
 
 if(dist < thresh): 
 
 SpuriousMin.append(i) 
 
 SpuriousMin.append(j) 
 
 SpuriousMin = np.unique(SpuriousMin) 
 
 for i in range(0,numPoints): 
 
 if(not i in SpuriousMin): 
 
 (X,Y) = np.int16(minutiaeList[i]['centroid']); 
 
 img[X,Y] = 1; 
 
 
 img = np.uint8(img); 
 
 return(img) 
41 
 
REFERENCIAS 
 
 
 
Python: O que é? Por que usar?. PyScience-Brasil.http://pyscience-
brasil.wikidot.com/python:python-oq-e-
pq#:~:text=Al%C3%A9m%20disso%2C%20Python%20suporta%20m%C3%BAl 
tiplos,o%20desenvolvimento%20de%20algoritmos%20complexos. 
Vaz, Welton. Saiba mais como o python surgiu e qual o seu cenário 
atual.Vulpi.https://blog.vulpi.com.br/python-como-
surgiu/#:~:text=Python%20foi%20criado%20no%20final,com%20o%20sistema 
%20operacional%20Amoeba. 
 
https://www.teses.usp.br/teses/disponiveis/6/6134/tde-28062005- 
101218/publico/SergiaSouzaOliveira.pdf (Oliveira) 
 
Pignati,Wardelei. Avaliação integrada dos impactos dos 
agrotóxicos na saúde e ambiente.UFMT. 
http://www.contag.org.br/imagens/f1656pignati---ufmt.pdf 
 
 
https://www.mprs.mp.br/media/areas/ambiente/arquivos/agrotoxicos/dossie_abr 
asco_agrotoxico.pdf(Dossie Abrasco) 
 
https://www.cnpma.embrapa.br/down_site/forum/2013/agrotoxicos/palestras/Fo 
rum2013_KARENFRIEDRICH.pdf (cnpma.Embrapa - grafico) 
http://www.teses.usp.br/teses/disponiveis/6/6134/tde-28062005-
http://www.mprs.mp.br/media/areas/ambiente/arquivos/agrotoxicos/dossie_abr
http://www.cnpma.embrapa.br/down_site/forum/2013/agrotoxicos/palestras/Fo
42 
 
 
 
 
43 
 
 
 
 
44

Outros materiais