Путь разработчика    

Гамма-коррекция изображения в C#


Гамма-коррекция или просто гамма - это нелинейное изменение красных, зеленых и синих компонентов пикселей в изображении. Сообщение Используйте объект ImageAttributes для настроить яркость изображения на C# , объясняет, как использовать объекты ImageAttributes и ColorMatrix для настройки яркости изображения. Поскольку он масштабирует яркость каждого пикселя на один и тот же коэффициент, результат может сделать яркие области слишком яркими, а темные области слишком темными.

Например, предположим, что вы осветляете изображение. Яркие области изображения, вероятно, не нуждаются в таком ярком свете, как темные области. И наоборот, если вы затемняете изображение, темные области, вероятно, не нуждаются в таком темном, как яркие области.

Коррекция гаммы регулирует яркость изображения неравномерно, поэтому яркие области не вымываются, а темные области не такие темные. Подробнее о гамма-коррекции см. На странице Википедии Гамма-коррекция .

Вы можете прокручивать пиксели изображения и выполнять гамма-коррекцию для каждого из них, но объект ImageAttributes может выполнять гамма-коррекцию для вас гораздо быстрее.

Следующий метод AdjustGamma выполняет гамма-коррекцию изображения.

Python

Этот код создает объект ImageAttributes и использует его метод SetGamma для установки значения коррекции гаммы. Это значение должно быть больше 0,0. Типичные значения варьируются от 1 до 2.2.

После инициализации объекта ImageAttributes программа использует его для рисования исходного изображения в результате Bitmap и возвращает результат. См. Пример Использование объекта ImageAttributes для настройки яркости изображения на C# для получения дополнительной информации о том, как работает часть чертежа.

Источник: http://csharphelper.com/blog/2016/12/provide-gamma-correction-for-an-image-in-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Управление торговлей 1С:8.2. Редакция 11. Внедрение и применение (Тенгиз Куправа) 2012

Книга " Управление торговлей 1 С:8.2. Редакция 11. Внедрение и применение" раскрывает вопросы внедрения и применения принципиально нового продукта компании 1...

17 08 2019 18:15:59

Разница между Java и JavaScript?

Хотя оба имеют похожие имена, оба являются двумя совершенно разными языками программирования. Java - это полнофункциональный, универсальный, язык программи...

16 08 2019 6:12:50

Эндрю Стиллмен - Изучаем C#, 3-е издание - 2014

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

15 08 2019 13:33:58

Анимация проблемы Башни Ханоя в C#

Следующий метод AnimateMovement перемещает диск по прямой линии из текущего местоположения в новый. Код вычисляет количество пикселей в секунду, которое он...

14 08 2019 0:38:25

В чем разница между поточной и многопроцессорной обработкой?

Нить процесса означает сегмент кода процесса, который имеет свой собственный идентификатор потока, счетчик программ, регистры и стек и может выполняться не...

13 08 2019 10:15:53

Как создать документ Word в C#

В этом примере показано, как заставить C# создать документ Word. Сначала откройте диалоговое окно « Добавить ссылки». На вкладке COM выберите « Библиотека об...

12 08 2019 2:47:48

Есть ли инструмент для поиска ошибок или выполнения статического анализа?

PyChecker - это инструмент для поиска ошибок в исходном коде python. Он обнаруживает проблемы, которые обычно попадают в компилятор для менее динамических...

11 08 2019 5:55:12

Получить имя первого дня недели в C#

Различные культуры начинают неделю с другого первого дня недели. Например, некоторые культуры начинают неделю с понедельника, а другие начинают с воскресен...

10 08 2019 19:19:35

Treeset в Java

Класс TreeSet реализует интерфейс Set, поддерживаемый TreeMap. Он создает коллекцию, которая использует дерево для хранения. Объекты хранятся в отсортирова...

09 08 2019 10:54:16

Сортировка и поиск массивов в C#

Класс Array предоставляет несколько полезных методов работы с массивами. Два из них позволяют сортировать и искать массивы. В следующем коде показано, как...

08 08 2019 9:19:37

Разница между @staticmethod и @classmethod в Python

