Coder Social home page Coder Social logo

avclf_daco2017's Introduction

avclf_daco2017

Artery Vein Classification DACO Final Project 2017 Members: Gabriel Lopes João Silveira Paulo Maia Tiago Gonçalves

FEUP 2017/2018

avclf_daco2017's People

Contributors

gabry77 avatar paulomaia20 avatar tiagofilipesousagoncalves avatar

Watchers

 avatar

avclf_daco2017's Issues

Propagação de labels a partir do pixel central

  1. classificamos o pixel central
  2. para cada label vemos o nº de pixeis que sao veias/artérias e damos a essa label a classificaçao maioritária (majority voting)
  3. como temos a reta perpendicular a cada vaso, todos os pixeis na direçao dessa reta têm a mesma label
  4. vemos os pixeis que sobram e fazemos novamente um voto pelos 4 ou 5 vizinhos mais proximos

Próximas tarefas

  • Merdinhas de pre processamento, normalização e isso. O clahe com limite mt baixo pode ajudar a distinguir melhor as cores, por exemplo. Vejam em mais artigos como fazem
  • Meter umas features de contraste que aparecem aí nuns artigos , e talvez algumas features com base naquela linha perpendicular que eu calculei
  • Feature do gradiente (sobel e sobel transposto, obtemos dx^2 + dy^2, magnitude do resultado) - STAND BY até percebermos como se faz com o disco...

Bifurcations and Crossing Identification

Talvez seja melhor fazer uma identificação mais robusta do que a que eu fiz com a hit and miss transform.

Fiz deste modo: https://stackoverflow.com/questions/16241708/hit-and-miss-transform-for-detecting-branched-point-and-endpoint-in-scikit-image

Ver o artigo "A new tracking system for the robust extraction of retinal vessel structure"

Pontos principais

  • Crossings are found by identifying all pairs of vessel points that are on different sides of another vessel.
  • Bifurcations can be divided into two types requiring different approaches. The first is the branching type, when a smaller vessel originates from a larger one, without affecting the course or the dimension of the latter. The branching are identified by analyzing the end-points remaining after the connection step. Those close (a minimum distance is set) to a vessel, with direction incident to the vessel in a reasonable neighborhood are considered branching
  • The second type is the proper bifurcations, in which a principal vessel (father) and two secondary (children) are clearly identifiable. Usually the vessels caliber follow a power law
    dmfather = dm child1 + dm child2, with m = 3 in normal patients, and is is thus possible to identify the father from the children. To detect these branching, a strategy similar to that used for identifying end-points to be connected has been used. Instead of analyzing pairs of end points, triplets are considered. The three end-points closest to each other are found. For such a situation to be considered a bifurcation, two additional constraints must be met: firstly the end-point directions must sum up to PI, and secondly the three intersection points found projecting the three vessels along their end-point direction must be close to each other and lie inside the triangle identified by the end-point

Alternativa nº2, mais geral, mas que pode dar menos falsos positivos que a minha:

Segment start and end positions are determined as follows. Each of the centerline pixels on the vessel skeleton is analyzed within its 3x3 neighborhood, and branch and crossing points are detected as centerline pixels with more than 2 neighbors. The detection of vessel end points is required for the graph search and they are determined as the centerline pixels with only one neighbor. (2014 - automated method...)

Adding meta-knowledge to improve classification

After classification each pixel has been assigned to either the artery or the vein class. To improve the result we can infer some meta-knowledge. The concept is that all pixels belonging to the same vessel section between two crossings must also belong to the same class. To use this knowledge we now need the skeleton sections, that have been calculated during the preprocessing step. We add up the confidence of all pixels in one section for belonging to the artery and for belonging to the vein class. Then we choose the class label with the higher value.

In this way the pixels classified with high reliability will influence the final classification of the whole section to a larger extent than the ones with poor reliability. This method is especially helpful for longer vessel sections that start somewhere near the center and end in the outer regions of the image, since in this case the pixels far away from the center are usually very hard to classify correctly

