GithubHelp home page GithubHelp logo

diagnosticocatarata's Introduction

Hello World! 👋

I'm Ítalo Epifânio, a passionate R&D Python Developer at Palaimon GmbH, where I'm deeply engaged in developing innovative AI/ML products. With a rich background in software engineering and computer science, I specialize in Python and data-driven technologies.

🎓 Educated in Computer Science with a decade of technology education, I started programming at 15 and haven't stopped exploring new frontiers in tech. My expertise spans full-stack development, AI, and machine learning, with a keen interest in MLOps.

📈 As a versatile developer, I have experience in web development (PHP, JavaScript, Python, C++, SQL and NoSQL databases) and a strong focus on AI, particularly in computer vision.

🌍 Community engagement is at the heart of my journey. I actively contribute to the Python community through organizing events, giving talks, open-source contributions, and supporting newcomers.

📚 I share my tech insights and experiences at:

🔍 Let's connect and explore the realms of technology together!

diagnosticocatarata's People

Contributors

itepifanio avatar joelfmjr avatar

Watchers

 avatar  avatar  avatar

Forkers

joelfmjr

diagnosticocatarata's Issues

Criar makefile

O nome do binário/executável deverá ser “​ catarata​ ” e o mesmo deverá ser capaz de processar​ ​ um​ ​ conjunto​ ​ de​ ​ parâmetros,​ ​ como​ ​ indicado​ ​ a ​ ​ seguir:

-i​ ​ ​ ​ a ​ ​ imagem​ ​ de​ ​ entrada​ ​ a ​ ​ ser​ ​ processada
-f​ ​ ​ ​ indica​ ​ o ​ ​ formato​ ​ da​ ​ imagem​ ​ de​ ​ entrada
-o​ ​ ​ ​ indica​ ​ o ​ ​ nome​ ​ do​ ​ arquivo​ ​ texto​ ​ contendo​ ​ o ​ ​ diagnóstico

Exemplo de execução:

./catarata​ ​ -i​ ​ ​ imagem.bmp​ ​ ​ -f​ ​ bmp​ ​ -o​ ​ diagnostico.txt

Classificação dos pixels da pupila

Analisar cada pixel da pupila e determinar se é um pixel de catarata ou não de acordo com um limiar (​ threshold = 60%-70% ​ ). Fazer a contagem de todos os pixels de catarata presentes na pupila e analisar a quantidade dos mesmos em relação a quantidade de pixel total, resultando em uma porcentagem de
comprometimento​ ​ da​ ​ pupila.

Make clean error

Quando nenhuma imagem é gerada e o comando make clean é acionado há erro mostrado no terminal. Deve-se checar se as imagens existem antes de serem removidas.

Melhorias no código

  • Suggest fscanf(file, "%s ", header); --> fscanf(file, "%2s ", header);

  • In your greyscale() function you don’t close the file you have written before re-reading it. You also don’t open files in binary mode which may be a problem on Windows.

Processo de binarização

A ​ Binarização é um tipo de processamento que se baseia na diferença dos níveis de cinza que compõe diferentes objetos de uma imagem. A partir de um limiar estabelecido de acordo com as características dos objetos que se quer isolar, a
imagem pode ser segmentada em dois grupos: o grupo de pixels com níveis de cinza abaixo do limiar e o grupo de pixels com níveis de cinza acima do limiar. Em uma imagem limiarizada, atribui-se um valor fixo para todos os pixels de mesmo grupo. No nosso caso, aplicaremos um procedimento de binarização na imagem gerada a partir do realce de arestas. A imagem resultante após o processo de realce
de arestas ainda contém valores de pixel em tons de cinza, variando entre 0 e 255 dependendo do quão “forte” é a aresta em questão. O procedimento de binarização irá transformar essa imagem em uma imagem binária (com valores de 0 e 1, ou valores mínimos e máximos), onde os valores máximos representarão pixels que, com certeza, estão em alguma aresta da imagem, enquanto os valores mínimos representarão pixels que não estão em aresta alguma e, portanto, devem ser desconsiderados.

a) Atenuação/remoção​ ​ dos​ ​ valores​ ​ que​ ​ não​ ​ são​ ​ arestas
i. Processamento​ ​ de​ ​ vizinhança​ ​ na​ ​ direção​ ​ do​ ​ gradiente
ii. Remoção​ ​ de​ ​ valores​ ​ através​ ​ de​ ​ duplo​ ​ threshold

Transformada de Hough

a) Transforme​ ​ a ​ ​ imagem​ ​ em​ ​ uma​ ​ representação​ ​ de​ ​ arestas

b) Processe todos os pixels da imagem de arestas de acordo com o algoritmo abaixo:

para​ ​ cada​ ​ pixel(x,y)​ ​ que​ ​ pertence​ ​ a ​ ​ uma​ ​ aresta
​ ​//os​ ​ raios​ ​ possíveis​ ​ devem​ ​ ser​ ​ conhecidos,​ ​ é ​necessário​ ​ fazer
​ ​ ​ //​ ​ ajustes​ ​ manuais​ ​ nessa​ ​ parte​ ​ para​ ​ detecção​ ​ de​ ​ círculos
​ ​ ​ //​ ​ com​ ​ raios​ ​ ​ maiores​ ​ que​ ​ rmax​ ​ pixels​ ​ ou​ ​ menores​ ​ que​ ​ rmin​ ​ pixels
​ ​ para​ ​ cada​ ​ raio​ ​ r ​ ​ = ​ ​ rmin​ ​ à ​ ​ r ​ ​ = ​ ​ rmax
​ ​ ​ ​ ​ ​ para​ ​ cada​ ​ theta​ ​ t ​ ​ = ​ ​ 0 ​ ​ à ​ ​ 360​ ​ //​ ​ valores​ ​ padrão
​ ​ ​ ​ ​ ​ ​ ​ ​ a ​ ​ = ​ ​ x ​ ​ – ​ ​ r ​ ​ * ​ ​ cos(t​ ​ * ​ ​ PI​ ​ / ​ ​ 180);​ ​ //coordenada​ a
​ ​ do​ ​ centro
​ ​ ​ ​ ​ ​ ​ ​ ​ b ​ ​ = ​ ​ y ​ ​ – ​ ​ r ​ ​ * ​ ​ sin(t​ ​ * ​ ​ PI​ ​ / ​ ​ 180);​ ​ ​ //coordenada​ b
​ ​ do​ ​ centro
​ ​ ​ ​ ​ ​ ​ ​ ​ A[a,b,r]​ ​ +=1;​ ​ //espaço​ ​ de​ ​ Hugh
​ ​ ​ ​ ​ ​ ​ end
​ ​ ​ ​ end
​ end

c) Ao fim do algoritmo a matriz A[a,b,r] contém todos os centros (a,b) para todos os círculos de raios (r), no intervalo de raios considerados, que interseccionam todos os pixels que pertencem às arestas da imagem. Assim, se uma imagem contém apenas UM círculo, com centro (Ac, Bc) e raio Rc (com rmin<=Rc<=rmax); espera-se que o valor de A[Ac,Bc,Rc] seja maior do que outros valores da matriz A, indicando assim a presença do círculo na posição​ ​ e ​ ​ raios​ ​ especificados​ ​ na​ ​ matriz.

d) Caso a imagem contenha mais de um círculo, é necessário encontrar mais de um máximo na matriz A, por exemplo, podemos, ao invés de procurar apenas pelo maior valor de A, buscar pelos n maiores valores, que representam​ ​ as​ ​ n ​ ​ circunferências​ ​ detectadas​ ​ pelo​ ​ algoritmo.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.