Salve a tutti!vorrei chiedervi un aiuto per un lavoro che sto portando avanti con la mia scuola
quello che deve fare il mio programma principalmente è quello di prendere un immagine (si tratta dell'immagine di un foglio di teflon pieno di fori dovuti al radon) e per prima cosa deve "filtrare" l'immagine per togliere le impurità o i segni che poi possono disturbare il conteggio dei buchi sempre con visual basic.
qualcuno saprebbe darmi qualche consiglio su come muovermi per il codice del programma??
Premetto di aver già provato a crearne uno. ho usato le funzioni GetPixel (per sapere di che colore è il pixel che prendo in esame) e SetPixel (per impostare il pixel in esame di un colore). sono partito dal presupposto che un pixel deve essere cancellato se nelle sue vicinanze non sono presenti delle aree di nero in percentuale maggiore rispetto al bianco. il problema sta nel fatto che quando avvio il programma invece di cancellare una linea e lasciando invariato il colore del cerchio, cancella tutto!!
vi scrivo di seguito il codice del programma se può esservi utile!
k = 0
filtroA = 0
filtroB = 0
filtroC = 0
filtroD = 0
For x = 0 To 2700 Step 1
'a = y
For y = 0 To 2000 Step 1
'b = x
colorepixel = GetPixel(pct_immagine.hdc, x, y)
If colorepixel = 0 Then
'scansione quadrato A (superiore sinistro)
For i = (y - 3) To y Step 1
For j = (x - 3) To x Step 1
pixel(k) = GetPixel(pct_immagine, j, i)
k = k + 1
Next j
Next i
For w = 0 To 16 Step 1
If pixel(w) = 0 Then
filtroA = filtroA + 1
End If
Next w
k = 0
'scansione quadrato B (superiore destro)
For i = (y - 3) To y Step 1
For j = x To (x + 3) Step 1
pixel(k) = GetPixel(pct_immagine, j, i)
k = k + 1
Next j
Next i
For w = 0 To 16 Step 1
If pixel(w) = 0 Then
filtroB = filtroB + 1
End If
Next w
k = 0
'scansione quadrato C (inferiore sinistro)
For i = y To (y + 3) Step 1
For j = (x - 3) To x Step 1
pixel(k) = GetPixel(pct_immagine, j, i)
k = k + 1
Next j
Next i
For w = 0 To 16 Step 1
If pixel(w) = 0 Then
filtroC = filtroC + 1
End If
Next w
k = 0
'scansione quadrato D (inferiore destro)
For i = y To (y + 3) Step 1
For j = x To (x + 3) Step 1
pixel(k) = GetPixel(pct_immagine, j, i)
k = k + 1
Next j
Next i
For w = 0 To 16 Step 1
If pixel(w) = 0 Then
filtroD = filtroD + 1
End If
Next w
k = 0
If (filtroA < 14) Or (filtroB < 14) Or (filtroC < 14) Or (filtroD < 14) Then
SetPixel pct_immagine.hdc, x, y, vbRed
End If
filtroA = 0
filtroB = 0
filtroC = 0
filtroD = 0
End If
Next y
Next x
questo avviene premendo un pulsante!
grazie per la vostra attenzione e collaborazione!se avete qualche idea sono lieto di ascoltarla!
grazie ancora! Andrea