Перевод в оттенки серого инструментом Вычисление


Оглавление (нажмите, чтобы открыть):

Относительная яркость и контрастность цветов

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

Следующий калькулятор вычисляет относительную яркость цвета. 100% яркости у белого цвета, 0% у черного — остальные имеют относительную яркость между этими двумя границами.

Относительная яркость цвета

Вычисление относительной яркости

Каждая компонента цвета в шестнадцатеричном формате это целое число C8, находящееся в диапазоне от 0 до 255 ( C8= 8 — красный, G8 — зеленый, B8 — синий>).
Переведем значения компоненты цвета из целых в вещественные значения в диапазоне 0..1:
Csrgb = C8/255, где C8 = < R8, G8, B8 >

Найдем для каждой компоненты цвета линейное значение C = < R,G,B >:
C = ((Csrgb+0.055)/1.055) 2.4 , если Csrgb > 0.03928
или
C = Csrgb/12.92, если Csrgb 1

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

Контрастность

Зная относительную яркость цвета легко получить коэффициент контрастности двух, который отражает восприятие человеком двуцветных изображений: (L1 + 0.05) / (L2 + 0.05), где L1 и L2 — значения относительной яркости цвета фона и символа (L1>L2). 1
Подбирая цвет символов и фона, следует иметь в виду, что коэффициент контрастности этих двух цветов для них должен быть более 7, чтобы текст хорошо читался людьми с плохим зрением. Для больших символов и логотипов допускается коэффициент >4.5.

Перевод в оттенки серого инструментом «Вычисление»

С наступлением холодов становится особенно важно знать, какая за окнами температура, чтобы одеться по погоде и не простудиться. В мире для измерения температуры используются в основном две шкалы — Цельсия и Фаренгейта. Существует немало конвертеров величин, позволяющих перевести одни единицы измерения в другие. Но порой самым лучшим является наиболее простой инструмент, такой как приложение Fahrenheit Celsius Converter от разработчика Ricco, которое можно загрузить из Google Play.

Приложение предназначено для выполнения всего одной задачи — перевода градусов Фаренгейта в градусы Цельсия и обратно. Функциональный минимализм приложения сопровождается столь же минималистическим интерфейсом. На черном фоне располагаются серые виртуальные цифровые кнопки. Цвет цифр и надписей на них также черный. Данное приложение не для тех пользователей, которые предпочитают универсальные комплексные инструменты, подобные Kitchen Converter, предназначенному для тех, кто готовит по англоязычным рецептам.

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

Достаточно ввести температуру в градусах Цельсия (к примеру, «5») и коснуться кнопки преобразования в градусы Фаренгейта («C=>F»), чтобы получить результат вычислений и узнать, что 5 градусов Цельсия соответствуют 41,0 градусам по шкале Фаренгейта. Для ввода положительных значений температур («градусов тепла») вводить знак «+» не требуется. Более того, он просто отсутствует на виртуальной клавиатуре рассматриваемого приложения.

Осуществить обратное преобразование (из градусов Фаренгейта в градусы Цельсия) можно коснувшись кнопки «F=>C». Таким образом мы узнаем, что 5 градусов Цельсия составляют -15,0 градусов Фаренгейта.

Кнопки «C=>F» и «F=>C» располагаются под основной виртуальной клавиатурой приложения с некоторым отступом, создающим пространство для вывода на экран результата вычислений.

Расположенная на клавиатуре кнопка «Clear» предназначена для очистки поля ввода. Последний полученный результат при этом не удаляется до того, пока не будет произведено следующее вычисление.

Ввод отрицательных температур («градусов мороза») начинается с касания кнопки «-». Узнаем, какому значению в градусах Фаренгейта соответствует температура -20,7 градусов по Цельсию. Для этого необходимо последовательно коснуться кнопок «2», «0», «.», «7» и «C=>F». За кнопкой «.» вводится дробная часть числа. -20,7 градусов Цельсия = 69,0 градусов Фаренгейта.

Перед вводом следующего числа необходимо вновь очистить поле ввода кнопкой «Clear». Одно касание этой кнопки удаляет из поля ввода всего один знак. Значения в поле ввода и в поле результата — белого цвета.

Следует отметить, что приложение не подходит для использования в медицинских нуждах и других задачах, требующих высокой точности, поскольку округляет результат вычислений до целых градусов. К примеру, 1 градус по Цельсию составляет 33,8 градуса Фаренгейта, но приложение Fahrenheit Celsius Converter в качестве результата выдает значение 34,0 по Фаренгейту.

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

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

Какие программные инструменты вы назвали бы наиболее нужными новым пользователям Android-девайсов?

Приложение: Fahrenheit Celsius Converter Разработчик: Ricco Категория: Путешествия Версия: 1.0 Цена: Бесплатно Скачать: Google Play

Пример 3

В этом же примере будем вычислять коэффициент так:

Стаж до 10 лет – 1,

От 10 до 20 – 1,5,

Следовательно, здесь нужно выбирать из 3 вариантов. Используем вложенные функции ЕСЛИ.

В столбец Е вставляем формулу: =ЕСЛИ(C2 =20;2;1,5))

Таблица примет вид:


A B C D E F
ФИО Дата приема на работу Стаж Оклад Коэффициент Всего
Иванов И.И. 11.01.1980
Петров П.П. 20.05.1995 1,5
Сидоров С.С. 05.12.1999

Порядок проведения работы:

Задание № 1

1. Создать новую книгу Excel в папке со своей фамилией. Присвоить имя PR5.

2. Перейти на рабочий лист и назвать его Возраст.

3. Создать список из 10 фамилий и инициалов (см. создание списков для автозаполнения).

4. Внести его в таблицу с помощью автозаполнения.

5. Занести в таблицу даты рождения.

6. В столбце Возраст вычислить возраст этих людей с помощью функций СЕГОДНЯ и ГОД.Для вычисления возраста используется формула:

=(ГОД(СЕГОДНЯ()-B2)-1900)

7. Отформатировать таблицу.

8. Сделать заголовок к таблице «Вычисление возраста»

ФИО Дата рождения Возраст
Иванов И.И.
Петров П.П.
Сидоров С.С.
Мышкин М.М.

Задание № 2

1. Откройте файл с Практической работой 4, перейдите на лист Ведомость.

2. В эту таблицу добавьте снизу ячейки по образцу и выполните соответствующие вычисления. (Используйте статистические функции МАКС и СРЗНАЧ)

Месяц Отчетный год Отклонение от плана
план фактически выполнение, %
i Mi Pi Fi Vi Oi
Январь 700 800,00 р. 800 500,00 р.
Февраль 300 560,00 р. 300 700,00 р.
Март 800 900,00 р. 700 800,00 р.
Апрель 500 460,00 р. 400 590,00 р.
Май 600 570,00 р. 700 650,00 р.
Июнь 600 540,00 р. 500 670,00 р.
Июль 400 900,00 р. 500 430,00 р.
Август 700 890,00 р. 800 700,00 р.
Сентябрь 600 540,00 р. 600 500,00 р.
Октябрь 600 540,00 р. 600 570,00 р.
Ноябрь 600 540,00 р. 600 520,00 р.
Декабрь 900 900,00 р. 1 500 000,00 р.
Максимум
Среднее

Задание №3. Работа с функциями Год и Сегодня

Ячейки, в которых выполнена заливка серым цветом, должны содержать формулы!

Задание №3.1

1. Создать и отформатировать таблицу по образцу (Фамилии ввести из списка с помощью автозаполнения)