Python @classmethod означает, что при вызове этого метода мы передаем класс как первый аргумент вместо экземпляра этого класса («self»). Функция @classmeth...

07 08 2019 6:50:17

Почему множественное наследование не поддерживается в Java

Это просто устранить двусмысленность, поскольку множественное наследование может вызвать двусмысленность вокруг проблемы Diamond в нескольких сценариях. На...

06 08 2019 2:34:58

Разрешить ограниченный выбор CheckBox в C#

Обычно пользователь может проверить или снять флажок CheckBox независимо от других параметров. Это сообщение показывает, как вы можете разрешить ограниченн...

05 08 2019 19:40:39

LINQ. Карманный справочник (Джозеф Албахари, Бен Албахари)

Справочник посвящен технологии LINQ (Language Integrated Query) — новой функциональной возможности языка C# и платформы .NET Framework, которая позволяет п...

04 08 2019 22:54:58

Выделение эллипса в программе WPF с использованием C#

В этом примере показано, как вы можете визуализировать эллипс в программе WPF. Обычно для рисования фигур в WPF вы используете какой-то объект. Вы можете д...

03 08 2019 15:40:56

Delphi 6. Учебный курс (В. В. Фаронов)

В книге "Delphi 6. Учебный курс" даются начальные сведения по системе программирования Delphi, разработанной американской корпорацией Borland International...

02 08 2019 12:15:35

Каковы функции help() и dir() разные?

В Python help() - это супер полезная встроенная функция, которая может быть использована для возврата документации Python для конкретного объекта, метода,...

01 08 2019 19:29:40

Делаем повторяющуюся серию «случайных» чисел в C#

Класс Random может генерировать ряд псевдослучайных чисел.  Их называют «псевдослучайными», а не «случайными», потому что цифры генерируются математическим...

31 07 2019 5:18:17

Фигурные изображения в C#

В этом примере показано, как использовать регионы для создания образов PictureBoxes. Формат изображения PNG позволяет вам определять прозрачные пиксели. Ка...

30 07 2019 0:20:21

Как сделать класс с определением и повышением событий в C#

В этом примере используется класс BankAccount для управления банковским счетом (и для определения способов и событий события). Если программа пытается удал...

29 07 2019 5:39:13

Самоучитель C++ (Г. Шилдт)

Необходимость в переработке и дополнении предыдущего издания книги вызвана в первую очередь выходом в свет долгожданного для программистов всего мира едино...

28 07 2019 11:18:59

Сохранение управляющих изображений WPF в C#

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

27 07 2019 1:35:56

Используйте ColorMatrix для добавления водяного знака к изображению на C#

Пример Добавьте водяной знак к изображению в C# объясняет, как добавить полупрозрачный водяной знак к изображению. Этот пример делает то же самое в немного...

26 07 2019 21:48:26

Выбор языка программирования: 6 пунктов при выборе своего языка

Выбор языков программирования достаточно широк, но вы можете найти подходящий для вас и изучить его, если поразмыслите над следующими пунктами. 1. Определи...

25 07 2019 18:24:46

Что такое тег noscript?

Как следует из названия, мы можем использовать noscript для рендеринга альтернативного контента. Все, что находится в тегах , будет отображаться только тог...

24 07 2019 21:43:35

Почему мне нужно переопределить методы equals и hashCode в Java?

В Java каждый объект имеет доступ к методу equals(), поскольку он наследуется от класса Object. Если два объекта равны в соответствии с методом equals (Obj...

23 07 2019 10:17:53

Использовать глобальные привязки команд в WPF и C#

Пример Использование пользовательских привязок команд в WPF и C# объясняет, как вы можете использовать программу для пользовательских команд. ( Это запутанн...

22 07 2019 12:12:27

Актуальные языки программирования

Какие актуальные языки программирования? Программирование все еще остается одной из самых востребовательных сфер деятельности. Именно здесь люди получают самые большие зарплаты, имеют весьма внушительные перспективы для карьерного роста...

21 07 2019 19:55:26

Завершение работы Windows, перезагрузка, выход из системы, блокировка, спящий режим и спящий режим на C#

В этом примере показано, как программа C# может отключить Windows, перезагрузить, заблокировать, выйти из системы или спящий режим. Некоторые из этих опера...

20 07 2019 3:56:17

Метод Split() в Java

Есть ситуация, когда строки содержат несколько фрагментов информации, тогда нам нужно разбить строку, чтобы извлечь отдельные фрагменты. Строки в Java можн...

19 07 2019 11:56:14

Как связаны методы наследования и переопределения?

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

18 07 2019 22:38:11

Что такое перечисления Java и почему они полезны?

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

17 07 2019 10:30:36

Разница между String и StringBuffer / StringBuilder в Java

Здесь String неизменен, означает, что вы не можете изменить сам объект, но вы можете изменить ссылку на объект, тогда как StringBuffer и StringBuilder явля...

16 07 2019 22:52:30

Что такое виртуальная машина Java?

Java Virtual Machine (JVM) - это спецификация, предоставляющая среду выполнения, в которой может быть запущен Java-байт-код. Как следует из названия, JVM д...

15 07 2019 3:45:38

Нарисуйте кривую с отрицательным напряжением в C#

Сообщение Нарисуйте кривую с разной напряженностью в C# использует метод Graphics класса DrawCurve класса для рисования набора кривых с разными напряжениям...

14 07 2019 22:36:35

Сделайте CAPTCHA изображения с перекрывающимися символами в C#

Следующий MakeCaptchaImage2 метод создает Bitmap, содержащий изображение CAPTCHA. Источник: http://csharphelper.com/blog/2015/01/make-captcha-images-with-o...

13 07 2019 5:53:50

Функции в JavaScript

Функции - это «автономные» модули кода, которые выполняют определенную задачу. Он содержит инструкции, используемые для создания вывода с его ввода. Чтобы...

12 07 2019 0:27:42

Сортировка слов по количеству букв в C#

В этом примере сортируются слова по количеству букв. Он подсчитывает количество отдельных букв в списке слов и отображает слова и их подсчеты, отсортирован...

11 07 2019 10:19:39

Отображать системные метрические значения с описаниями на C#

Пример Получить системные показатели на C# показывает, как получить систему метрики, но краткие имена метрик затрудняют понимание результатов. В этом приме...

10 07 2019 22:30:48

Используйте двойную буферизацию, чтобы предотвратить мерцание в PictureBox в C#

Пример Использование двойной буферизации для предотвращать мерцание при рисовании на C# показывает, как сделать форму, использующую двойную буферизацию для...

09 07 2019 8:53:53

Отображение диалога выбора шрифта с кнопкой Apply в C#

Иногда приложение отображает диалоговое окно выбора шрифта с кнопкой Apply. Если вы нажмете эту кнопку, приложение покажет, как это будет выглядеть, если в...

08 07 2019 2:20:49

Запустите приложение DOS и запишите его вывод в C#

Этот код создает объект ProcessStartInfo для хранения информации о процессе, который он должен запустить. Затем он создает объект Process, устанавливает ег...

07 07 2019 15:10:18

Статические переменные класса в Python

Статическая переменная - это переменная, которая была распределена статически, что означает, что ее время жизни - это весь запуск программы. Статические пе...

06 07 2019 0:23:18

Объекты и классы в C#

В методе объектно-ориентированного программирования мы разрабатываем программу с использованием объектов и классов. Объект - это как физический, так и логи...

05 07 2019 19:57:45

Позвольте пользователю писать с различными стилями линии в C#

Пример Позвольте пользователю набросать на PictureBox в C# объясняет, как разрешить пользователю рисовать полилинии, но программа только рисует тонкие черн...

04 07 2019 11:28:42

Загрузите изображение во время выполнения в WPF и C#

В этом примере показано, как загрузить изображение во время выполнения в программе WPF. Как это часто бывает с WPF, это легко, когда вы знаете, что делать....

03 07 2019 8:11:40

StringTokenizer в Java

Класс StringTokenizer пакета Java.util позволяет приложению разбивать или разбивать строку на мелкие части с помощью определенного разделителя (пробел явля...

02 07 2019 14:44:33

Тип заливки в Java

Изменение значения из одного типа данных в переменную другого типа называется преобразованием типа данных. Существует два типа литья, Примитивное литье тип...

01 07 2019 17:13:36

Случайный цвет для прокладки Аполлония в C#

Этот пример похож на пример Нарисуйте прокладку Аполлония в C# < / a> за исключением того, что он заполняет круги, которые он рисует со случайными цветами....

30 06 2019 21:29:43

Что значит Static в Java?

Static - это модификатор без доступа. Это означает, что что-то (поле, метод, блок или вложенный класс) связано с типом, а не с каким-либо конкретным экземп...

29 06 2019 4:32:50

Какова цель утверждения pass в python?

Инструкция pass не выполняет никаких действий и служит в качестве заполнителя в Python. Его можно использовать, когда инструкция требуется синтаксически, н...

28 06 2019 0:47:13

Используйте код WPF для отображения индексов и надстроек в C#

В сообщении Отображение индексов и надстроек в текстовом блоке WPF в C# < / a> Я упомянул, что вы можете создавать индексы и надстрочные индексы в коде WPF...

27 06 2019 3:44:50

В чем разница между созданием String как new() и literal?

Оба выражения дают объект String, но между ними существует тонкая разница. Когда вы используете новую строку («Hello World !!»); , он явно создает новый и...

26 06 2019 5:47:52

Hello World! Первая программа на Java

Наиболее распространенным примером первой Java-программы является знаменитый Hello World! программа. Прежде чем перейти к первой программе Java, вы должны...

25 06 2019 6:36:29

Каковы различия между ArrayList и Vector в Java?

Java ArrayList и Vector реализуют интерфейс List и поддерживают порядок вставки. Но между ArrayList и Vector есть некоторые отличия. Java ArrayList и Vecto...

24 06 2019 19:57:41

Используйте ветку и привязаны для решения проблемы раздела в C#

Сообщение Используйте исчерпывающий поиск для решить проблему раздела в C# , объясняет проблему раздела и то, как вы можете использовать исчерпывающий поис...

23 06 2019 17:28:29

Среда разработки PyCharm

PyCharm – интегрированная среда разработки для Python. Разрабатывалась компанией JetBrains. За основу взята другая интегрированная среда разработки Intelli...

22 06 2019 1:45:26

Обменные курсы в C#

Этот код загружает XmlDocument из следующего URL-адреса. Вы можете выполнить этот URL-адрес в своем браузере, чтобы увидеть, как выглядит результат. В след...

21 06 2019 1:23:26

C# 4.0 Полное руководство (Герберт Шилдт)

В книге "C# 4.0 Полное руководство" Г. Шилдта по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все осно...

20 06 2019 22:43:19

Нарисуйте кривую с резко очерченными цветами в C#

Сообщение Нарисуйте кривую с несколькими цветами в C# показывает, как вы можете рисовать кривую, которая постепенно меняется от одного цвета к другому, ког...

19 06 2019 17:22:37

Как сделать слегка окрашенную кнопку в C#

Сделать отображение кнопки изображение под ним в C# показывает, как заставить кнопку отображать снимок, который лежит под ним. К сожалению, кнопка только д...

18 06 2019 1:22:37

Используйте очередь для рисования двоичного дерева с шириной первого цвета в C#

Пример Нарисуйте ширину в ширину двоичное дерево в C# показывает, как использовать Stack для рисования двоичного дерева в порядке глубины. Программа создае...

17 06 2019 8:41:32

Используйте «округление банкира» и «нормальное округление» в C#

По умолчанию метод Math.Round использует «округление банкира». При округлении банкира число с конечной цифрой 5 округляется до ближайшего четного числа, а...

16 06 2019 1:27:33

Является ли JavaScript функциональным языком программирования?

Функциональное программирование вращается вокруг идеи о том, что программа состоит из набора функций, и они следуют определенным правилам. Это парадигма пр...

15 06 2019 11:48:55

Разница между статическими и нестатистическими методами Java

Статический метод принадлежит классу, а нестатический метод принадлежит объекту класса. Статические методы полезны, если у вас есть только один экземпляр,...

14 06 2019 20:51:53

Скопируйте массивы быстро в C#

Для копирования массива достаточно просто использовать цикл для, но для большинства массивов вы можете получить еще лучшую производительность, используя Ar...

13 06 2019 6:50:56

Среда разработки Intellij idea

IntelliJ IDEA — интегрированная среда разработки программного обеспечения на многих языках программирования от компании JetBrains. В 2001 году была выпущен...

12 06 2019 12:39:12

Анимирование цветов радуги в C#

Пример Числовые значения карты для и из цветов в градиенте цвета в C# рисует градиент цвета, который использует цвета радуги. Этот пример оживляет это. Ког...

11 06 2019 11:28:49

With в Python

В python ключевое слово with используется при работе с неуправляемыми ресурсами (например, файловыми потоками). Инструкция for упрощает обработку исключени...

10 06 2019 2:46:20

Метод Java String charAt()

Java String charAt() возвращает символ, расположенный по указанному индексу в String. Строковые индексы начинаются с нуля и варьируются от 0 до длины() - 1...

09 06 2019 7:18:20

Сделать общий класс очереди приоритетов в C#

В этом примере показано, как создать общий класс очереди приоритетов. Общий класс похож на обычный класс, за исключением того, что он может принимать один...

08 06 2019 19:54:54

Эндрю Стиллмен - Изучаем C#, 3-е издание - 2014

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

07 06 2019 1:59:31

Программирование на С++ глазами хакера, 2-е издание (Михаил Фленов)

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

06 06 2019 8:54:59

Полный справочник по C++ (Герберт Шилдт)

Четвертое издание энциклопедического труда Г. Шилдта " Полный справочник по C++", в котором всесторонне рассматривается и иллюстрируется основная терминолог...

05 06 2019 8:28:30

Циклы while и do..while в Java

Мы используем многократные действия для решения проблем повседневной жизни. В программировании мы также используем многократные действия для решения пробле...

04 06 2019 10:18:15

Каковы недостатки использования InnerHTML в JavaScript?

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

03 06 2019 1:14:31

Установить положение видео с помощью полосы прокрутки с помощью WPF в C#

Пример Управление видео с помощью WPF MediaElement в C# позволяет вам установить положение видео несколькими способами. Вы можете использовать кнопки Next...

02 06 2019 11:41:55

Метод Replace() в Java

Метод Java String replace() заменяет все существующие вхождения символа в String другим символом. Синтаксис Замена последовательностей символов Метод Java...

01 06 2019 8:49:33

Длина строки в C#

Свойство Length в String Class возвращает общее количество символов в String. Синтаксис: int string.length Возвращает: Целое число: количество символов в у...

31 05 2019 3:16:32

Циклы в Java Примеры и синтаксис

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

30 05 2019 7:15:48

Философия Java (Брюс Эккель)

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

29 05 2019 8:20:33

Qt 5.3. Профессиональное программирование на C++ (Шлее М.)

  Книга посвящена разработке приложений для Windows, Mac OS X и Linux с использованием библиотеки Qt версии 5.3. Подробно рассмотрены возможности, предостав...

28 05 2019 0:41:57

Почему Java не поддерживает указатели?

Большинство исследований согласны с тем, что указатели являются одной из основных функций, которые позволяют разработчикам вводить ошибки в свой код. Когда...

27 05 2019 0:30:26

Уникальные слова в файле Microsoft Word в C#

Этот пример является модификацией более раннего сообщения Перечислить уникальные слова в файле Microsoft Word на C# . Эта программа считывает слова в текст...

26 05 2019 17:51:58

Безопасное управление документами на C#

Это довольно привлекательный пример, который показывает, как безопасно управлять документами.  Части все просты, но есть много плотно интегрированных частей...

25 05 2019 17:48:24

Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14 (Скотт Мейерс)

В этой книге отражен бесценный опыт ее автора как программиста на C++. Новые возможности этого языка программирования, появившиеся в стандартах C++11 и C++...

24 05 2019 2:34:45

Выполнение эффекта «красных глаз» на изображении в C#

В этом примере показан один подход для уменьшения эффекта «красных глаз». Иногда на снимке глаза человека или животного выходят ярко-красным. Это раздражаю...

23 05 2019 14:28:27


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69