Подтвердить что ты не робот

Удаление не красных тонированных пикселей

У меня очень простое приложение для обработки изображений.

Я пытаюсь удалить пиксели, которые не включают красные тона.

До сих пор базовый код, похоже, достиг того, чего я хочу.

        private void removeUnRedCellsBtn_Click(object sender, EventArgs e)
        {
            byte threshold = Convert.ToByte(diffTxtBox.Text); 
            byte r, g, b;
            for (int i = 0; i < m_Bitmap.Width; i++)
            {
                for (int j = 0; j < m_Bitmap.Height; j++)
                {
                    r = im_matrix[i, j].R;
                    g = im_matrix[i, j].G;
                    b = im_matrix[i, j].B;
                    if ((r - b) < threshold || (r - g) < threshold)
                    {
                        m_Bitmap.SetPixel(i, j, Color.White);
                    }

                }
            }
            pictureArea_PictureBox.Image = m_Bitmap;
        }

В принципе, если разница (красный и синий) или (красный и зеленый) меньше порога, он устанавливает белый цвет.

Мои результаты кажутся перспективными однако мне интересно, есть ли лучшее решение для определения использует ли пиксель красные тона в он.

Мои результаты для порогового значения 75 равны beforeafter

Любой алгоритм или мысль будут очень оценены.

Заранее спасибо

matlab imtool

4b9b3361

Ответ 1

У вас может быть больше удачи, если вы преобразуете значения RGB в другое цветовое пространство, например HSL или HSV. Ознакомьтесь с этой ссылкой в Википедии. Преобразование пикселя в одно из этих цветовых пространств должно помочь вам выделить оттенок, к которому вы в основном относитесь.