Skip to content

pietroparini2/chessProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

149 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

imagechess

chessProject

progetto esame elaborazione delle immagini Giugno 2018

Documentazione delle funzioni del progetto

prima parte progetto

La prima parte del progetto si occupa di estrarre dall'immagine originale la scacchiera.

readImages(aux)

funzione che carica le immagini nell'intervallo specificato, trasforma in double

  • input due valori interi che indicano l'intervallo delle immagini da analizzare
  • output void
  • parametri: 0
  • funzioni MATLAB invocate: im2double, imread, sprintf
  • invocata da: tutti gli script di test, script main

resizeImage

funzione che si occupa di fare una resize dell'immagine in modo da rendere più veloce e più scalabile tutta la computazione, e di lavorare in un formato standardizzato. diminuisce tutte le immagini a un massimo di dimensioni dei 2 lati di 1042 px tenendo le proporzioni originali. importante che imresize mantiene le proporzioni

  • input: immagine del dataset di immagini da analizzare
  • output: array di due elementi , immagine di nuove dimensione , scala usata per le immagini
  • parametri: misura massima degli assi dell'immagine= 1000+42
  • funzioni MATLAB invocate: size, imresize
  • test: testResize

testResizeImage

script di test per la funzione resize vengono salvate in variabili separate le dimensioni dell'immagine originale, immagine resized e scala in un array boolean test viene verificato stia funzionando correttasmente la 'scalata' di tutte le immagini tramite il calcolo inverso.

  • funzioni invocate: readImages

primaryElaboration

funzione, seconda possibilità di elaborazione sviluppata in modo complementare alla secondaryElaboration, per poter individuare le scacchiere la dove c'è la presenza di uno sfondo a texture

testPrimaryElaboration

script di test per la funzione primaryElaboration vengono caricate, elaborate, e mostratre a video, le immagini originali e quelle elaboborate

  • funzione invocate: readImages, rersizeImage, textureElaboration imageTestTextureElaboration

secondaryElaboration

funzione, prima possibilità di elaborazione porta l'immagine a livelli di grigi se necessario, elabora tramite equalizzazione dell istogramma e sogliatura immagine con soglia individuata tramite Otsu.

  • input: immagine già nella dimensione stabilita per l'elaborazione, boolean per il testing
  • output: immagine in bianco e nero pronta per il riconoscimento delle componenti
  • parametri: misura disco =6= per tentativi dopo aver stimato sulle prime 20 immagini che doveva essere 4,6,8 o 10 (!!!scrivere il perchè in due parole)
  • funzioni MATLAB invocate: size, rgb2gray, adapthisteq, imclose, strel, graythresh, imbinarize
  • parametri: misura disco
  • matlab functions: size, rgb2gray, adapthisteq, imclose, strel, graythresh, imbinarize
  • test: testSecondaryElaboration
    imageMainElaboration

testSecondaryElaboration

script di test per la funzione secondaryElaboration vengono caricate, elaborate, e mostratre a video, le immagini originali e quelle elaboborate

  • funzione invocate: readImages, resizeImage, secondaryElaboration imageTestMainElaboration

chessDiscover

funzione che si occupa di individuare la scacchiera. sfruttando le bounding box va a cercare le bounding box quadrate, con un errore del 20%, per poi selezionare quella più grande. (da aggiungere un controllo sulle diagonali =, forse anche pitagora)

  • input: immagine elaborata(per ora da elaborationOne), la scala dell'immagine elaborata(output di resizeImage), immagine originale.
  • output: la probabile chessboard sotto forma di struct contenente boundingbox, convexarea, convexImage ed scacchiera ritagliata dall'immagine originale
  • parametri: errore di approssimazione dei lati = 0.20= stimato sulle prime 10 immagini, considerando che è solo un primo passaggio il secondo verrà poi implementato (dopo si può un po' abbassare )
  • funzioni MATLAB invocate: regionprops,
  • parametri: errore di approssimazione dei lati = 0.18
  • matlab functions: regionprops, sort, fliplr (guardare anche le funzioni invocate per il test)
  • test: testChessDiscover imageChessDiscover

testChessDiscover

script di test per la funzione chessDiscover vengono caricate, elaborate, e mostratre a video, le immagini originale tagliate e la maschera dell'immagine binaria tagliata

  • funzione invocate: readImages, resizeImage, elaborationOne, chessDiscover imageTestChessDiscover

cornersMask(aux)

funzione che si occupa di individuare i 4 corner di una maschera binaria che riceve in input.

  • input: maschera binaria figura bianco su sfondo nero
  • output: matrice con i 4 corner
  • parametri: 0
  • funzioni MATLAB invocate: find
  • invocata da: straightnessChess, (la userò anche per controllare le diagonali)

straightensChess

funzione che si occupa di raddrizzare la scacchiera all'interno della boundingBox che la contiene.

  • input: immagine boundingBox da raddrizzare , maschera immagine boundingbox da raddrizzare
  • output: immagine raddrizzata
  • prametri: 0
  • funzioni MATLAB invocate: size, imresize, fitgeotrans , imwarp, regionprops, imcrop
  • test: testStraightensChess

testStraightensChess

script di test per la funzione testStraightensChess vengono mostrate a video le immagini,() interne alla più grossa boundingbox quadrata ) rispettivamente prima di essere raddrizate e successivamente

  • funzioni invocate: readImages, resizeImage, elaborationOne, chessDiscover, straightensChess imageStraightensChess