2. Вычислить стаж работы сотрудников фирмы по формуле:

=(ГОД(СЕГОДНЯ()-Дата приема на работу)-1900)

3. Переименовать Лист1 в Сведения о стаже сотрудников

Сведения о стаже сотрудников гостиницы «Рога и копыта»
ФИО Должность Дата приема на работу Стаж
Иванов И.И. Директор 01.01.2003
Петров П.П. Водитель 02.02.2002
Сидоров С.С. Инженер 03.06.2012
Кошкин К.К. Гл. бух. 05.10.2006
Мышкин М.М. Охранник 01.09.2008
Мошкин М.М. Инженер 04.12.2007
Собакин С.С. Администратор 06.10.2008
Лосев Л.Л. Администратор 14.04.2011
Гусева Г.Г. Горничная 25.06.2002
Волкова В.В. Горничная 02.06.2009

Задание № 3.2

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Да какие ж вы математики, если запаролиться нормально не можете. 8423 — | 7326 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Назначение и примеры расчета цветной маркировки резисторов

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


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

Стандартная цветовая маркировка

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

Рассмотрим особенности проведения стандартной цветовой маркировки:

  1. Маркировка с 3 полосами проводится следующим образом: первых 2 кольца обозначают цифры, 3 – множитель. 4 кольца нет, так как для всех подобных резисторов принятое отклонение составляет 20%.
  2. 4 кольца – маркировка, которая несколько отличается от предыдущего случая. Последнее кольцо означает отклонение. Все значения выбираются при помощи специальной таблицы. В данном случае отклонение составляет 5%, 10%.
  3. 5 колец означает минимальный показатель отклонения, до 0, 005%. В данном случае первые 3 кольца означают цифры, которые затем нужно умножить на множитель. Найти множитель можно по все той же таблице, искать нужно значение цвета 4 кольца.
  4. Есть варианты исполнения резисторов, которые имеют 6 колец. Их расшифровка проводится также, как и при 5 кольцах, только последнее из них означает температурный коэффициент изменения. Данное значение определяет то, насколько изменится показатель сопротивления при повышении температуры корпуса резистора.

Для чего нужна?

Малой мощности резисторы имеют очень небольшие размеры, их мощность составляет около 0,125 Вт. Диаметральный размер подобного варианта исполнения составляет около миллиметра, а длина – несколько миллиметров.

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

Примером можно назвать 4К7, что означает 4,7 кОм. Однако, также подобный метод в некоторых случаях не применим.

Цветовая схема маркировки имеет следующие особенности:

  1. Легко читаемая.
  2. Проще наносится.
  3. Может передать всю необходимую информацию о номиналах.
  4. Со временем информация не стирается.

При этом, можно отметить основное различие в данной маркировке:

  1. При точности 20% используется маркировка, содержащая 3 полоски.
  2. Если точность составляет 10% или 5%, то наносится 4 полоски.
  3. Более точные варианты исполнения имеют 5 или 6 полосок.

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

Онлайн-калькуляторы

К наиболее популярным можно отнести:

  1. http://www.chipdip.ru/info/rescalc – сервис, позволяющий проводить расчеты для вариантов исполнения, которые имеют 4 или 5 маркировочных полосок. Работает сервис следующим образом: таблица имеет столбцы, которые соответствуют той или иной цветовой полосе, а строки содержат цвета. Для того, чтобы провести расчет, достаточно отметить цвет в соответствующей линии. Рассматриваемый калькулятор позволяет провести расчет сопротивления и допуска, которые измеряются в МОм и процентах соответственно. Достоинством этого онлайн-калькулятора можно назвать наличие не только названия цвета, но и его образца. Данная особенность позволяет быстро провести сравнение для выполнения расчетов. В отличие от других подобных калькуляторов, в этом случае есть наглядная картинка, которая изменяется при выборе определенных цветов. Именно поэтому, он очень прост в использовании, так как наглядный пример позволяет понять то, какой резистор был выбран для проведения расчетов.
  2. http://www.radiant.su/rus/articles/?action=show& >Все расчеты проводятся исключительно при выполнении маркировки согласно принятым правилам ГОСТ 175-72. Чтение линий всегда проводится слева на право. Стоит отметить, что согласно принятым правилам первая полоса всегда располагается ближе к выводу.

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

Универсальная таблица цветов

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

При создании подобной таблицы выделяют следующие поля:

  1. Цвет кольца или нанесенной точки. При этом, указывается как название, так и приводится пример.
  2. В зависимости от того, каким по счету стоит цвет, есть возможность перевести цветовую кодировку в числовое значение. Это необходимо при создании схемы для условного обозначения номиналов.
  3. Множитель позволяет провести математическое вычисление того, какое сопротивление имеет рассматриваемый вариант исполнения.
  4. Также, практически для каждого цвета имеется поле, которое обозначает максимально отклонение от номинала.

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

Примеры

Пример 1:

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

Согласно данным из таблицы, проводим следующую расшифровку:


  1. Коричневый цвет в первом положении обозначает как цифру, так и множитель. В этом случае, цифра будет равна «1», а множитель «10». Стоит отметить, что в первой позиции не могут использоваться следующие цвета: черный, золотистый или белый.
  2. Второй цвет означает номер второй цифры. Черный означает «0» и он не используется при расчетах. Имея подобные данные, можно сделать вывод, что резистор имеет буквенно-числовую маркировку 1К0.
  3. Третий цвет определяет множитель. В нашем случае он красный, множитель у этого цвета «100».
  4. Последний цвет означает максимальный допуск по отклонению, и серебристый цвет соответствует 10%.

Используя таблицу, можно сказать, что рассматриваемый резистор имеет маркировку 1К0 и значение сопротивления 1000 Ом (10*100) или 1 кОм, а также допуск 10%.

Пример 2:

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

При расшифровке отмечаем следующее:

  1. 1 кольцо, красное – число «2».
  2. 2 кольцо, синее – число «6».
  3. 3 кольцо, фиолетовое – число «7».
  4. Все числа выбираем из таблицы. При их сочетании получаем число «267».
  5. 4 кольцо имеет зеленый цвет. В данном случае обращаем внимание не на числовой значение, а множитель. Зеленый цвет соответствует множителю 10 5 . Проводим расчет: 267*10 5 =2,67 МОм.
  6. 5 кольцо имеет коричневый цвет и ему соответствует значение максимального отклонения в обе стороны 1%.
  7. 6 линия коричневая, что соответствует температурному коэффициенту в значении 100 ppm/°C.

Из вышеприведенного примера можно сказать, что провести расшифровку маркировки не сложно, и количество колец практически не оказывает влияние на то, насколько сложными будут расчеты. В рассматриваемом случае, резистор имеет сопротивление 2,67 МОм с отклонением в обе стороны 1% при температурном коэффициенте 100 ppm/°C.

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

Номинальные ряды резисторов можно назвать результатом проведения стандартизации номинальных значений. Постоянные резисторы имеют 6 подобных рядов. Также, введен один ряд для переменных номиналов и специальный ряд Е3.

На примере приведенного номинала проведем расшифровку:

  1. Буква «Е» обозначает то, что проводится маркировка по ряду номинала. Эта бука всегда идет в обозначении.
  2. Цифры после буквы означает число номинальных значений сопротивления в каждом десятичном интервале.

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

Для выявления стандартных рядов, был принят ГОСТ 2825-67. При этом, можно выделить несколько наиболее популярных стандартных рядов:

  1. Ряд Е6 имеет отклонение в обе стороны 20%.
  2. Ряд Е 12 имеет допустимое отклонение 10%.
  3. Ряд Е24 обладает показателем максимально допустимого отклонения в обе стороны 5%.

Последующие ряды Е48 и Е96, Е192 обладают показателем отклонения 2%, 1%, 0,5% соответственно.

Сводная таблица цветной маркировки резисторов

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

  1. Соответствие цветов определенным значениям.
  2. Цифры номинального ряда.
  3. Величина множителя.
  4. Величина допуска.
  5. Показатель коэффициента температурного изменения.
  6. Процент отказов.

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

Особенности маркировки проволочных резисторов

В данном случае, есть только несколько отличительных признаков, которые нужно учитывать:

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

Таблица, которая используется в этом случае, несколько отличается. Отличие заключается в величине множителя.

Нестандартная маркировка импортных резисторов

Несмотря на принятые правила цветной маркировки, некоторые компании используют свои стандарты. К ним можно отнести:

  1. Philips – производитель бытовой и промышленной электроники, который ввел некоторые свои стандарты в область маркировки резисторов. Так можно отметить, что цвета компания использует не только для обозначения основных характеристик, но и для отображения о технологии производства и свойствах компонентов. Для этого сам корпус окрашивается в определенный цвет, а кольца располагаются в определенном порядке друг относительно друга.
  2. CGW и Panasonic также ввели свои правила маркировки. Так эти производители проводят нанесение информации об особых свойствах резистора.


Практически все производители в мире приняли установленные правила, что позволяет упростить процедуру идентификации номиналов.

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

Вычисление каналов

На этой странице

Наложение слоев и каналов

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

Команды-вычисления производят математические операции с соответствующими пикселями двух каналов (пикселями с одинаковым местоположением на изображении), а затем записывает результаты в отдельный канал. Два понятия являются фундаментальными для осознания работы команд-вычислений:

Каждый пиксел в канале обладает значением яркости. Команды «Вычисления» и «Внешний канал» работают с этими значениями, вычисляя итоговые совмещенные пикселы.

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

Наложение каналов при помощи команды «Внешний канал»

Команда «Внешний канал» позволяет накладывать слой и канал одного изображения (источника) на слой и канал активного изображения (места назначения).

Если цветовые режимы двух изображений отличаются (например, одно изображение находится в режиме RGB, а другое — в режиме CMYK), то можно наложить отдельный канал исходного изображения (но не совмещенный) на совмещенный канал конечного слоя.

Дополнительные сведения о параметрах «Сложение» и «Вычитание» см. в разделе Режимы наложения «Сложение» и «Вычитание». Информацию о других параметрах наложения см. в разделе Описание режимов наложения.

Наложение каналов при помощи команды «Вычисления»

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

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

Дополнительные сведения о параметрах «Сложение» и «Вычитание» см. в разделе Режимы наложения «Сложение» и «Вычитание». Информацию о других параметрах наложения см. в разделе Описание режимов наложения.

Режимы наложения «Добавить» и «Вычитание»

Режимы наложения «Добавление» и «Вычитание» доступны только для команд «Внешний канал» и «Вычисления».

Складывает значения пикселов двух каналов. Это хороший способ совмещения непересекающихся изображений из двух каналов.

Так как более высокое значение пикселов означает более светлые цвета, сложение каналов с пересекающимися пикселами будет высветлять изображение. Черные области обоих каналов останутся черными (0 + 0 = 0). Белые области обоих каналов останутся белыми (255 + любое значение = 255 или больше).

Режим «Сложение» делит сумму значений пикселов на величину «Масштаб», а затем прибавляет значение параметра «Сдвиг» к сумме. Например, чтобы найти среднее значение пикселов в двух каналах, сложите их, разделите на 2 и не вводите значения параметра «Сдвиг».

Параметр «Масштаб» может быть любым числом от 1,000 до 2,000. При вводе более высокого значения параметра «Масштаб» изображение становится более темным.

Параметр «Сдвиг» позволяет делать пикселы более яркими или более темными в конечном канале, изменяя значение яркости от +255 до –255. Отрицательные значения затемняют изображение, положительные значения высветляют изображение.

Вычитает значения пикселов конечного канала из соответствующих пикселов исходного канала. Так же как и в режиме «Добавить», результат затем делится на коэффициент «Масштаб», а затем складывается со значением параметра «Сдвиг».

Параметр «Масштаб» может быть любым числом от 1,000 до 2,000. Значение параметра «Сдвиг» позволяет делать пиксели более яркими или более темными в конечном канале, изменяя значение яркости от +255 до –255.

На посты, размещаемые в Twitter™ и Facebook, условия Creative Commons не распространяются.

Image Processing через Apple Metal Framework

High-performance programming for iOS and OSX.

Вычисление доминантного цвета изображения. Нормализация цветового баланса против баланса белого

Меня как-то спросили, страдаю ли я от похмелий.
Для того, чтобы были похмелья, нужно перестать пить.
Так что данная проблема просто не возникает.
(Приписывают Л. Килмистеру)


Попробуйте задать гуглу вопрос вроде: How to calculate the dominant color of an image? Или что-то вроде того же спросите у stackoverflow, для большей релевантности. В случае с гуглом вы получите результат примерно из более чем 30 миллионов поисковых ответов. 30 миллионов! 30, Клара!

В общем я подумал недолго и понял: маловато. Надо бы добавить еще одну строчку. Тем более что вопрос не праздный, а вполне себе имеет практический смысл, в отличие, скажем, от поиска доминантных цветов из предыдущего поста. Решение этой задачи дает возможность проделать несколько простых манипуляций над фотографическим изображением. Например, исказить исходное соотношение цветов, т.е. «ухудшить» его технические характеристики и значит несколько улучшить перцептуальные свойства. А как вы уже заметили, наша теплая компания совершенно помешана на деструктивных способах обработки фотографических изображений, и значит нам условно полезно иметь этот инструмент в собственном исполнении. И целью сегодняшнего упражнения будет видоизменить общий баланс цветов исходной никчемной цифровой картинки до состояния нейтралей, чтобы получить возможность разбавить, в итоге, исходные цвета до приемлемо гармоничных. А для этого нам в первую очередь понадобится вычислить этот самый доминантный цвет.

Баланс белого

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

На самом деле под балансом белого эта безумная секта правильного цвета скинтонов категория пользователей всегда понимает то, что под ним понимается на самом деле: первичную цветокоррекцию цифрового изображения. Т.е. какую-то функцию приводящую соответствие цветовой гаммы изображения объекта к цветовой гамме объекта съёмки. Более того, под такой функцией чаще понимается вовсе не приведение белого цвета к условному белому, а на самом деле подразумевается «усреднение» цветов или приведение среднего цвета изображения к «средне-серому».

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

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

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

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

Нормализация цветовой гаммы изображения и ББ

И так мы определились, что на самом деле, вместо того, чтобы просто произвести коррекцию баланса белого, нам нужно каким-то образом скорректировать цветовой баланс изображения для последующей обработки автоматизированными фильтрами или даже простыми фильтрами использующими LUT. Назовем для себя это первичной нормализацией гаммы исходного изображения. Но по привычке будем иметь в виду аббревиатуру ББ (баланс белого) или WB (white balance) или в автоматическом смысле: АББ или AWB, чтобы не писать долгие никому не известные слова в коде конкретных приложений.

Далее мы разберем способ автоматизации коррекции ББ прекрасно разобранный в посте Андрея Журавлева. Он может быть просто реализован обычным экшеном в программе Adobe Photoshop. Мы же разберемся как все это, и немножко более, реализовать в виде Metal-ического image-фильтра.

В общих словах мы должны выполнить два простых действия:

  • найти доминантный цвет изображения
  • применить фильтр коррекции ББ (или в наших терминах нормализацию цветового баланса)
  • инвертировать доминантный цвет
  • привести яркость инвертированного цвета к среднему значению в каждом канале сложением каналов в режиме смешивания яркостей
  • компенсировать избыточный синий подмешав «серый» со смещением в «желтый»
  • смешать с перекрытием исходное изображения с полученным композитным сигналом

Поиск доминантного цвета изображения

Казалось бы ничего сложного реализовать такой поиск нет: взяли все сложили в одну кучу да и поделили. Но как всегда есть нюансы и связаны они, в первую очередь с тем, что поиск среднего придется вести с учетом анализа всей площади изображения, т.е. по факту будет нужно пробежаться по всему массиву NxM RGB триплетов исходной картинки. Сложить суммы R/G/B в какой-то аккумулятор и потом нормализовать до разрядности представления RGB. Все это абсолютно тривиально воспроизводится в терминах линейных алгоритмов на CPU. Но долго. А нам то хочется все делать быстро да еще и в режиме live-view. В общем использовать всю мощь GPU и Metal. Рассмотрим какие есть варианты.

Первое, что приходит на ум, это последовательное сжатие текстуры изображения до точки через интерполяцию средним. Не требует танцев с бубнами вокруг скаттеринга и атомарными операциями. Но все же требует приличного количества операций с чтением и записью текстуры, а так же дополнительным выделением памяти для ping-pong фаз обмена данными вычисляемых текстур на каждом цикле усреднения. Такой подход используется, к примеру, в реализации поиска среднего в Core Image и GPUImage.

Второе, тоже очевидное решение, использовать данные гистограммы, возможно уже нами даже посчитанной для других целей анализа исходного изображения. С точки зрения затрат на вычисления такой подход, очевидно будет более экономичным, поскольку не требует активного обмена с памятью и выделение памяти под промежуточные текстуры. Сложность алгоритма расчета самой гистограммы, как было показано, не превышает O(n*m) плюс накладные расходы на сборку частичных гистограмм средствами DSP.

Суть расчета среднего по гистограмме изображения можно записать так:

— среднее значение яркости канала ,

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

Вот второй вариант возьмем за основу, а в качестве обертки над вычислениями возьмем IMProcessing Framework. В результате получим триплет из значений для каждого из каналов RGB. С точки зрения анализа исходного изображения нам нужно будет получить его гистограмму в объекте класса IMPhistogram, и подключить к нему солвер вычисляющий среднее (в уме помним доминантное…):

Этот кусок кода ничего не говорит нам о том, как правильно посчитать среднее, просто показывает, что в фреймворке IMProcessing вся эта рутинная работа сделана и осталось только воспользоваться результатами. Но тем неменее, лучше разобрать подробно суть его работы. А код можно расшифровать как получение на «вход» анализатора IMPHistogramAnalyzer провайдера текстуры, который из себя представляет специальный немодифицирующий фильтр изображения, представляющий на выходе его гистограмму в виде объекта: IMPHistogram и запускающий объекты-солверы, дополнительно решающие, что с гистограммой делать, например, замерить средний цвет:

Тогда при обновлении «замеров» гистограммы мы можем сдвинуть доминантный цвет фильтра ББ:

К ядру фильтра коррекции ББ мы вернемся чуть позже, а пока сосредоточимся на разборе кода поканального вычисления среднего. Как видно самый тормозящий момент, в этом подходе, это необходимость бегать по гистограмме в каждом канале на уровне CPU и пытаться быть при этом быстрым и экономичным. Т.е. задача в принципе понятна, для вычисления среднего в канале гистограммы, нам нужно:

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

В итоге мы получаем сложность O(n), где n — ширина гистограммы канала, что само по себе немного для 24bit RGB или размера в 256 на канал, но, все же, сэкономим и воспользуемся готовым набором оберток к «хардверным ускорителям», предоставленных нам Apple в виде Accelerate Framework. Всегда хорошо экономить на вычислениях даже по мелочам, согласитесь. В IMPHistogram, поиск среднего реализован так:


Фильтр баланса белого по доминантному цвету

Сконструируем вторую часть автоматической фильтрации ББ по доминанте изображения:

И зададим ядро фильтрации на Metal, т.е. фактически реализуем экшен фотошопа из поста Андрея в виде kernel-функции GPGPU:

Дополнительный анализ цветов и коррекция по специфическим весам цветов палитры

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

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

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

Под синтетическими весами палитры изображения будем понимать набор средне-арифметических значений всех пикселов изображения принадлежащих каждой сексте из тонального круга: Reds/Yellows/Greens/Cyans/Blues/Magentas.

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

Ядро подсчета весов будет базироваться на коде расчета гистограммы IMPHistogramAnalyzer: IMPColorWeightsAnalyzer и будет использовать тот же класс для конструирования анализатора, но с новой kernel-функцией и солвером подсчета весов учитывающего новую структуру данных буфера обмена:

В терминах IMProcessing Framework расширение анализа в виде кода будет выглядеть так:

Полностью проект можно забрать, собрать и опробовать из репозитория проекта ImageMetalling: ImageMetalling-09. Для правильной сборки локально должна быть установлена мега-библиотека для работы с файлами формата JPEG (JFIF) libjpeg-turbo. На сегодняшний день это лучшая реализация поддержки этого формата.

Примеры работы фильтра автоматической нормализации цветового баланса (АББ) на различных сюжетах

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

Много желтого паразитного оттенка. Убираем. Нейтрализем основной цвет. Профиль LUT Kodachrome 64. Снижаем ББ. Профиль Kodachrome 64 Нормализация оттенков в зеленом чуть снижена.

Выводы

Ну работает же! Хоть и просто все как кирзовый сапог.

(C++) (Visual Studio) Изменение RGB в оттенки серого

Я обращаюсь к изображению так:

и попытка изменить изображение rgb на серое:

наконец, вот как я пытаюсь нарисовать изображение:

оригинальное изображение: и получившееся изображение, которое я получаю, это:

Сначала проверьте, имеет ли тип изображения 24 бита на пиксель. Во-вторых, выделите память для pImgGS;

Пожалуйста, обратитесь к этой статье, чтобы узнать, как сохраняются данные bmp. Изображения bmp сохраняются с ног на голову. Кроме того, первым 54 байтом информации является BITMAPFILEHEADER. Следовательно, вы должны получить доступ к следующим значениям,

Если есть дополнение, то сначала определите дополнение и доступ по-разному. См. Это, чтобы понять шаг и отступы.

При рисовании изображения, так как pImg равно 24bpp, вам нужно скопировать серые значения три раза на каждый канал R, G, B. Если вы в конечном итоге хотите сохранить изображение в градациях серого в формате bmp, то вам снова придется переписывать данные bmp вверх или вы можете просто пропустить этот шаг при преобразовании в серый:

ТЛ; др:

Сделайте один общий путь. Преобразуйте все в 32 бита в определенном порядке и не используйте размеры или координаты изображения. Преобразуйте преобразование YCbCr (= вычисление серого значения) в отдельную функцию, это легче читать и работает с точно такой же скоростью.

Длительный материал

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

Далее, 24-битные растровые изображения являются обычными файлами, но они довольно необычны для представления в памяти, потому что формат является неприятным для доступа и непригодным для аппаратного обеспечения. Для рисования такого растрового изображения потребуется много работы от драйвера или графического оборудования (он будет работать, но он не будет работать хорошо). Поэтому 32-битная глубина обычно намного лучше, быстрее и удобнее. Это гораздо более «естественный» доступ к программным средствам.
Вы можете тривиально конвертировать 24-битные в 32-битные. Итерируйте по полным битовым данным и выпишите полное 32-битное слово для каждого 3 байтового набора. Растровые изображения Windows игнорируют канал A (старший байт), поэтому просто оставьте нулевое значение или что угодно.

Кроме того, нет такой вещи, как 8-битное растровое изображение в оттенках серого. Этого просто не существует. Хотя существуют растровые изображения, которые выглядят как растровые изображения с оттенками серого, они в действительности подпадают 8-битные растровые изображения, где (случайно) bmiColors содержит все значения оттенков серого.


Поэтому, если вы не можете гарантировать, что вы будете обрабатывать только созданные вами изображения, вы не можете просто полагаться на это, например, значения 5 и 73 соответствуют значениям яркости 5/255 и 73/255, соответственно. Это может быть так, но это, как правило, неверное предположение.
Чтобы быть в безопасности, насколько это правильно, вы должны преобразовать ваши растровые изображения с 8-битовым оттенком в реальные цвета, просмотрев индексы (значения растрового серого — действительно индексы) в палитре. В противном случае вы можете загружать изображение в шкале серого, где палитра находится наоборот (так что 5 означает 250 и 250 означает 5) или растровое изображение, которое вообще не имеет оттенков серого.

Итак. вы хотите конвертировать 24-битные, и вы хотите конвертировать 8-битные растровые изображения, как на 32-битную глубину. Это означает, что вы делаете все, что раздражает что-то, когда-то в начале, а остальное — один одинаковый общий путь. Это хорошо.
То, что вы будете показывать на экране, всегда представляет собой 32-битную растровую карту, где верхний байт игнорируется, а нижние три имеют одинаковое значение, что приводит к тому, что выглядит как оттенок серого. Это просто и просто хорошо.

Обратите внимание, что если вы выполняете преобразование YCbCr в стиле BT.601 (как указано вашим использованием констант 0.299, 0.587 и 0.144), и если ваши 8-битные изображения в оттенках серого являются проницательными (это то, что вы должны знать, нет способ сообщения из файла!), то для 100% -ной корректности вам необходимо обратное преобразование при преобразовании из палитры 8-бит в RGB. В противном случае ваш конечный результат будет выглядеть почти правильно, но не совсем. Если ваши 8-битные greycales являются линейными, т.е. Были созданы без использования вышеуказанных констант (опять же, вы должны знать, вы не можете сказать по изображению), вам нужно скопировать все как есть (здесь выполнение преобразования заставило бы его выглядеть почти, но не совсем правильно).

Что касается преобразования RGB-to-greyscale, вам не требуется дополнительное растровое изображение в оттенках серого, чтобы удерживать значения, которые вам больше никогда не понадобятся. Вы можете прочитать три значения цвета из загруженного растрового изображения, вычислить Y и напрямую построить 32-битное слово ARGB, которое затем выписываете в окончательное растровое изображение. Это экономит одно совершенно бесполезное путешествие туда и обратно, что не обязательно.

Что-то вроде этого:

Кроме того, вы также можете выполнить преобразование from-whatever-to-32, а затем выполнить преобразование в оттенки серого на месте. Это, в свою очередь, вводит дополнительную обратную связь в память, но код становится намного проще.

Вычисление определителя методом сведения к треугольному виду.

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

Хотя разницы и нет, обычно приводят к первому случаю, когда нули расположены под главной диагональю. После преобразований определитель вычисляется простым умножением элементов, расположенных на главной диагонали. Для того, чтобы обнулить требуемые элементы и вычислить определитель, нам пригодятся несколько свойств определителей, которые указаны в теме «Некоторые свойства определителей». Я запишу ниже несколько свойств, которые нам пригодятся при решении. В примечании после каждого свойства будет указан пример его применения.

    Если поменять местами две строки (столбца) определителя, то знак определителя изменится на противоположный.

Пример применения этого свойства: показать\скрыть

Рассмотрим определитель $\left| \begin 2 & 5 \\ 9 & 4 \end \right|$. Найдём его значение, используя формулу №1 из темы вычисления определителей второго и третьего порядков:

$$\left| \begin 2 & 5 \\ 9 & 4 \end \right|=2\cdot 4-5\cdot 9=-37.$$

Теперь поменяем местами первую и вторую строки. Получим определитель $\left| \begin 9 & 4 \\ 2 & 5 \end \right|$. Вычислим полученный определитель: $\left| \begin 9 & 4 \\ 2 & 5 \end \right|=9\cdot 5-4\cdot 2=37$. Итак, значение исходного определителя равнялось (-37), а у определителя с изменённым порядком строк значение равно $-(-37)=37$. Знак определителя изменился на противоположный.

Пример применения этого свойства: показать\скрыть

Рассмотрим определитель $\left| \begin -7 & 10 & 0\\ -9 & 21 & 4 \\ 2 & -3 & 1 \end \right|$. Прибавим к элементам второй строки соответствующие элементы третьей строки, умноженные на 5. Записывают это действие так: $r_2+5\cdot$. Вторая строка будет изменена, остальные строки останутся без изменений.

$$ \left| \begin -7 & 10 & 0\\ -9 & 21 & 4 \\ 2 & -3 & 1 \end \right| \begin \phantom<0>\\ r_2+5\cdot\\ \phantom <0>\end= \left| \begin -7 & 10 & 0\\ -9+5\cdot 2 & 21+5\cdot (-3) & 4+5\cdot 1 \\ 2 & -3 & 1 \end \right|= \left| \begin -7 & 10 & 0\\ 1 & 6 & 9 \\ 2 & -3 & 1 \end \right|. $$

Пример применения этого свойства: показать\скрыть

Рассмотрим определитель $\left| \begin -7 & 10 \\ -9 & 21 \end \right|$. Заметьте, что все элементы второй строки делятся на 3:

$$\left| \begin -7 & 10 \\ -9 & 21 \end \right|=\left| \begin -7 & 10 \\ 3\cdot(-3) & 3\cdot 7 \end \right|$$

Число 3 и есть общий множитель всех элементов второй строки. Вынесем тройку за знак определителя:

$$ \left| \begin -7 & 10 \\ -9 & 21 \end \right|=\left| \begin -7 & 10 \\ 3\cdot(-3) & 3\cdot 7 \end \right|= 3\cdot \left| \begin -7 & 10 \\ -3 & 7 \end \right| $$

Пример применения этого свойства: показать\скрыть

Буквами $r$ (от слова «row») станем обозначать строки: $r_1$ – первая строка, $r_2$ – вторая строка и так далее. Буквами $c$ (от слова «column») станем обозначать столбцы: $c_1$ – первый столбец, $c_2$ – второй столбец и так далее.

Найти определитель $\Delta = \left|\begin -8 & 2 & 9 & 17\\ -3 & 1 & 2 & 6\\ 13 & -3 & -7 & -26\\ 11 & 1 & 23 & 6\end\right|$.

В принципе, начинать решение можно и не преобразовывая определитель. Однако очень удобно, когда первым элементом первой строки является единица (ну, или (-1) на крайний случай). Единицы есть во втором столбце нашего определителя. Сделаем так, чтобы второй столбец стал первым. Для этого просто поменяем местами первый и второй столбцы, используя свойство (1). Не забываем, что при смене мест двух столбцов перед определителем появится знак «минус»:

$$\Delta = \left|\begin -8 & 2 & 9 & 17\\ -3 & 1 & 2 & 6\\ 13 & -3 & -7 & -26\\ 11 & 1 & 23 & 6\end\right|=-\left|\begin 2 & -8 & 9 & 17\\ 1 & -3 & 2 & 6\\ -3 & 13 & -7 & -26\\ 1 & 11 & 23 & 6\end\right|.$$

Итак, столбцы поменяли, однако единица покамест не вышла на первое место в первой строке, – но это дело поправимое. Поменяем местами первую и вторую строки, при этом перед определителем вновь возникнет знак «минус». Ну, а так как «минус» на «минус» даёт «плюс», то получим мы следующее:

$$\Delta =-\left|\begin 2 & -8 & 9 & 17\\ 1 & -3 & 2 & 6\\ -3 & 13 & -7 & -26\\ 1 & 11 & 23 & 6\end\right|=-\left( -\left|\begin 1 & -3 & 2 & 6\\ 2 & -8 & 9 & 17\\ -3 & 13 & -7 & -26\\ 1 & 11 & 23 & 6\end\right|\right)= \left|\begin 1 & -3 & 2 & 6\\ 2 & -8 & 9 & 17\\ -3 & 13 & -7 & -26\\ 1 & 11 & 23 & 6\end\right|.$$

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

$$ \left|\begin \boldred <1>& -3 & 2 & 6\\ \normgreen <2>& -8 & 9 & 17\\ \normblue <-3>& 13 & -7 & -26\\ \normpurple <1>& 11 & 23 & 6\end\right| $$


Преобразования со строками, которые нужно выполнить, чтобы обнулить «серые» элементы, получаются так:

Запись $r_2-2r_1$ означает, что от элементов второй строки вычли соответствующие элементы первой строки, умноженные на два. Полученный результат записали вместо прежней второй строки. Остальные записи расшифровываются аналогично. Согласно свойству (2) значение определителя от таких действий не изменится. Для наглядности я запишу это действие отдельно:

После выполнения всех требуемых операций со строками, мы получим новый определитель. Записывается это так:

$$ \Delta=\left|\begin 1 & -3 & 2 & 6\\ 2 & -8 & 9 & 17\\ -3 & 13 & -7 & -26\\ 1 & 11 & 23 & 6\end\right| \begin \phantom <0>\\ r_2-2r_1 \\ r_3+3r_1 \\ r_4-r_1 \end= \left|\begin 1 & -3 & 2 & 6\\ 0 & -2 & 5 & 5\\ 0 & 4 & -1 & -8 \\ 0 & 14 & 21 & 0\end\right|. $$

Перед тем, как мы пойдём дальше, обратим внимание на то, что все элементы четвёртой строки делятся на 7. Согласно свойству (3) число 7 можно вынести за знак определителя:

$$ \left|\begin 1 & -3 & 2 & 6\\ 0 & -2 & 5 & 5\\ 0 & 4 & -1 & -8 \\ 0 & 14 & 21 & 0\end\right|=7\cdot \left|\begin 1 & -3 & 2 & 6\\ 0 & -2 & 5 & 5\\ 0 & 4 & -1 & -8 \\ 0 & 2 & 3 & 0\end\right| $$

Теперь нам нужно обнулить элементы во втором столбце (под главной диагональю). Т.е., обнулению подлежат элементы, выделенные зелёным и синим цветом. Элемент на главной диагонали, который останется без изменений, выделен красным цветом:

$$ \left|\begin 1 & -3 & 2 & 6\\ 0 & \boldred <-2>& 5 & 5\\ 0 & \normblue <4>& -1 & -8 \\ 0 & \normblue <2>& 3 & 0\end\right| $$

А если бы вместо числа -2 возник ноль? показать\скрыть

Если бы вместо числа -2 получился ноль, мы бы поменяли местами строки или столбцы. Например, вот так:

$$ \left|\begin 1 & -3 & 2 & 6\\ 0 & 0 & 5 & 5\\ 0 & 4 & -1 & -8 \\ 0 & 2 & 3 & 0\end\right| =[r_2\leftrightarrow] =-\left|\begin 1 & -3 & 2 & 6\\ 0 & 2 & 3 & 0\\ 0 & 4 & -1 & -8 \\ 0 & 0 & 5 & 5 \end\right| $$

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

$$ \left|\begin 1 & -3 & 2 & 6\\ 0 & 0 & 5 & 5\\ 0 & 0 & -1 & -8 \\ 0 & 0 & 3 & 0\end\right| $$

В этом случае имеем пропорциональность столбцов, т.е. $c_2=-3c_1$, а это означает, что определитель равен 0.

В принципе, мы можем получить (-1) на месте диагонального «красного элемента». Для этого достаточно поменять местами второй и третий столбцы, а затем поменять местами вторую и третью строки. Однако в нашем случае этого можно и не делать, так как все «синие элементы» нацело делятся на «красный элемент», т.е. на (-2). Следовательно, никакой работы с дробями не предвидится. Впрочем, тут дело вкуса: можете попробовать для тренировки продолжить решение, поменяв местами строки и столбцы, чтобы «красным элементом» стала (-1). Выполним такие операции со строками:

Отдельно выписывать действия со строками не станем, так как они полностью аналогичны рассмотренным ранее. Наш определитель станет таким:

$$ \Delta=7\cdot \left|\begin 1 & -3 & 2 & 6\\ 0 & -2 & 5 & 5\\ 0 & 4 & -1 & -8 \\ 0 & 2 & 3 & 0\end\right| \begin \phantom <0>\\ \phantom <0>\\ r_3+2r_2 \\ r_4+r_2\end= 7\cdot \left|\begin 1 & -3 & 2 & 6\\ 0 & -2 & 5 & 5\\ 0 & 0 & 9 & 2 \\ 0 & 0 & 8 & 5\end\right|. $$

Осталось последнее действие. Нужно обнулить элемент 8 под главной диагональю:

$$ \left|\begin 1 & -3 & 2 & 6\\ 0 & -2 & 5 & 5\\ 0 & 0 & 9 & 2 \\ 0 & 0 & \boldred <8>& 5\end\right| $$

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

$$ \Delta = 7\cdot \left|\begin 1 & -3 & 2 & 6\\ 0 & -2 & 5 & 5\\ 0 & 0 & 9 & 2 \\ 0 & 0 & 8 & 5\end\right| \begin \phantom <0>\\ \phantom <0>\\ \phantom <0>\\ r_4-\frac<8><9>r_3 \end= 7\cdot \left|\begin 1 & -3 & 2 & 6\\ 0 & -2 & 5 & 5\\ 0 & 0 & 9 & 2 \\ 0 & 0 & 0 & \frac<29><9>\end\right|. $$

Преобразования окончены. Осталось лишь использовать свойство (4) и переменожить элементы, расположенные на главной диагонали:

$$ \Delta=7\cdot 1\cdot (-2)\cdot 9 \cdot \frac<29><9>=-406. $$

Ответ получен. Полное решение без пояснений выглядит так:

