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

Гамма-коррекция изображения в 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:

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

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

23 09 2020 18:46:32

Вектор в Java

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

22 09 2020 15:25:12

Преобразование двоичного числа в десятичное в C#

В этой статье мы напишем программу на C# для выполнения преобразования из двоичного числа в десятичное. Вывод:  ...

21 09 2020 6:26:52

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

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

20 09 2020 15:42:28

Разница между Mutable и неизменяемым в Python

Все в Python - это объект. Вы должны понимать, что Python представляет все свои данные как объекты. Изменчивость объекта определяется его типом. Некоторые...

19 09 2020 2:25:49

Как получить IP-адрес в Python

Модуль сокетов в Python обеспечивает доступ к интерфейсу сокетов BSD. Имя socket.gethostbyname (имя хоста) переводит имя хоста в формат адреса IPv4. Адрес...

18 09 2020 13:26:30

Как отобразить иерархию управления формой в C#

В этом примере отображается иерархия элементов управления для формы. Это на самом деле относительно просто. Некоторые элементы управления могут содержать д...

17 09 2020 0:38:55

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

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

16 09 2020 0:26:33

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

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

15 09 2020 5:11:59

Основа для карточной игры в C#

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

14 09 2020 13:27:19

Какова цель сериализации / десериализации в Java?

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

13 09 2020 14:59:19

JavaScript. Подробное руководство (Дэвид Флэнаган)

Пятое издание бестселлера "Javascript. Подробное руководство" полностью обновлено. Рассматриваются взаимодействие с протоколом HTTP и применение технологии...

12 09 2020 16:50:14

Как найти слово под мышью в элементе управления RichTextBox в C#

Следующий метод WordUnderMouse возвращает слово под мышью в RichTextBox. В коде используется метод RichTextBox управления GetCharIndexFromPosition, чтобы п...

11 09 2020 0:29:27

Как ClassLoader работает на Java?

Java Classloader является частью JRE (Java Runtime Environment), которая динамически загружает классы Java в JVM (виртуальная машина Java). В частности, Ja...

10 09 2020 17:57:40

Разделить файлы изображений в C#

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

09 09 2020 8:32:23

Разница между инструментами Runnable и extends Thread в Java

Java допускает только одно наследование, а это означает, что если вы наследуете Thread, вы не сможете наследовать ни один другой класс. Внедрение интерфейс...

08 09 2020 17:43:34

Использование методов массива в C#

Пример Сортировка и поиск массивов на C# показывает, как для использования двух полезных методов Array: Сортировать и BinarySearch. В этом примере демонстр...

07 09 2020 0:55:32

Выполнять операции набора в C#

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

06 09 2020 0:40:55

Мифы о программировании

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

05 09 2020 10:52:49

Как использовать * args и ** kwargs в Python

Параметр с ** (двойной звездой) и * (звезда) позволяет определять функции для принятия и для пользователей передавать любое количество аргументов, position...

04 09 2020 1:44:59

Отображение местного времени и GMT в C#

В этом примере используется Timer для выполнения следующего кода каждые полсекунды. Вначале используется DateTime.Now для получения текущей даты и времени....

03 09 2020 23:19:17

Преобразование между случаем Паскаля, верблюжьим футляром и правильным случаем метод 2 в C#

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

02 09 2020 16:14:12

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

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

01 09 2020 13:44:48

Как сделать изображение прозрачным фоном в C#

Метод Bitmap класса MakeTransparent изменяет все пиксели с заданным цветом на прозрачный цвет A = 0, R = 0, G = 0, B = 0 Когда программа запускается, следу...

31 08 2020 15:41:17

HTML5 для веб-дизайнеров (Кит Джереми)

В HTML5 появилось много интересных тэгов, в том числе поддержка аудио и видео-файлов. Теперь вам не надо тратить время на установку плагинов для проигрыван...

30 08 2020 7:54:39

Заменить текст, соответствующий шаблону в C#

В этом примере используется следующий код для замены текста, соответствующего шаблону в строке. Этот код создает объект Regex, передавая его конструктору ш...

29 08 2020 2:53:44

Зачем нужны общие типы в Java?

В Java 5 вводятся обобщения для включения типов (классов и интерфейсов) в качестве параметров при определении классов, интерфейсов и методов. Они реализова...

28 08 2020 0:29:44

Список доступных кодов культуры в C#

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

27 08 2020 17:41:56

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

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

26 08 2020 3:56:38

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

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

25 08 2020 21:38:15

Языки программирования высокого уровня: высокоуровневые языки

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

24 08 2020 8:20:44

Использование EXIF для ориентации изображения на C#

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