isChessBoard

funzione che si occupa di stimare una percentuale che indica la probabilità che l'immagine passata sia effivamente una scacchiera.

testIsChessboard

script di test per la funzione isChessboard

  • funzioni invocate: isChessboard, readImages, resizeImage, elaborationOne, chessDiscover, straightensChess. imageTestIsChessboard1 imageTestIsChessboard2

chooseElaboration

funzione che si occupa di stabilire se la presuntaScacchiera trovata con secondaryElaboration è effettivamente una scacchier. se è una scacchiera ma viene tagliata male, stabilisce la migliore tra le due elaborazioni.

  • input: immagine ridimensionata, scala del ridimensionamento, immagine originale
  • output: immagine scacchiera
  • parametri: stiama scacchiera=0.60

testFirstHalfPipe

test che accorpora tutti i test sviluppati fino a questo punto, mostrando in successione tutti i risultati dii ogni test.

  • funzioni invocate: readImages, resizeImage, chooseElaboration imageTestFirstHalfPipe

fine prima parte progetto--------------------------------------------------------------------------------

fenGenerator

funzione che si occupa di creare la stringa FEN partendo dall'immagine ritagliata e raddrizzata della scacchiera. Per individuare i pezzi utilizza la correlazione incrociata normalizata. Questa funzione crea la matrice degli indici che passa poi alla funzione fenString che restituirà la stringa FEN.

  • input: immagine della scacchiera ritagliata e raddrizzata, dataset dei pezzi per il match ed il n° dell'immagine che si sta analizzando.
  • output: stringa FEN, angolo di rotazione della scacchiera, percentuale di riconoscimento.
  • funzioni invocate: findSquare, fenString.
  • funzioni MATLAB invocate: rgb2gray, imadjust, zeros, normxcorr2, abs, max, rot90, find, imrotate

extractCells

funzione che ritaglia dalla scacchiera le singole celle.

  • input: imaggine scacchiera ritagliata e raddrizzata.
  • output: singole celle in oggetto di tipo "cell".
  • funzione invocata da: fenGenerator
  • funzioni MATLAB invocate: size, floor, cell, imresize, imshow, waitfor,

fenString

funzione che crea la stringa fen partendo dalla matrice degli indici dei pezzi trovata grazie alla funzione fenGenerator.

  • input: matrice contenente i vari indici dei pezzi, n° immagine che si sta analizzando.
  • output: stringa fen, percentuale riconoscimento.
  • funzione invocata da: fenGenerator
  • funzioni invocate: fenStringApp, wrongFen.
  • funzioni MATLAB invocate: reshape

fenStringApp

funzione che crea la stringa fen partendo da una stringa composta dalle iniziali dei pezzi.

  • input: stringa con le iniziali dei pezzi e n° immagine che si sta analizzando.
  • output: stringa fen e un vaore tra 0(non completamente correta) e 100(completaamente corretta).
  • funzione invocata da: fenString.
  • funzione invocata: checkFen.
  • funzioni MATLAB invocate: strcat, num2str

checkFen

funzione che verifica se la stringa fen è corertta (ritorna 100) o incorretta (ritorna 0).

  • input: stringa fen e n° immagine che si sta analizzando.
  • output: un numero tra 100(riconosciuta) e 0 (non riconosciuta).
  • funzione invocata da: fenStringApp.
  • funzioni MATLAB invocate: sprintf, fopen, fscanf, strcmp

wrongFen

funzione che controlla di quanto è sbagliata la stringa fen e ritorna la percentuale di correttezza e i pezzi che ha sbagliato a riconoscere.

  • input: stringa iniziali pezzi in versione estesa e n° dell'immagine che sta analizzando.
  • output: percentuale di pezi trovati correttamente e stringa contenente i pezzi che sono stati scambiati.
  • funzione invocata da: fenString.
  • funzione invocata: expandFen.
  • funzioni MATLAB invocate: sprintf, fopen, fscanf, sum length, strcat

expandFen

funzione che converte la stringa fen in formato esteso(sostituisco i numeri con il carattere 'a' ripetuto il numero di volte corrispondete al numere che sostituisce).

  • input: stringa fen in versione estesa.
  • output: fen in formato esteso.
  • funzione invocata da: wrongFen.
  • funzioni MATLAB invocate: length, str2num, strcat

confusionMat

funzione che crea la matrice di confusione.

  • input: stringhe FEN e intervallo delle immagini analizzate.
  • output: matrice di confusione e numero di stringhe fen completamente corrette.
  • funzione invocata da: testOCR.
  • funzioni MATLAB invocate: zeros, sprintf, fopen, fscanf, confusionmat, size, num2cell

testOCR

script di test per la parte della creazione della stringa. Corrisponde ad una chiamata più completa rispetto allo script main

main

script per l'esecuzione del progetto in formato base

About

progetto esame elaborazione delle immagini febbraio 2018

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages