Каков был бы хороший TRUE черно-белый colormatrix?

Я хочу преобразовать изображение от цвета до ЧЕРНО-БЕЛОГО (т.е. никакая шкала полутонов, просто черная и белая). У кого-либо есть хороший colormatrix для достижения этого?

14
задан SSS 26 November 2012 в 04:15
поделиться

2 ответа

Наконец-то я нашел решение своей проблемы:

  1. Преобразуйте изображение в оттенки серого, используя хорошо известную цветовую матрицу.
  2. Используйте метод SetThreshold класса ImageAttributes , чтобы установить порог, отделяющий черный от белого.

Вот код C #:

using (Graphics gr = Graphics.FromImage(SourceImage)) // SourceImage is a Bitmap object
        {                
            var gray_matrix = new float[][] { 
                new float[] { 0.299f, 0.299f, 0.299f, 0, 0 }, 
                new float[] { 0.587f, 0.587f, 0.587f, 0, 0 }, 
                new float[] { 0.114f, 0.114f, 0.114f, 0, 0 }, 
                new float[] { 0,      0,      0,      1, 0 }, 
                new float[] { 0,      0,      0,      0, 1 } 
            };

            var ia = new System.Drawing.Imaging.ImageAttributes();
            ia.SetColorMatrix(new System.Drawing.Imaging.ColorMatrix(gray_matrix));
            ia.SetThreshold(0.8); // Change this threshold as needed
            var rc = new Rectangle(0, 0, SourceImage.Width, SourceImage.Height);
            gr.DrawImage(SourceImage, rc, 0, 0, SourceImage.Width, SourceImage.Height, GraphicsUnit.Pixel, ia);                
        }

Я протестировал этот код, и он примерно в 40 раз быстрее, чем пиксельная манипуляция.

25
ответ дан 1 December 2019 в 08:15
поделиться

Если вы хотите, чтобы это выглядело хотя бы наполовину прилично, вам, вероятно, придется применить некоторую форму дизеринга.

Вот полное обсуждение, хотя и немного устаревшее:

http://www.efg2.com/Lab/Library/ImageProcessing/DHALF.TXT

2
ответ дан 1 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: