Segmentazione dell'immagine: mostra o nasconde i cluster

1

Sto provando a creare un piccolo programma in c #, che ridurrà l'immagine alla quantità specificata di colori (usando K-means). Quindi, l'utente sarà in grado di nascondere \ mostrare le aree colorate (cluster) nell'immagine. Ho implementato l'algoritmo di clustering delle immagini e ho anche informazioni sui colori principali, ma come implementare la funzione mostra / nascondi colore? Esempio di seguito

per questo momento il programma semplifica solo l'immagine ( in questo esempio 5 colori )

questo è quello che voglio avere

    
posta photostok 27.03.2015 - 14:38
fonte

1 risposta

-1

Questa funzione restituisce l'immagine solo con i colori selezionati. Elenca colori: elenca i colori selezionati convertiti in valore int con la funzione ToArgb () (per un confronto migliore). Classe LockBitmap che puoi trovare qui: link

public static Bitmap ReDraw(Bitmap bmp, List<int> colors)
{
    LockBitmap lockBitmap = new LockBitmap(bmp);
    lockBitmap.LockBits();

    for (int y = 0; y < lockBitmap.Height; y++)
    {
        for (int x = 0; x < lockBitmap.Width; x++)
        {
            int color = lockBitmap.GetPixel(x, y).ToArgb();
            bool flag = colors.Contains(color);
            if (!flag)
            {
                lockBitmap.SetPixel(x, y, Color.White);
            }
        }
    }
    lockBitmap.UnlockBits();
    return bmp;
}
    
risposta data 07.04.2015 - 11:46
fonte