Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di baicin
    Registrato dal
    Feb 2002
    Messaggi
    29

    c++ riconoscimento difetti immagini URGENTE!

    devo fare, per un esame, un semplice programma in c++ data una immagine in bianco e nero , ne riconosca i "difetti". ad esempio, data l'immagine di una ceramica o di una lastra di materiale solido , ne individui gli eventuali buchi, punti, inomogeneitā. Mi sapreste dare delle dritte e una mano....fin da pricipio...
    BACCI

  2. #2
    la "domanda" č piuttosto interessante... me la son posta anche io diverse volte... ma non sono mai andato oltre.

    il problema secondo me si potrebbe risolvere
    studiando a menadito la struttura di un file immagine (ad esempio una semplice BITMAP .BMP) disegnata nel seguente modo (3x3):

    000
    010
    000

    provando a disegnare un quadrato bianco (0) con un punto/pixel (1) nero al centro... e cercando di individuare il pixel nero esaminando
    il codice binario del file .bmp (ovviamente mettendolo a confronto con il codice di un immagine simile (3x3) ma senza pixel nero al centro)

    000
    000
    000


    in breve bisogna esaminare a fondo (da codice) la struttura del file bitmap per poi scrivere in C/C++ un algoritmo che catturi "i difetti"

    ovviamente sono ben accetti altri pareri/soluzioni
    ...Terrible warlords, good warlords, and an english song

  3. #3
    Utente di HTML.it L'avatar di baicin
    Registrato dal
    Feb 2002
    Messaggi
    29
    purtroppo le immagini che devo esaminare hanno diversi livelli di grigio ma sono abbastanza omogenee e sono di dim. 1280x1024. L'idea che avevo io era quella di analizzare a matrici di 3x3 (ad esempio)l'intera matrice dell'immagine. Calcolare la media dei livelli di grigio delle piccole matrici 3x3 e poi andare a valutare quelle con media pių alta e quelle con media pių bassa e lė probabilmente...con altre considerazioni...ci potrebbero essere macchie chiare o scure
    BACCI

  4. #4

    Re: c++ riconoscimento difetti immagini URGENTE!

    Uff avevo scritto tutta na pappardella, ma 3 quarti leggo che giā l'avevi pensato.
    Allora stavo scrivendo appunto che potresti estrarre porzioni di immagine e calcolarti appunto qualche variabile statistica, tipo valor medio, varianza e determinare una soglia con cui assegnare l'appartenenza(sfondo dell'immagine od oggetto rappresentato). Ovviamente devi tenere conto dei bordi dell'oggetto rappresentato e lo sfondo in quanto potrebbero sembrare disomogeneitā quando non lo sono. Per evitare (forse) questo problema dovresti tenere conto della correlazione tra le porzioni di immagine che estrai man a mano. Diciamo che trovi una porzione di immagne che ha valor medio molto basso, a quel punto devi controllare i valori medi vicini per capire se anche loro sono pių o meno bassi (almeno in una direzione, dx,sx , alto, basso)come valore oppure hanno valore alto. Nel caso in cui i valori medi vicini fossero tutti alti potresti dire che in quella zona c'č una discontinuitā.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  5. #5
    Utente di HTML.it L'avatar di baicin
    Registrato dal
    Feb 2002
    Messaggi
    29
    le immagini che devo analizzare sono .raw, come faccio ad acquisirle e soprattutto ad acquisirle come matrici in funzione dei livelli di grigio. una volta che ho la matriciona 1240x1024 provo ad analizzare pezzettino a pezzettino...quanto grosso deve essere un "pezzettino" per permettere una buona valutazione?
    BACCI

  6. #6
    Originariamente inviato da baicin

    le immagini che devo analizzare sono .raw
    e allora diventa tutto molto pių semplice
    tenendo anche presente che tu (all'inizio) avevi parlato di soli 2 colori bianco e nero (ed eventuali tonalitā di grigio)

    tieni presente che nei file .raw i singoli pixel sono strutturati
    secondo la colorazione RGB quindi 3 byte per colore.
    dove FF FF FF (3 byte - rappresentazione esadecimale del colore bianco) e 00 00 00 (3 byte... colore nero)

    in un file .RAW il mio esempio di prima (3x3) quadrato bianco con pixel/punto nero al centro č rappresentato nel seguente modo:

    FF FF FF - FF FF FF - FF FF FF
    FF FF FF - 00 00 00 - FF FF FF
    FF FF FF - FF FF FF - FF FF FF

    le varie tonalitā di grigio
    vanno da

    11 11 11 (quasi nero)
    22 22 22
    33 33 33
    44 44 44
    55 55 55
    66 66 66
    77 77 77
    88 88 88
    99 99 99
    AA AA AA
    BB BB BB
    CC CC CC
    DD DD DD
    EE EE EE (quasi bianco)

    --------------------------

    ora basta scrivere un algoritmo che analizzi le porzioni (matrice)
    del file immagine .RAW
    ...Terrible warlords, good warlords, and an english song

  7. #7
    Credo che se l'immagine č in scala di grigi ogni byte rapresenti da solo giā la tonalitā. quindi basta estrarre un byte alla volta e convertirlo in intero. Cmq prova a domandare.

    Se intendi crearti un matricione da cui estrarre le sotto matrici, dato l'elemento ij-simo dovrai spostarti in alto e a sx della metā della dimensione della sottomatrice che vuoi riempire e poi leggere i pixel riga per riga. Non credo sia difficile. devi fare delle prove. Per i controlli io mi creerei un file tipo row che conta da 1 a n e lo userei come file di test per vedere se le sotto matrici sono giuste. Stamperei a video una sottomatrice quasiasi e vedrei se č giusta.
    Considera anche il problema ai bordi dell'immagine (dove ti mancheranno i pixel con cui riempire parte delle sottomatrici).

    Per valutare la dimensione della matrice dovresti fare delle prove non saprei io partirei con matrici 5x5 o 7x7 (3x3 mi pare un po' piccola)

    Ti dico come farei io. Tieni presente che non č detto che sia il metodo corretto . A grandi linee proverei a fare cosė. Parto dal primo pixel fino all'utimo ed estraggo i pixel limitrofi in forma di matrice. Calcolo la statistica delle matrici e mi creo un file immagine che ha al posto dei pixel diciamo i valori medi. Al contempo creo un ulteriore file in cui al posto dei pixel avrō degli 0 e degli 1. Gli 0 indicheranno i pixel buoni e gli 1 i pixel da controllare. Definisco una soglia per determinare chi sono i pixel buoni e quelli cattivi. Successivamente lavorerei su questi ultimi due file e leggendoli contemporaneamente appena trovo una presunta discontinuitā andrei ad analizzare i valori medi limitrofi: questo controllo potresti farlo analizzando una per volta le quattro direzioni, cioč estrai i 10 valori medi precedenti e provi a calcolare il valor medio (quindi un valor medio dei valori medi) e ripeti il procedimento per gli altri tre lati. Ogni volta confrontando quel valore calcolato con il valore medio che devi giudicare. quando si č determinato se il pixel č buono o cattivo modifichi il file con gli 1 e 0 a seconda della scelta (o ne crei uno nuovo che č pių comodo) in cui riscrivi gli 0 e 1 corretti.

    A farlo bene poi potresti calcolarti la pecentuale di errore che hai ottenuto sull'intera immagine in modo da controllare che se č troppo grande ovviamente i valori di soglia che hai usato non sono buoni e a quel punto diminuisci/modifichi le soglie e rifai tutto fino a quando non raggiungi un livello di errore compessivo accettabile.
    Successivamente opterei per andare dal prof e farmi pagare cmq
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  8. #8
    Utente di HTML.it L'avatar di baicin
    Registrato dal
    Feb 2002
    Messaggi
    29
    qualcuno sa darmi un link dove č ben spiegato come son fatte le immagini .raw?
    BACCI

  9. #9
    Credo che per sapere com'č fatta potresti controllare il peso dell'immagine in byte. Se il peso č unguale al prodotto delle dimensioni 1240x1024 allora l'immagine ha le tonalitā contenute in un unico byte. Mentre se la dimensione č tre volte pių grande č come dice Johnny_Depp: un byte per banda. Correggetemi se sbaglio
    pesa 1240 kb?
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  10. #10
    Utente di HTML.it L'avatar di baicin
    Registrato dal
    Feb 2002
    Messaggi
    29
    le dimensioni sono 1280x1024 ed č 1,25 mb
    BACCI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.