23 08 2020 18:48:25

Нарисуйте масштабированное нормальное распределение в C#

Пример Нарисовать нормальную кривую распределения в C# показывает, как для нормального распределения. К сожалению, для некоторых средств и стандартных откл...

22 08 2020 20:57:56

Базовые типы данных Java

В Java, объектах и примитивах есть две основные категории данных. Все члены данных и локальные переменные должны иметь тип данных, который является либо пр...

21 08 2020 10:37:15

Объявлять и инициализировать пустые массивы в C#

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

20 08 2020 9:34:35

Что используется для создания строки Unicode в Python?

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

19 08 2020 10:18:26

Как получить список атрибутов класса в Python

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

18 08 2020 5:58:39

Как аннотации работают на Java?

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

17 08 2020 13:18:51

Что такое компилятор Just-In-Time (JIT) в Java?

Компилятор Just-In-Time (JIT) является компонентом JRE (Java Runtime Environment), который повышает производительность приложений Java во время выполнения....

16 08 2020 16:48:20

Что такое ключевое слово instanceof в Java?

Java instanceof - это ключевое слово. Это двоичный оператор, используемый для проверки, является ли объект (экземпляр) подтипом данного типа. Он возвращает...

15 08 2020 17:13:23

Загрузка статического и динамического класса в Java

Концепция загрузчика классов, один из краеугольных камней виртуальной машины Java (JVM). В нем описывается поведение преобразования именованного класса в б...

14 08 2020 4:23:37

Язык программирования С++ (Б. Страуструп)

Книга Б. Страуструпа " Язык программирования С++" дает описание языка, его ключевых понятий и основных приемов программирования на нем. Это завершенное руко...

13 08 2020 8:31:57

Показывать сложный интерес в C#

Это более графическая версия примера Рассчитайте значение ежемесячной инвестиции в C# . Вместо добавления значений в элемент управления ListView этот приме...

12 08 2020 22:29:42

Выполнение специальных команд SQL в C#

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

11 08 2020 14:25:41

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

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

10 08 2020 1:34:30

Что такое классы-оболочки в Java

Как сказано в названии, класс-оболочка обертывает (охватывает) вокруг типа данных и дает ему вид объекта. Они используются для преобразования любого примит...

09 08 2020 9:27:13

Работа с объектами JavaScript

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

08 08 2020 5:37:49

Чтение и запись CSV-файлов в Python

Что такое CSV-файл? CSV - это файл значений разделенных запятыми, который позволяет сохранять данные в структурированном формате таблицы. Все CSV-файлы пре...

07 08 2020 10:30:38

Как использовать объекты для создания XML-документа в C#

В этом примере показано, как использовать XML DOM (объектную модель документа) для создания XML-документа. Существует несколько способов создания XML-докум...

06 08 2020 12:56:17

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

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

05 08 2020 8:39:16

В чем разница между final, finally и finalize?

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

04 08 2020 15:37:52

Генерация случайных полигонов в C#

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

03 08 2020 11:29:54

Как отобразить текст в StatusLabel, даже если он не подходит для C#

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

02 08 2020 4:33:35

Отображение масштабируемой карты с горячими точками в C#

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

01 08 2020 6:44:58

Управляйте корзиной (корзиной для мусора) в C#

Вы можете использовать функции API для управления корзиной, но некоторые операции намного проще, если вы используете библиотеку Microsoft.VisualBasic. Вы м...

31 07 2020 5:28:33

Оператор Java break и continue

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

30 07 2020 11:40:26

Как отправить электронное письмо в C#

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

29 07 2020 11:18:20

Нарисуйте простую гистограмму в C#

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

28 07 2020 17:25:31

1С: Бухгалтерия 8.3 для бухгалтера (Николай Селищев)

1 С: Бухгалтерия 8.3 для бухгалтера является иллюстрированным практическим руководством по работе с новейшим и самым современным программным продуктом по ве...

27 07 2020 7:52:30

В чем смысл System.out.println в Java?

System.out.println - это оператор Java, который печатает переданный аргумент, в System.out, который обычно является stdout. System - класс out - это переме...

26 07 2020 18:44:50

Новая большая книга CSS (Дэвид Макфарланд)

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

25 07 2020 13:29:47

Дмитрий Осипов - Delphi XE2

Настоящее издание посвящено новейшей разработке компании Embarcadero - языку Delphi XE2. Книга предоставляет читателю не только полное описание одного из с...

24 07 2020 0:32:10

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

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

23 07 2020 21:37:42

Создание и передвижение 2D персонажа в Unity по клику мыши

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

22 07 2020 2:43:10


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