Удаление не красных тонированных пикселей - PullRequest
10 голосов
/ 01 апреля 2011

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

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

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

        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: before after

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

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

matlab imtool

1 Ответ

7 голосов
/ 01 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...