$$ \Delta = \left|\begin -8 & 2 & 9 & 17\\ -3 & 1 & 2 & 6\\ 13 & -3 & -7 & -26\\ 11 & 1 & 23 & 6\end\right| =[c_1\leftrightarrow] =\left|\begin 2 & -8 & 9 & 17\\ 1 & -3 & 2 & 6\\ -3 & 13 & -7 & -26\\ 1 & 11 & 23 & 6\end\right| =[r_1\leftrightarrow]=\\ =\left|\begin 1 & -3 & 2 & 6\\ 2 & -8 & 9 & 17\\ -3 & 13 & -7 & -26\\ 1 & 11 & 23 & 6\end\right| \begin \phantom <0>\\ r_2-2r_1 \\ r_3+3r_1 \\ r_4-r_1 \end= 7\cdot \left|\begin 1 & -3 & 2 & 6\\ 0 & -2 & 5 & 5\\ 0 & 4 & -1 & -8 \\ 0 & 2 & 3 & 0\end\right| \begin \phantom <0>\\ \phantom <0>\\ r_3+2r_2 \\ r_4+r_2 \end=\\ =7\cdot \left|\begin 1 & -3 & 2 & 6\\ 0 & -2 & 5 & 5\\ 0 & 0 & 9 & 2 \\ 0 & 0 & 8 & 5\end\right| \begin \phantom <0>\\ \phantom <0>\\ \phantom <0>\\ r_4-\frac<8><9>r_3\end =7\cdot \left|\begin 1 & -3 & 2 & 6\\ 0 & -2 & 5 & 5\\ 0 & 0 & 9 & 2 \\ 0 & 0 & 0 & \frac<29><9>\end\right| =7\cdot 1\cdot (-2)\cdot 9 \cdot \frac<29><9>=-406. $$

В принципе, преобразования метода сведения к треугольному виду просты, однако стоит иметь в виду свойства определителей, изложенные соответствующей теме. Например, на каком-то шаге может обнулиться строка или столбец, или же окажется, что некие строки или столбцы пропорциональны. Это будет означать, что рассматриваемый определитель равен 0.

Каналы изображения — знакомимся ближе

Слои на данный момент являются самым мощным инструментом для работы с фотографическим изображением. Когда вы редактируете фотографию, будь то в Photoshop или Paint Shop Pro, без множества слоев изображения не обойтись. Иногда используются и более сложные слои — настраиваемые, эффекты и маски, основанные на слоях. Слои везде. И невольно возникает вопрос -как пользователи обходились без них раньше.

Ответ прост — с помощью каналов. Вы легко отличите ветерана Photoshop по тому, что он использует палитру каналов также часто, как и палитру слоев. Но это не стоит расценивать как старомодность. Скорее это свидетельство профессионализма, поскольку использование каналов открывает широкие возможности.

Итак, что такое «канал». Стандартное определение — «двухмерный массив информации, обычно 8-разрядной» — вряд ли прояснит ситуацию. Поэтому давайте лучше рассмотрим два основных типа каналов — цветовой информации и альфа-канал — с точки зрения их практического применения.

Цветовые каналы

Простейший способ увидеть цветовые каналы в действии — воспользоваться панелью каналов Photoshop. Откройте обычное 24-разрядное фотографическое изображение в RGB. На палитре каналов вы увидите 4 слоя, каждый со своей иконкой: RGB, Red (красный), Green (зеленый) и Blue (голубой). Если кликнуть на RGB, вы увидите то изображение, которое обычно и видите — композитное и полноцветное. Для каждого из остальных каналов отображается его полутоновая версия. Сочетания клавиш Ctrl+1, 2, 3 позволяют просмотреть каждый из цветовых каналов в отдельности, а Ctrl+


— обычное композитное изображение.

Полный спектр RGB-цветов создается из каналов красного, зеленого и голубого цветов, где они представлены в шкале оттенков серого.

Чтобы понять, какая информация отображена в палитре слоев, стоит понаблюдать за каналами при работе с тестовым изображением радужного градиента (проще говоря, изображением всех цветов радуги). На изображении в шкале серого, которое представляет канал, каждый из пикселей может отображать одно из 256 значений. Вы увидите, что красная часть радуги при просмотре в красном канале будет белой. Желтая полоска радуги будет белой в красном и зеленом каналах, но будет черной, т.е. отсутствовать, в голубом. Собственно, изображение радуги показывает, что полный спектр из 16 миллионов цветов можно получить сочетанием значений от 0 до 255 для красного, зеленого и голубого цветов (256 x 256 x 256). В нашем изображении желтой полоске соответствуют большие значения красного и зеленого каналов и 0 — голубого канала. Photoshop работает с изображением не по отдельным пикселям, а по каналам. При этом три восьмиразрядных слоя — красный, зеленый, голубой — накладываются, и мы получаем окончательное изображение.

Конечно, не все изображения создаются в RGB, но это не проблема, поскольку каналы очень легко настраивать для разных нужд. Мы можем преобразовать наше изображение в другой режим с помощью команды Изображение > Режим (Image > Mode). Для Bitmap и оттенков серого есть только один канал, в котором представлены 256 значений от черного до белого. В режиме Lab три канала: А (значение цвета между зеленым и красным), В (между голубым и желтым) и L (значение яркости). Разделение цвета и его яркости может быть очень полезно. Выберите канал яркости и конвертируйте его в полутоновое изображение. Результат получится намного лучше, чем если бы вы преобразовывали отсканированное RGB-изображение.

Цветовая модель Lab может оказаться очень полезной. Но все же самой важной, после RGB, является CMYK. Эта модель ориентирована на печать. Конвертируйте изображение радуги в CMYK. Первое, что бросается в глаза — резкое изменение некоторых цветов. Дело в том, что в CMYK не поддерживаются многие чистые RGB-цвета. Второе отличие — появилось четыре цветовых канала: Cyan, Magenta, Yellow, Black (бирюзовый, пурпурный, желтый, черный). Посмотрите на желтую полоску радуги в желтом канале — вы увидите, что она представлена черным цветом.

В палитре CMYK каналы отображают цвета чернил при многослойной четырехцветной печати.

В этом режиме есть существенные отличия от RGB, поскольку Photoshop приходится работать с цветами чернил, которые сочетаются друг с другом по принципу вычитания (при наложении всех цветов получается черный). В RGB же, наоборот, применен принцип добавления, и наложение всех цветов даст белый. Но, по большому счету, все цветовые модели схожи между собой. И Photoshop может воссоздать полную гамму любой из них при помощи не более четырех восьмиразрядных каналов, каждый из которых имеет не более 256 значений (или 65536 значений, если вы очень захотите, и в меню Изображение > Режим выберете 16-разрядный канал).

Каналы — основной инструмент работы с цветом, и поэтому стоит поглядывать иногда на панель каналов, чтобы узнать, как Photoshop создает различные цвета. Особенно это касается работы с моделью CMYK, которая разработана для печати. При работе с RGB то, что вы видите на мониторе далеко не всегда соответствует тому, что выйдет при печати. Хотя значения каждого из каналов это отображают. Более того, если вы хотите тиражировать изображение, вам нужно учесть такие факторы, как расплывание точек и замена серого компонента. А это значит, что точность в работе с цветовыми каналами очень важна, поскольку от нее в дальнейшем зависит цветоделение.

Каналы полезны не только при печати в CMYK. Вы найдете им применение и в RGB. Скажем, вы можете редактировать не все изображение, а отдельный канал. При корректировке цвета стоит просматривать отдельные каналы, чтобы выявить дефекты отсканированного изображения. Например, если вы обнаружили размытую или смещенную область в канале красного, вы можете устранить этот недостаток с помощью фильтра резкости или настройки уровней.

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

