Порог цвета к изображению в C#
Пример
Метод SetThreshold принимает в качестве параметра a float между 0 и 1. Когда вы используете объект ImageAttributes для рисования пикселя, пиксельные цветовые компоненты (по шкале от 0 до 1) сравниваются с пороговым значением. Если компонент больше или равен пороговому значению, он устанавливается в 1. Если компонент меньше порогового значения, он установлен в 0.
Например, предположим, что цветовые компоненты пикселя в масштабе от 0 до 255: R = 128, G = 200 и B = 180. Преобразование этих компонентов в шкалу от 0 до 1 (где 0 & equiv; 0 и 255 & equiv; 1) дает значения компонент R = 0,502, G = 0,784 и B = 0,706.
Теперь предположим, что порог равен 0,75. Для этого пикселя красные и синие компоненты находятся ниже порога, поэтому они меняются на 0. Зеленая компонента находится выше порога, поэтому она установлена в 1. Результат: R = 0, G = 1, B = 0. Преобразование назад к нормальному шкале от 0 до 255, R = 0, G = 255, B = 0, зеленовато-зеленого цвета.
Следующий метод AdjustThreshold применяет порог к изображению.
// Выполните настройку порога на изображении. private Bitmap AdjustThreshold(Image image, float threshold) { // Создаем растровое изображение результата. Bitmap bm = new Bitmap(image.Width, image.Height); // Создаем объект ImageAttributes и устанавливаем порог. ImageAttributes attributes = new ImageAttributes(); attributes.SetThreshold(threshold); // Нарисуем изображение на новом растровом изображении // при применении новой ColorMatrix. Point[] points = { new Point(0, 0), new Point(image.Width, 0), new Point(0, image.Height), }; Rectangle rect = new Rectangle(0, 0, image.Width, image.Height); using (Graphics gr = Graphics.FromImage(bm)) { gr.DrawImage(image, points, rect, GraphicsUnit.Pixel, attributes); } // Вернуть результат. return bm; }
// Выполните настройку порога на изображении. private Bitmap AdjustThreshold (изображение изображения, порог поплавка) { // Создаем растровое изображение результата. Растровое изображение bm = новое растровое изображение (image.Width, image.Height); // Создаем объект ImageAttributes и устанавливаем порог. Атрибуты ImageAttributes = new ImageAttributes (); attributes.SetThreshold (порог); // Нарисуем изображение на новом растровом изображении // при применении новой ColorMatrix. Точка [] points = { новая точка (0, 0), новая точка (image.Width, 0), new Point (0, image.Height), }; Прямоугольник rect = новый прямоугольник (0, 0, image.Width, image.Height); используя (Graphics gr = Graphics.FromImage (bm)) { gr.DrawImage (изображение, точки, прямоугольник, GraphicsUnit.Pixel, атрибуты); } // Вернуть результат. return bm; }
...
Конечным результатом является изображение, содержащее только первичный и вторичный цвета, плюс черный и белый.