Member 14129828 Ответов: 2

Как сделать контрастное растяжение цветного изображения?


Я хочу сделать программу контрастного растяжения для улучшения моего изображения. Я разделил изображение на 3 канала (красный, зеленый, синий), но я не знаю, как обновить значение этих каналов. Я не знаю, как работать с двумя массивами измерений. У меня есть ошибка ("не удается неявно преобразовать тип int в байт")

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

private void button1_Click(object sender, EventArgs e)
       {

           int[] maxAndMin = GetMaxMin(bmp);
               for (int i = 0; i < w; i++)
               {
                   for (int j = 0; j < h; j++)
                   {

                       red[i, j] = ((red[i, j] - maxAndMin[1]) * 255 / (maxAndMin[0] - maxAndMin[1]));
                       green [i, j] = ((green [i, j] - maxAndMin[1]) * 255 / (maxAndMin[0] - maxAndMin[1]));
                       blue[i, j] = ((blue[i, j] - maxAndMin[1]) * 255 / (maxAndMin[0] - maxAndMin[1]));

                   }
               }

               int[] histored = new int[256];
               int[] histogreen = new int[256];
               int[] histoblue = new int[256];
               histogram(w, h, red, ref histored);
               histogram(w, h, green, ref histogreen);
               histogram(w, h, blue, ref histoblue);

lmoelleb

Включите подробную информацию о том, в какой строке находится ошибка - пожалуйста, не тратьте наше время, не предоставляя легкодоступную информацию, предоставленную непосредственно компилятором, дающим вам ошибку. Также, пожалуйста, измените название, чтобы соответствовать тому, что вы просите. Вы не спрашиваете, как сделать контрастное растяжение изображения. Вы просто заявляете, что получаете ошибку (и я предполагаю, что вам нужна помощь в этом?)

TheRealSteveJudge

Спасибо, что приняли мой ответ! Надеюсь, мой ответ не оскорбил вас, как предполагал Билл. Если это так, то я хотел бы извиниться.

2 Ответов

Рейтинг:
6

TheRealSteveJudge

Почему бы вам не воспользоваться одной из доступных бесплатных библиотек обработки изображений вместо того, чтобы тратить свое и наше драгоценное время?

напр. Решение с открытым исходным кодом для обработки изображений на лету с использованием .NET :: ImageProcessor[^]

Изменение контраста описано здесь
Контраст :: ImageProcessor[^]


BillWoodruff

Мой голос за № 1

- вместо того, чтобы тратить ваше и наше драгоценное время?"

Если сообщение вызывает у вас гнев, то не отвечайте. Здесь нет причин оскорблять ОП. Это вполне разумный вопрос, и нет ничего плохого в том, что кто-то исследует, как обрабатывать изображения.

TheRealSteveJudge

Спасибо, Билл. В мои намерения не входило оскорблять ОП.
Мое намерение состояло в том, чтобы дать OP какой-то полезный ресурс, чтобы легко выполнять настройку constrast вместо саморазвивающихся манипуляций с изображениями, таким образом экономя время. Может быть, ты сегодня встала не с той стороны кровати.
Тем не менее, хорошего вам уик-энда!

BillWoodruff

Если вы не видите, как оскорбительны были ваши слова, мне вас жаль.

Member 14129828

спасибо за ваш совет, я не знаю об этой библиотеке, потому что я новичок в c# ... не могли бы вы дать мне дополнительную ссылку, чтобы помочь мне понять библиотеку и как загрузить ее в мой проект, если вы не возражаете

TheRealSteveJudge

Вот что я нашел:

Краткое введение:
https://naimhamadi.wordpress.com/2014/06/25/processing-images-in-c-easily-using-imageprocessor/

Здесь имеется 30 примеров:
https://csharp.hotexamples.com/examples/ImageProcessor/ImageFactory/-/php-imagefactory-class-examples.html

Я надеюсь, что это будет полезно.

Member 14129828

Большое спасибо... Эта информация очень ценна для меня

Рейтинг:
17

BillWoodruff

Пропало много кода ... трудно сказать, что вы делаете. Смотрите, если это полезно: [^]