|
|
|
|
Strumenti |
18-01-2021, 10:24 | #1 |
Senior Member
Iscritto dal: Aug 2007
Messaggi: 2169
|
[.NET]Miglior metodo per confronto Colori da Foto
Buongiorno a tutti,
sto progettando un'app desktop, scritta in VB.NET o C#, che possa elaborare delle immagini ( scansioni o foto ) nelle quali sono presenti dei cerchi colorati ( in gradazione di verde ) dei quali dovrei riconoscere in maniera affidabile il colore per poi confrontarlo con dei colori reference ( caricati e memorizzati da un'immagine reference, sfruttando lo stesso algoritmo, in fase di calibrazione ). L'idea di base è che ad ogni colore reference corrisponda un certo valore numerico ed il programma deve, per ogni immagine elaborata, restituire, per ogni cerchio, il suo corrispettivo valore numerico trovando a quale reference si avvicina maggiormente. Ho quindi pensato ad una sorta di "color difference", ma non so bene quale valore o metodo utilizzare per fare si che il confronto sia il più affidabile possibile. Cercando su internet ho trovato questo Framework ( AForge.net ) che mette a disposizione molti metodi utili ai miei scopi ( trovare i cerchi nell'immagine, restituirne il colore, ecc... ) ma purtroppo non so quale sia il miglior passo successivo. Purtroppo la board di supporto di quel progetto è stata chiusa proprio un anno fa, perciò chiedo se magari qualcuno ha o ha avuto esperienza nell'uso di quel framework o ne conosca magari qualcuno equivalente ed adatto ai miei scopi. Di mio ho pensato di fare una semplice differenza tra i valori ARGB, ma sarà sufficientemente affidabile? L'elaborazione è eseguita su foto, quindi non immagini disegnate in paint con colori ben definiti e delineati, pertanto servirà un minimo di elaborazione o tolleranza. Questa, per capirci, potrebbe essere una possibile immagine reference da elaborare. Grazie a tutti!
__________________
DESKTOP: Case Corsair 4000D Ariflow | MSI B550 Tomahawk | AMD Ryzen 5 5600x @3.7GHz | ARCTIC Liquid Freezer II 280 | 32GB DDR4 Crucial Ballistix @3600MHz | SSD Samsung 970Evo 1TB M.2 + 970Plus 1TB M.2 | Zotac GTX 1080Ti 11GB | Seasonic FOCUS GX-650 | W10 Pro x64 NOTEBOOK: HP EliteBook 830 G5 | i7-8550U | 16GB DDR3 | SDD 256GB | W10 Pro x64 HTPC: NVidia Shield 2019 NAS: Zyxel NSA325v2 | 2x3TB WDRed ROUTER: AVM Fritz!Box 7590 | Fritz!OS 07.28 |
18-01-2021, 12:15 | #2 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
|
se si vogliono risultati precisi meglio affidarsi alle reti neurali
http://www.stor.altervista.org/nn/nn.php |
19-01-2021, 23:19 | #3 |
Senior Member
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2275
|
beh potresti usare OpenCV, o il suo wrapper c# Emgu(mai usato, sempre preferito fare una dll in c++ e chiamarla poi dal codice c#)
in ogni caso ti lascio il link http://www.emgu.com/wiki/index.php/Main_Page per quanto riguarda il tuo problema, direi a naso ed al volo: - assicurati di prendere immagini nelle stesse condizioni di luce, o almeno le più stabili e costanti possibili al fine di minimizzare le differenze - importa l'immagine reference, ripuliscila/filtrala ed estrai i valori nominali dei campioni da ogni cerchio (per esempio, sai che sono verdi, quindi potresti lavorare solamente sul canale G del RGB, potresti anche trovare tutti i cerchi, eliminare il resto e lavorare solo su questi...di possibilità ce ne sono) - importi la tua nuova immagine, estrai il colore dall'area che ti interessa e lo confronti con le reference trovando il più simile (minimizzi la differenza)
__________________
neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w
trattative concluse : tante... |
20-01-2021, 09:59 | #4 |
Moderatore
Iscritto dal: Nov 2006
Messaggi: 20816
|
come wrapper di opencv esiste anche opencvsharp4
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:05.