Функция объединения каналов предоставляет широкие возможности. Например, с помощью команды «Наложить изображение» (Apply Image) можно наложить информацию из любого канала другого изображения таких же размеров на RGB-канал нашего изображения и настроить данный эффект, изменяя непрозрачность и режим смешивания цветов. Команда «Вычисление» (Calculation) позволяет выбрать два слоя и создать новый слой, выделение или документ. Если воспользоваться режимом смешивания цветов «вычитание», то будут выделены области изображения, которые изменились по сравнению с оригиналом.

С появлением в Photoshop 5 команды «миксер каналов» (Channel Mixer) и настраиваемых слоев расширились возможности объединения каналов. Функция миксера каналов используется только для отдельных изображений и позволяет настраивать каждый канал, добавляя информацию из других каналов. С ее помощью можно создавать спецэффекты, менять каналы местами, исправлять дефекты цвета на отсканированных изображениях. Также она идеально подходит для создания «подкрашенных» и качественных полутоновых изображений (при этом вы сможете контролировать преобразование каждого из цветовых каналов в шкалу оттенков серого).

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

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

Альфа-каналы

Создав выделение, вы наверняка захотите его сохранить. Сделать это можно в альфа-канале. Для этого нужно воспользоваться командой «Выделение > сохранить выделение» (Selection > Save Selection) или иконкой «Сохранить выделение как канал» (Save Selection as Channel) на панели каналов. После этого появляется новый канал, в котором выделенные пиксели отображены белым цветом, невыделенные — черным, а размытые пиксели на границе выделения — оттенками серого.

Дважды кликнув на иконке канала, вы можете переименовать его и установить цвет, которым он будет отображаться на составном изображении. С альфа-каналом можно работать, как и с любым другим, например, настраивать уровни или применять фильтры. Более того, вы можете редактировать этот канал с помощью кисти — например, зарисовывать дефекты. Когда результат вас устроит, воспользуйтесь им. Для этого преобразуйте альфа-канал в выделение с помощью команды «Выделение > загрузить выделение» (Selection>Load Selection), иконки «Загрузить канал как выделение» (Load Channel as Selection) на панели каналов или просто кликнув на иконку канала, удерживая Ctrl. Если у вас несколько альфа-каналов, можно создавать более сложные выделения. Например, вы выделили и преобразовали в альфа-каналы изображение человека и кусты на фоне. Вы можете выделить только кусты, если выберете их и загрузите канал как выделение, воспользовавшись опцией «вычитание». Клавиатурные сокращения ускорят эту процедуру: кликните на иконке, удерживая Shift+Ctrl, — это добавит новую область к выделению, Alt+Ctrl+клик — вычтет из выделения, Alt+Shift+Ctrl+клик — даст пересечение двух выделений.

Альфа-каналы можно сохранять и загружать как выделения.

После того, как вы преобразовали альфа-канал в выделение, оно сразу появится на экране и вы сможете трансформировать его, скопировать в новый слой или отредактировать каким-либо образом. Мерцающая пунктирная линия по краю выделения не очень точно обозначает его границы — нужно учитывать это. Она отображает только пиксели альфа-канала, в которых интенсивность серого ниже 50%. Для большинства выделений это вносит небольшие практические различия. Но преимущество альфа-канала в том, что он позволяет работать с 256 уровнями и создавать таким образом сложные изменяемые маски прозрачности.

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

Альфа-канал может быть использован как изменяемая маска непрозрачности.

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

Основа у вас есть, теперь экспериментируйте — вы можете создавать множество эффектов с помощью теней, выдавливания, виньеток и т.д. Наверняка, если вы займетесь этим серьезно, вам пригодится возможность сохранять альфа-каналы с вашим файлом. Но возможности Photoshop в этом плане на удивление невелики — программа поддерживает сохранение альфа-канала в tiff-файле или в самом Photoshop (но количество каналов в файле, включая цветовые, ограничено до 24). Это не создаст проблем, если вы работаете только в Photoshop. Но наличие альфа-канала может значительно повлиять на экспорт файла в один из стандартных форматов. Например, при сохранении для Веб в появившемся диалоговом окне можно использовать альфа-канал как маску для настройки качества и, соответственно, размера jpg- и gif-файлов. При помощи альфа-канала можно привлечь внимание к определенной части изображения, которая будет наиболее качественной. Качество остальных областей изображения ухудшится, но за счет этого значительно уменьшится общий размер файла. Также альфа-каналы пригодятся при работе с прозрачностью. Создайте альфа-канал, покрывающий область, которая не должна быть видна в веб-версии, и кликните, удерживая Ctrl, чтобы выделить эту область. Теперь вызовите Мастер экспорта прозрачных изображений и выберите gif. Выделенный участок станет прозрачным в конечном файле, а вам удастся избежать внесения необратимых изменений в оригинал. Мастер позволяет экспортировать изображение в png-файл, поддерживающий 24-разрядный цвет и 8-разрядную прозрачность. Если вы создадите альфа-канал с радиальным градиентом, то получите виньетку. К сожалению, немногие программы поддерживают 32-разрядные png-файлы с прозрачностью. Исключение составляет только, пожалуй, Director 8.5.

Благодаря возможности добавлять цветовые заливки (spot colours) в CMYK, альфа-каналы пригодятся также и при высококачественной печати. Выделите участок изображения, который вы хотите отпечатать как цветовую заливку, а затем воспользуйтесь командой «новый матовый канал» (New Spot colour) из меню панели каналов. Когда будете задавать цвет, нажмите «Custom» (заказной) и выберите цвет, например из библиотеки Pantone.

Учтите, что добавление цветовой заливки не такой простой процесс, как кажется. Изображение на экране, как вы знаете, не всегда соответствует тому, что выводится на печать. Цвета чернил часто невозможно отобразить в RGB и Photoshop просто показывает, как, по его мнению, должно выглядеть изображение при послойной печати. Если вы сохраните свой файл в формате DCS 2.0 и загрузите композитное eps-изображение в профессиональной издательской программе, то сможете произвести цветоделение для четырех основных цветов и файлов заказных цветов, которые вы создали.

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

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

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

Photoshop, как впрочем и любой другой фоторедактор, создает изображение на экране, обрабатывая значения из каналов цвета и прозрачности слоя. И так, поочередно, все слои от фона до переднего плана. Конечно, на самом деле работа с изображением намного сложнее — программа просчитывает режимы смешивания цветов, непрозрачность, настройки и т.д. Но в основе лежит пошаговый математический процесс. Программа не видит изображение, она работает с массивом данных каждого канала. Любой фоторедактор «мыслит» категориями каналов. Это привычка, которую стоит перенять профессиональному пользователю.

Перевод в оттенки серого инструментом «Вычисление»

Это одна из проблем, относящихся к группе «а почему шрифт выглядит не так, как на макете?». Используя letter-spacing и приведенные формулы расчета, можно добиться очень близкого сходства со шрифтом на макете. Хорошая новость: все современные браузеры поддерживают letter-spacing. Плохая новость: все обрабатывают шрифты, и letter-spacing в частности, по-своему. Поэтому полного соответствия с макетом по-прежнему ждать не приходится.

Ну и мой обычный совет: изменяйте межбуквенный интервал осторожно. Буквы — не гармонь, которую обязательно надо тянуть для извлечения звуков. Помните, что шрифты делались знающими людьми по своим правилам. Не ломайте их без лишней необходимости.

Мастер Йода рекомендует:  Реалистичный огонь CSS
Добавить комментарий