Member 14129828 Ответов: 1

Сегментация изображения с помощью гистограммы


Я пытаюсь сделать сегментацию изображения, которая зависит от значений гистограммы, сначала я сделал k-mean, затем я преобразовал изображение в серый цвет и взял из него значение гистограммы. Наконец, я использую порог, чтобы получить запрошенную часть.

Что я уже пробовал:

private void button2_Click(object sender, EventArgs e)
        {
            int width = image.Width;
            int height = image.Height;
            
            Color p;

            //Grayscale
            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    p = image.GetPixel(x, y);
                    int a = p.A;
                    int r = p.R;
                    int g = p.G;
                    int b = p.B;
                    double someDouble = ((r * 0.3) + (g * 0.59) + (b * 0.11));
                    int avg = Convert.ToInt32(someDouble);
                    //int avg = (r + g + b) / 3;
                    avg = (avg < 100) && (avg > 80) ? 0 : 255;     // Converting 

                                     gray pixels to either pure black or pure white
                    
                    bmp1.SetPixel(x, y, Color.FromArgb(a,avg, avg, avg));
                }
            }
            pictureBox2.Image = bmp1;
        }


мой вопрос? У меня не получилось хорошей сегментации...может кто-нибудь дать мне совет, а что делает команда "
avg = (avg < 100) && (avg > 80) ? 0 : 255;
"дай мне, когда сбудется? белый "1" или черный"0"?

Member 14129828

Большое спасибо!

1 Ответов

Рейтинг:
8

Gerry Schmitz

если "avg" находится между 81 и 99, он возвращает 0, иначе 255.

(RGB 0,0,0-черный).
(RGB 255,255,255-белый).