Pre-processing

  1. Illumination variation reduction - foi usado o homomorphic filter, falta otimizar -> Intra-image regularization
  2. After the intra-image background regularization, an inter-subject normalization is performed to reduce the difference between images obtained from different subjects. This is especially important in supervised classification methods as it can reduce the differences between training and test data. To perform the normalization, the histograms of the red, green, and blue channels are calculated and the median values are found individually. Then a brightness curve transform is performed in each channel to
    move the median value to a unified center (Eq. 3). g(x, y) = max(min(I(x, y) − median(H) + c, 255), 0) -> 2017 an improved av classification method...

Optic Disk Detection - How and why?

  1. Ver artigo Grisan - dividir para reinar

The problem is complicated by the similarity in the descriptive features of these two structures and by the contrast and luminosity variability of the retina. We developed a new algorithm for classifying the vessels, which exploits the peculiarities of retinal images. By applying a divide et impera approach that partitioned a concentric zone around the optic disc into quadrants, we were able to perform a more robust local classification analysis

Classifica bem a região em redor do disco ótico, que tem mais informação e depois propaga as labels. Acho que é a melhor maneira de fazer - se adicionarmos os pontos mais distantes do disco otico, que sao semelhantes nas veias e nas arterias, vao estar a criar um enviesamento do classificador nessa direção, para alguns classificadores. Para os SVM acho que é mais robusto, visto que só importa os support vectors , e ao acrescentar mais pontos nao modifica o resultado.

Cálculo das features

  • Vessel profile based feature vectors: para cada pixel do esqueleto, determinamos a direção ortogonal à direção do vaso na posição central correspondente. Desenhamos uma linha ao longo do vaso e lemos o perfil do vaso ao longo dessa linha num vetor. Os melhores resultados são obtidos se subtrairmos a média da informação da cor dos 3 canais, e adicionar a média aos feature vectors. Como os vasos têm espessuras diferentes, usamos "spline interpolation" para obter comprimento igual em todos os vetores.
  • Vessel ROI based feature vectors: definimos uma região quadrática de interesse em redor de cada skeleton pixel. Centramos a ROI no centro de gravidade do vaso dentro da ROI (==skeleton??) e rodamos para alinhar o eixo principal do vaso com o eixo horizontal. Os três color channels são lidos linearmente para o feature vector.
  • We did not find necessary to consider profiles perpendicular to the vessel direction, due
    to the fact that we analyzed variations within circular regions around the central pixel. This makes the technique also more robust, not depending on the local estimation of the vessel direction. (Em contraste com os métodos anteriores, num artigo mais recente, zamperini2012)
  • Large area mean Value
  • Large area min Hue
  • Large area max Saturation
  • Large area mean Red
  • Large area std Blue
  • Large area min Blue
  • Small area min Red
  • Small area min Value
  • Distance from OD center
  • Large area min gradient norm
  • Large area std Value
  • Large area max Blue
  • Distance from image center
  • Large area max Value
  • Small area mean gradient norm
  • Central pixel Value
  • The use of higher order derivatives could be useful in the separation of arteries and veins
    due to the presence of central reflexes (2009 SPIE)
  • Texture related features might be important (2017-An improved av classification)
  • Usar feature selection para remover algumas features

**Parte prática: como fazer esses cálculos?

  • The contrast is defined as the difference in average pixel values in a 5 × 5 pixel region around the pixel of interest inside the vessel, and in a 10 × 10 pixel region around the pixel of interest outside the vessel. As an alternative, to compute features based on contrast:
  • Define two areas: Small (only internal, radius equal to half vessel width) and large (radius equal to vessel width) region used to compute color features potentially characterizing the vessel type. (Fig 1 Zamperini)
  • Determinar o centro do disco ótico, pode ser uma aproximação meio rafeira se calhar
  • Para saber se os vasos estão virados para a esquerda ou para a direita, ver se o centro do disco ótico está à direita ou à esquerda do centróide da mask que contém o fundo da retina

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.