Что такое яркость пикселя
А уж тот, кто плотно работал с графикой, знает эти цифры буквально наизусть — как в былые времена эникейщики запоминали серийники Windows. Иногда коэффициенты округляют до второго знака, иногда уточняют до четвертого, но каноническая форма именно такая.
Вычисляет она относительную яркость цвета (relative luminance или в некоторых контекстах luma; не путать с lightness и brightness) и широко применяется для преобразования цветного RGB-изображения в Grayscale и связанных с этим задач.
Но почему нельзя? И откуда же взялись именно такие коэффициенты?
Мини-экскурс в историю
Есть такая международная организация, которая разрабатывает рекомендации (де-факто стандарты) для сферы телерадиокоммуникаций — ITU.
Интересующие нас параметры прописаны в рекомендациях ITU-R BT.601, принятых в 1982 году (по ссылке обновленная редакция). Уже на этом моменте можно слегка удивиться — где мы и где 82-ой год? Но это только начало.
Циферки перекочевали туда из рекомендаций ITU-R BT.470 от 1970 года (по ссылке также обновленная редакция).
А они, в свою очередь — наследие цветовой модели YIQ, которая была разработана для североамериканской системы телевещания NTSC в 1953 году! К нынешним компьютерам и гаджетам она имеет отношение чуть более, чем никакое.
Никому не напоминает байку про связь космических кораблей с шириной древнеримской лошадиной задницы?
Современные колориметрические параметеры начали выкристаллизовываться в 1970 году с модернизацией систем PAL/SECAM. Примерно в это же время американцы придумали свою спецификацию SMPTE-C на аналогичные люминофоры, но NTSC перешла на них только в 1987 году. Я не знаю наверняка, но подозреваю, что именно этой задержкой объясняется сам факт рождения пресловутых Rec.601 — ведь по большому счету, они морально устарели уже к моменту своего появления.
Потом в 1990 году случились новые рекомендации ITU-R BT.709, а в 1996 на их основе придумали стандарт sRGB, который захватил мир и царствует (в потребительском секторе) по сей день. Альтернативы ему существуют, но все они востребованы в узкоспецифичных областях. И прошло уже, ни много ни мало, 20 лет — не пора бы уже избавиться от атавизмов окончательно?
Во-вторых, яркость, контрастность, насыщенность, резкость, разрешение
Картина фокусирует друзей: Яркость, контрастность, насыщенность и резкость изображения не зависят друг от друга. Изменение одной из функций может привести к изменению других характеристик изображения. Степень изменения зависит от характеристик самого изображения. Сначала определите концепцию. Будет подробно
1. Яркость
Общее понимание яркости изображения - это яркость изображения, цифровое изображениеf(x,y) = i(x,y) r(x, y) Если значение серого находится между [0, 255], тоf Чем ближе значение к 0, тем ниже яркость,f Чем ближе значение к 255, тем выше яркость. И мы также должны различать яркость и контрастность. Как упоминалось выше, контраст относится к разнице между самым высоким и самым низким уровнями серого. Давайте почувствуем влияние изменения яркости на цифровые изображения через картинки:
На двух белых и красных изображениях, показанных выше, правая сторона рисунка имеет повышенную яркость относительно левой стороны. Видно, что правая сторона изображения имеет общее увеличение яркости по сравнению с левой стороной. Вот только небольшая дуга увеличения яркости. Увеличьте яркость выше, как показано ниже:
Здесь необходимо подчеркнуть, что если мы сделаем такое резкое изменение яркости, это повлияет на насыщенность, контрастность и резкость изображения при изменении интенсивности изображения. В это время насыщенность, контрастность и Четкость уменьшается, поскольку чрезмерно увеличенная яркость приводит к тому, что тень улавливает выделение. Поскольку максимальное значение серого фиксировано, минимальное значение серого быстро догоняет максимальное значение серого, что влияет на насыщенность и контрастность изображения. И ясность
2. Контрастность и насыщенность
(2) Контраст был введен выше, ссылаясь на Разница между темными и светлыми изображениями, то есть разница между максимальным уровнем серого и минимальным уровнем серого изображения , Смотрите картинку ниже:
Правая сторона изображений с белыми и красными спицами выше имеет повышенную контрастность, но мы можем видеть, что белые или красные спицы с правой стороны меняются с увеличением контрастности, белые / красные спицы меняются Загорается, фон становится темнее, а изображение выглядит более резким.
Но обратите внимание: Увеличение контрастности в красных спицах также увеличивало насыщенность, но насыщенность белых спиц не увеличивалась с увеличением яркости, что подтверждает, что степень изменения, упомянутая выше, зависит от характеристик самого изображения. Поскольку насыщенность имеет большое влияние на изображения с яркими цветами и насыщенными цветами, но меньше на тусклые или почти нейтральные цвета
3. Резкость
Резкость изображения предназначена для компенсации контуров изображения, усиления края изображения и части, в которой уровень серого цвета скачет, чтобы изображение стало четким. Повышение резкости изображения часто используется в реальной обработке изображений, поскольку при выполнении сглаживания и фильтрации изображений информация о краях потерянного изображения будет потеряна. За счет повышения резкости изображения можно улучшить края и контур изображения.
Затем просмотрите эффект повышения резкости изображения через следующую картинку:
Из изображения горы мы можем видеть, что яркость, контрастность и насыщенность тонких спиц вблизи центра белых и красных спиц изображения также значительно улучшились, но на самом деле очевидных изменений снаружи нет, поскольку резкость изображения будет более Усовершенствуйте данные по краям, чтобы влияние было более очевидным
Резюме о: Вышеупомянутые три подраздела в основном объяснили понятия яркости, контраста, насыщенности и резкости изображения.В то же время, изображение также подчеркивает, что яркость, контрастность, насыщенность и резкость изображения не полностью изолированы. Да, это будет влиять друг на друга. Так что понимает взаимное влияние между ними. При дальнейшей цифровой обработке изображений вы можете отрегулировать яркость, контрастность, насыщенность и параметры резкости изображения в соответствии с потребностями.
4. Разрешение
Не слишком стандартно говорить, что разрешение изображения можно рассматривать как размер изображения: изображение с более высоким разрешением больше, а изображение с более низким разрешением меньше. Официальное заявление: Разрешение изображения относится к количеству информации, хранящейся в изображении, и является количеством пикселей на дюйм изображения. , То есть: пикселей на дюйм, единица измерения - PPI (Pixels Per Inch), поэтому увеличение изображения увеличит разрешение изображения, разрешение изображения будет больше, а изображение будет больше и четче, например: разрешение изображения составляет 500x200, что Скажем, это изображение увеличено на 1: 1 на экране, 500 пикселей (цветные блоки) в горизонтальном направлении и 200 пикселей (цветные блоки) в вертикальном направлении
Почему меня это волнует?
Как уже было сказано выше, за многие годы формула растиражирована на несметном количестве сайтов, и они сидят в топе всех поисковиков (например). Источники посерьезнее часто приводят обе формулы, но не делают между ними должного различия, преподнося их как равноправные альтернативы. Характерный пример на StackОverflow: Formula to determine brightness of RGB color — ответы довольно подробные, но человеку не в теме сложно сделать осознанный выбор.
Справедливости ради, серьезные проекты такими ошибками почти не страдают — авторы не брезгуют сверяться со стандартами, да и фидбек аудитории работает (хотя и там не обходится без исключений). А вот рядовой программист, которому нужно побыстрее решить задачу, вбивает в поисковик что-то типа «rgb to grayscale», и тот подсовывает ему сами знаете что. Формулу продолжают находить и копипастить до сих пор! Феноменальная живучесть.
На розыск этих примеров я потратил около 20 минут:
А поводом для написания этой заметки стал слайд из доклада Василики Климовой с HolyJS-2016 — с той же самой доисторической формулой. Понятно, что формула не повлияла на основной смысл выступления, но наглядно продемонстрировала ваши шансы ненароком её нагуглить в 2016 году.
Подытоживая: если увидите в чьем-то действующем коде последовательность 299/587/114 — кидайте автору ссылку на эту заметку.
update 1
В комментариях настоятельно просят примеры. Но тут не всё так просто, как кажется.
Если взять произвольную картинку и перевести её в ч/б двумя способами — это не даст вообще ничего. Картинки будут просто немного разными. Зритель сможет только оценить, какой вариант ему субъективно симпатичнее. А дело-то не в этом! Дело в том, какой вариант правильнее, точнее.
Немного поразмыслив, я набросал вот такую штуку: codepen.io/dom1n1k/pen/LZWjbj
Скрипт генерирует 2 раза по 100 случайных цветов, подбирая компоненты так, чтобы яркость всех кубиков была теоретически одинакова (Y = 0.5). То есть всё поле целиком должно субъективно восприниматься как можно более однородно (однородно именно с точки зрения яркости, не учитывая разные тона).
Слева старая «неправильная» формула, справа новая «правильная». Справа однородность действительно заметно выше. Хотя и не идеальна, конечно — для бОльшей точности нужно вычислять перцептивную светлоту L*.
update 2.1
Ещё возник вопрос по поводу гаммы. Его подняло уже минимум 3 человека, поэтому тоже вынесу в апдейт. Вопрос на самом деле непростой и отчасти даже философский (вполне потянет на отдельную статью).
Если говорить строго — да, для перевода картинки в ч/б вид гамму нужно декодировать. Но на практике (в задачах, не связанных с точной колориметрией) этот шаг часто опускают ради простоты и производительности. Например, Photoshop при конвертации в grayscale гамму учитывает, а одноименный CSS-фильтр (MDN) — нет.
С точки зрения корректности результата, выбор весовых коэффициентов и пересчёт гаммы — взаимодополняющие вещи. Влияет и то, и другое. Разница только в том, что гамма требует дополнительных вычислений, а вот правильные коэффициенты обходятся бесплатно.
Вторая версия демо с учетом гаммы (первая никуда не делась): codepen.io/dom1n1k/pen/PzpEQX
Получилось, конечно, точнее.
Алгоритмы улучшения качества изображений, хранящихся в растровых графических форматах, получают всё большее распространение. На сегодняшний день их существует огромное количество и беспрерывно появляются новые. Это связано с появлением новых способов и технических средств получения, передачи и воспроизводства растровых изображений. Алгоритмы обработки изображений, в основном, ориентированы на ликвидацию недоработок в технических средствах и технологиях, работающих с изображениями. Эти недоработки можно идентифицировать не только визуально, но и пользуясь описанием технических характеристик техники и технологий.
Перед тем, как улучшать изображение, необходимо дать оценку его качеству. Человек, бросив один взгляд на изображение, может сказать яркое оно или тёмное, контрастное или нет, чёткое или размытое и т.д. Алгоритмы же работают детально, анализируя изображение попиксельно или небольшими группами пикселей. Поэтому, на основании работы алгоритма, тяжело дать общую оценку качеству изображения.
К показателям, по которым можно оценить изображение как единое целое, относятся следующие:
- яркость;
- контрастность;
- преобладающий тон;
- резкость.
Прежде чем приступить к выработке критериев и методов оценки качества, необходимо выбрать цветовую модель. Наиболее удобной представляется модель RGB по нескольким причинам:
- эта модель достаточна проста как для понимания, так и для математического описания;
- она применяется во многих технических устройствах и, при необходимости, преобразуется в другие цветовые модели;
- она близка к представлениям о природе чувствительности к цвету человеческого глаза.
Требования к критериям оценки качества изображений следующие:
- показатели качества для сравнения с критериями должны вычисляться;
- значения критериев должны иметь относительный характер (не зависеть от диапазона яркости RGB);
- критерии должны быть понятны и наглядны для человека.
Достаточно наглядно оценка качества изображения может быть представлена с помощью RGB-гистограмм.
Рис. 1. Гистограмма тёмного неконтрастного изображения
Рис. 2. Гистограмма светлого изображения
Рис. 3. Гистограмма сбалансированного полутонового изображения
Рис. 4. Гистограмма высококонтрастного изображения
Рис. 5. Гистограмма постеризованного изображения
Недостатком этого способа является отсутствие численного выражения для показателей качества.
Цветовую модель RGB удобно представить в виде куба в прямоугольной системе координат, где в начале координат расположена точка чёрного цвета (яркость R = G = B = 0), а вдоль осей возрастают значения яркости R, G и B. На главной диагонали куба, выходящей из начала координат, расположены ахроматические цвета.
Рис. 6. Цветовая модель RGB
В вершинах куба расположены основные цвета (красный, зелёный, синий), дополнительные к ним (жёлтый, циан и пурпурный), а также чёрный и белый. На гранях куба находятся так называемые «чистые» тона.
Рис. 7. RGB — куб и его невидимые грани
Отсутствие у цвета третей составляющей — признак «чистого» тона. Появление и увеличение доли третьей составляющей в цвете приводит к снижению насыщенности тона, т.е. к приближению данного цвета к ахроматическим цветам.
4. Резюме
Суммируйте знания, полученные в этой статье:
- Определение цифровых изображений
- Процесс формирования цифрового изображения
- Яркость цифрового изображения, контраст, насыщенность, резкость, концепции разрешения и взаимосвязь между яркостью, контрастом, насыщенностью и резкостью
- Яркость цифрового изображения, контраст, насыщенность, демонстрация примера настройки разрешения
Эта статья окончена. Если у вас есть какие-либо вопросы, добро пожаловать на обмен и изучение. Вы также можете подписаться на мою общедоступную учетную запись WeChat, а также на обмен и изучение
[Digital Image Processing Series 2] Основные понятия: яркость, контрастность, насыщенность, резкость, разрешение
- Python версия этой серии: python3.5.4
- Эта серия версий opencv-python: opencv-python3.4.2.17
- Средой разработки, используемой в этой серии, является jupyter notebook, представляющая собой интерактивную среду разработки на python. Она очень удобна для тестирования и интеграции работы vim. Учебное пособие по установке может ссылаться на: Фон темы, настройка шрифтов и плагинов расширения для ноутбука jupyter на windows (интегрированная среда vim)
выше[Цифровая обработка изображений, серия 1] Быстрый запуск OpenCV-Python Он сочетает OpenCV-Python с определенным пониманием основных операций цифровых изображений. В этой статье мы рассмотрим концепцию и принципы формирования цифровых изображений, а также обсудим основные атрибуты яркости, контрастности, разрешения, насыщенности, резкости.
Приходи ~ сухой ~Последний скриншот программы:
Оценка тоновой насыщенности
Тоновая насыщенность — это отличие цвета от ахроматического при их одинаковой яркости. В RGB-кубе тоновую насыщенность пикселя можно выразить как расстояние до диагонали ахроматических цветов:
Для всего изображения оценка тоновой насыщенности может быть выражена как среднее значение тоновой насыщенности для всех пикселей:
Оценка яркости изображения
Яркость изображения можно выразить как среднюю яркость всех пикселей (математическое ожидание в терминах теории вероятностей).
Яркость пикселя вычисляется по формуле:
Яркость всего изображения Y, содержащего N пикселей будет равна:
Данное выражение характеризует физическую яркость изображения. Поскольку чувствительность человеческого газа к разным частям спектра неодинакова (максимальная в жёлто-зелёной, меньше в красной, ещё меньше в синей), яркость цветного пикселя будет восприниматься субъективно в зависимости от его тональных характеристик.
Рис. 8. Чувствительность человеческого глаза к различным частям спектра
В соответствии с рекомендациями стандарта Федеральной комиссии связи (FCC), яркость изображения (видимая) вычисляется по формуле:
Оценка как физической (), так и видимой () яркости изображения представлена в абсолютных величинах. Перейти к относительным величинам можно разделив значение яркости на максимально возможное значение яркости:
Тогда будет лежать в диапазоне [0,1]. Значение 0 будет соответствовать абсолютно чёрному изображению, а значение 1 – абсолютно белому. Изображение оптимальной яркости должно иметь значение близкое к 0.5.
Оценка контрастности изображения
Контрастность изображения бывает яркостная и тоновая.
Яркостная контрастность представляет собой разницу между физической или видимой яркостью отдельных участков изображения. Вообще говоря, вычисление физической или видимой яркости можно рассматривать как конвертацию цветного изображения в ахроматические цвета. Поэтому яркостная контрастность — это сравнение двух участков изображения, приведенных к ахроматическим цветам.
Если проанализировать RGB-гистограммы, то можно сделать вывод, что у контрастного изображения количество тёмных и светлых пикселей должно быть приблизительно одинаковым, разница в их яркости — значительна, а основное место сосредоточения пикселей — возле границ диапазона.
Хорошим критерием оценки яркостной контрастности будет дисперсия яркости пикселей изображения:
Более универсальный безразмерный критерий оценки яркостной контрастности — отношение средне-квадратического отклонения к максимально возможному значению яркости:
C изменяется в диапазоне [0,1]. Значение 0 соответствует однотонному изображению, значение 1 — максимально контрастному. Оптимальное значение контрастности зависит от типа объекта, представленного на изображении.
Более сложный случай представляет тоновая контрастность. Конвертированные в оттенки серого цвета могут иметь одинаковую яркость, но визуально чётко различаться.
Можно вычислить «средний тон» пикселя для всего изображения. Его удобно выразить через средние значения RGB:
Расстояние в RGB кубе между пикселями изображения и «средним тоном» определяется по формуле:
В качестве оценки тоновой контрастности изображения можно взять среднее расстояние в RGB кубе между пикселями и «средним тоном»:
В RGB-кубе максимальное расстояние между двумя точками равно длине главой диагонали:
Хорошую тоновую контрастность будут иметь пиксели, расположенные на расстоянии , или (длины ребра RGB-куба):
3. Примеры яркости, контрастности, насыщенности, резкости и регулировки разрешения изображения
Сначала нарисуйте ключевую точку:
- Регулировка контрастности изображения может напрямую использовать формулу преобразования в пространстве RGBg(i,j)= af(i,j) + b Вносить линейные изменения в изображение;
- Насыщенность изображения обычно не очень интуитивно понятна для регулировки в цветовом пространстве RGB, и цветовое пространство HSL может интуитивно указывать насыщенность каждого пикселя, поэтому для регулировки насыщенности сначала прочитайте значение RGB пикселя изображения, а затем преобразуйте в пространство HSL Получите значения насыщенности и яркости, а затем отрегулируйте значения RGB от пространства HSL до пространства RGB, чтобы завершить настройку насыщенности изображения
- Повышение резкости изображения обычно делится на использование пространственных фильтров для повышения резкости изображений и использование фильтров в частотной области для повышения резкости изображений, которые будут рассмотрены в последующей статье, посвященной фильтрации изображений, эта статья не будет обсуждаться
1. RGB пространство изображения яркость и контрастность регулировки
Для преобразования цифрового изображения пусть исходный уровень серого в пикселях будетf(i,j), Преобразованный уровень серого цвета в пикселяхg(i,j), Обычно используемое линейное преобразованиеg(i,j)= af(i,j) + bГде Коэффициент а влияет на контрастность изображения, а коэффициент b влияет на яркость изображения следующим образом:
(1) Когда a = 1, это исходное изображение;
(2) a> Контрастность увеличивается на 1, и изображение выглядит более четким;
(3) a (4) b влияет на яркость изображения. С увеличением b (b> 0) и уменьшением b (b> 0) общая величина оттенков серого изображения перемещается вверх или вниз, То есть общее изображение становится ярче или темнее и не меняет контраст изображения
Эффект бега заключается в следующем:
2. HSL космическое изображение яркость и насыщенность регулировка
Пространство HSL: представляет оттенок, насыщенность и яркость трех каналов цвета. H: Hue Hue, S: Насыщенность, L: Легкость. Например: нормализованное значение пикселя двумерного цифрового изображения (0, 0) равно (0,2, 0,3, 0,4), это означает H = 0,2, S = 0,3, L = 0,4
Эффект бега заключается в следующем:
3. Регулировка разрешения изображения
Регулировка разрешения изображения относительно проста, часто используется, opencv-python поставляется с функцией изменения размера, чтобы настроить разрешение изображения, официальное определение функции изменения размера:
Параметр 1: объект изображения
Параметр 2: (ширина, высота) Ширина и высота входного изображения
Параметр 3: какой метод разности используется для увеличения изображения?
- cv2.INTER_LINEAR: билинейная интерполяция, используется по умолчанию
- cv2.INTER_NEAREST: интерполяция ближайшего соседа
- cv2.INTER_AREA: повторная выборка с использованием отношения площади пикселя, аналогично cv2.INTER_NEAREST
- cv2.INTER_CUBIC: бикубическая интерполяция в окрестности 4x4 пикселей
Эффект регулировки разрешения изображения
Как правильно?
Относительные яркости первичных цветов в пространстве sRGB приведены в таблице выше (помечены зеленым) — их и нужно использовать. На практике обычно делают округление до 4-х знаков:
Внимательный читатель заметит, что коэффициент при R округлен не по правилам (в меньшую сторону), но это не ошибка. Дело в том, что сумма всех трех чисел должна равняться единице, и «правильное» округление внесло бы погрешность. Педанты могут взять все шесть знаков после запятой и не беспокоиться.
Этой формулы хватит для 99% типичных случаев. Её использует во всех своих спецификациях W3C (например, матричные фильтры в SVG).
Если вам нужна бОльшая точность, придется вычислять L*, но это отдельная большая тема. Неплохой ответ на StackOverflow, который дает отправные точки для дальнейшего чтения.
Если изображение у вас в другом цветовом пространстве (Adobe RGB, ProPhoto RGB и т.д.) — коэффициенты будут свои; их можно найти в вышеупомянутой таблице Брюса Линдблума.
1. Что такое цифровое изображение
1. Определение цифрового изображения
Для изображения мы можем поместить его в систему координат, здесь в качестве источника координат взять фиксированную точку в верхнем левом углу изображения,x Аксиальное направление является правильным, которое совпадает с осью x декартовой системы координат;y Ось внизу, противоположная оси Y декартовой системы координат. Так что мы можем определить изображение как двумерную функциюf(x,y)Каждый пиксель в изображении может быть использован(x,y) Представление координат в любой паре пространственных координат(x,y) Магнитуда вf Называется интенсивность или оттенки серого изображения в этой точке, когдаx,y И значение серогоf Когда это конечное дискретное значение, изображение называется Цифровое изображение
2. Процесс формирования цифрового изображения
Большинство изображений, которые мы обычно видимИсточник облученияИ формирование изображениясценаОтражение и поглощение световой энергии, создаваемой элементом, цифровым изображением, которое мы видим, делится на следующие этапы:
(1) Восприятие и получение изображения
Падающий свет от источника излучения попадает на объект, попадает в человеческий глаз через отражающее или преломляющее волокно, а затем видит объект. Датчики необходимы для преобразования энергии облучения в цифровые изображения. Основные датчики:
- Один датчик изображения
- Датчик полосы
- Датчик массива
Принцип очень прост: это преобразование входной энергии в напряжение путем объединения входной мощности и материала датчика, чувствительного к особым типам энергии обнаружения, а затем волна выходного напряжения может быть дискретизирована и квантована для получения дискретного цифрового изображения.f(x,y)
Примечание: модель сформирована графикой, чтобы понять уровень серого или уровень интенсивности, см. Ниже
Мы упоминали выше, что изображения могут быть функциямиf(x,y) Указывает, что значение объекта на самом деле происходит от облучения объекта источником излучения, функциейf(x,y) Он может быть представлен двумя компонентами:
- Общее количество источника света, падающего на наблюдаемую сцену
- Общее количество света, отраженного объектами в сцене
Вышеупомянутые два компонента называются компонентом инцидента и компонентом отражения, выраженным какi(x,y)、r(x, y), С:
где:
Следовательно, значение серого или значение интенсивности изображения определяется падающим компонентом и компонентом отражения,i(x,y) Характер зависит от источника излучения иr(x, y) Характер зависит от характеристик изображаемого объекта, формула просто даетi(x,y)、r(x, y) Общий диапазон значений, естественно для разных источников и объектов изображенияi(x,y)、r(x, y) Будут разные значения, поэтому диапазон значений серого цифрового изображения:
Таким образом, интервал [Lmin,Lmax] Называется серым уровнем изображения. На практике интервал часто равен [0, L-1], где f = 0 - черный, f = L-1 - белый на уровне серого, все посередине Значение - это серый оттенок, который меняется с черного на белый, а разница серого между самым высоким и самым низким уровнями серого изображенияКонтраст
(2) Выборка изображения и квантование
Чтобы получить цифровое изображение, нам необходимо преобразовать данные непрерывного восприятия в цифровую форму, а именно: выборка и квантование. Целью отбора проб и количественной оценки является Дискретные непрерывные данные восприятия, а качество изображения также в значительной степени зависит от количества выборок и уровней серого, используемых при дискретизации и квантовании Пожалуйста, обратитесь к:Выборка изображения и квантование и серая гистограмма
(3) Показать цифровое изображение
Существует три основных способа выражения цифровых изображений f (x, y):
- Окрашены в виде трехмерного изображения поверхности, как показано на рисунке 2.18 (а)
- Визуализируйте изображение серого массива, как показано на рисунке 2.18 (б)
- Двумерное числовое изображение массива, как показано на рисунке 2.18 (с)
Оценка резкости изображения
Понятие резкость, как характеристику аппаратных средств и технологий, можно разделить на три составляющие:
- резкость, как характеристика фокусировки объектива на объект;
- резкость как характеристика оборудования, позволяющая воспроизводить без искажений яркостный переход максимального контраста;
- резкость как результат специальной обработки исходного изображения.
Идеальное оборудование должно обеспечить вывод информации о смене цвета в элементе изображения таким образом, чтобы никакого промежутка между цветами не было.
С физической точки зрения нерезкий переход можно рассматривать как диффузное смешение двух контрастных цветов.
С точки зрения человеческого восприятия резкость — это наличие контура контрастного перехода (яркостного или тонового) между двумя соседними частями изображения.
Для оценки резкости изображения в ахроматических цветах удобно использовать яркость пикселей. Такое изображение может быть представлено прямоугольной матрицей (размерностью соответствующей размерам изображения в пикселях), элементами которой являются значения яркости пикселя.
Рис. 9. Контрастный (сверху) и неконтрастный (снизу) переходы между цветами
Поскольку в настоящее время в большинстве случаев используется квадратный пиксель, можно составить другую матрицу (матрицу яркостных контрастов), элементами которой будут разности яркости последующего и предыдущего пикселей по горизонтали или по вертикали (~-~Y_p_x" />
или ~-~Y_p_y" />
). Можно учитывать и диагональные разности.
Значения элементов матрицы характеризуются следующим образом:
Далее осуществляется сканирование строк для разностей по горизонтали (столбцов для разностей по вертикали) матрицы яркостных контрастов. Строка (столбец) разбивается на участки, в которые входят элементы, имеющие одинаковый знак (переходые участки) или участки со значениями элементов равными 0.
Для каждого переходного участка оценивается:
Для проведения анализа матрицы яркостных контрастов необходимо определить критерии и их значения: какое значение элемента матрицы считать контрастным переходом, а какое — нет.
Порог «минимальной заметной разницы» контрастной чувствительности (JND) или дифференциальный порог определяют согласно закона Вебера-Фехнера, который формулируется следующим образом: субъективная величина ощущения, измеренная в единицах минимальной заметной разницы, пропорциональна логарифму физической величины стимула:
Закон утверждает: ощущение разницы между близкими по величине стимулами пропорциональна величине стимулов, т.е.:
Это отношение называется пороговым контрастом, а — дифференциальным порогом. В средине дифференциального порога изменения интенсивности стимула не ощутимы.
Отношение Вебера-Фехнера (пороговый контраст) составляет 1-3%.
Таким образом, для каждого переходного участка матрицы яркостных контрастов в идеальном случае или <|>" />
, <|>>/~>~0.03" />
~0.03"/> (здесь и далее — крутизна участка).
Поскольку критерии оценки резкости связаны с локальными участками изображения, общая оценка резкости по этим критериям будет сильно зависеть от типа объекта на изображении (документ, пейзаж и т.д.). И всё же в качестве оценки резкости всего изображения можно предложить средние значения длины и крутизны для всех n переходных участков.
Для оценки резкости цветных изображений вместо разности яркости соседних пикселей можно использовать расстояние в RGB-кубе между цветами этих пикселей:
При сканировании матрицы тоновых контрастов, подобно сканированию матрицы яркостных контрастов, необходимо контролировать тенденцию изменения тона: отрезки, соединяющие пиксели в RGB-кубе должны лежать на одной прямой. Реально они могут иметь некоторое незначительное отклонение ε. Осуществить такой контроль можно сравнивая сумму длин расстояний между цветами в RGB-кубе с расстоянием между крайними точками этой ломаной линии:
Прекращение выполнения данного условия можно считать границей участка.
Далее оценка резкости цветного изображения проводится подобно оценке резкости ахроматического изображения. Крутизна участка будет вычисляться через расстояния между цветами пикселей в RGB-кубе:
и для всего цветного изображения вычисляются также, как и для ахроматического изображения.
Несмотря на грубость и приблизительность предложенных критериев и методов оценки, их можно успешно использовать для предварительного отбора изображений из больших массивов в автоматическом режиме; для предварительной оценки качества изображений с целью выбора более детальных методов оценки и т.п.
Яркость монитора
Здравсвуйте. У меня есть старый самсунговский монитор, с дровами, которые ставяться толко под xp.
поиск пикселя
добрый день столкнулся с проблемой: нужно искать определенный пиксель и наводить на него курсор.
цвет пикселя
Здравствуйте. Я на pictureBox рисую квадраты разного цвета. Как определить цвет под курсором.
GDI+ изменить насыщенность и яркость разложив RGB в HSL
не совсем понятно, как изменить у картинки насыщенность и яркость я взял пиксель в rgb, получил.
Ну это смотря какая яркость интересует (Brightness, Perceived Brightness, Luminance).
Можно расчитать по среднему арифметическому: (R + G + B)/3
В более серьезных местах (телевещание, например), расчитывается так: R * Rw + G * Gw + B * Bw, где Rw, Gw и Bw - коэффициент для каждого цвета от 0 до 1, который может меняться в зависимости от сферы применения.
Есть еще формула с расчетом корня.
У меня есть предмет "Распознавание изображений" и мне нужно сделать гистограмму яркостей. Гистограмму не проблема сделать, но преподаватель попросил высчитывать яркости именно из RGB-составляющих. И я вот думаю как.
Добавлено через 1 минуту
Это же получится в промежутке [0; 255], а GetBrightness() возвращает в промежутке [0; 1]. Как правильнее?
Для определения яркости пикселя можно воспользовать формулой Y=0.3*R+0.59*G+0.11*B, правда это больше для изображений в оттенках серого.
можно воспользовать формулой Y=0.3*R+0.59*G+0.11*B, правда это больше для изображений в оттенках серого
Все правильно, для построения гистограммы используется именно это формула (по крайней мере нам так препод по ЦОС говорил)
Заинтересовала меня эта формула, почему именно такие коэффициенты, решил копнуть чуть глубже (пара ссылок: 1, 2).
Если в трех словах, то сама формула это перевод RGB пикселя в оттенки серого, а коэффициенты формулы это показатель той или иной системы представления/кодирования цвета (изначально PAL/SECAM и все вот это вот). В разных системах цвет, закодированный одним и тем же значением, будет выглядеть по разному. И наоборот - выглядящий одинаково в разных системах цвет, будет по разному кодироваться. В общем виде: [R±dr, G±dg, B±db], где dr, dg, db - некоторое отклонение свойственное той или иной системе.
Как происходит запись цвета в какой-то конкретной системе: берется двухмерное математически составленное бесконечно точное представление цвета (палитра на плоскости) и выбирается на ней точка, чьи координаты и будут означать запись цвета. Выбираются три основных (связанных с данной технологией производства) цвета, например, красный, зеленый и синий, и сопоставляются с цветовой палитрой. Таким образом получается, что какой-нибудь зеленый цвет располагается по таким-то координатам, а смежный цвет, находящийся в бесконечно близком приближении к нему уже не зеленый. Почему выбираются те или иные координаты? А вот не почему, на глаз. Ну по крайней мере раньше так было при аналоговом вещании.
Возвращаясь же к самой формуле, то высчитанное по ней значение является некой яркостью пикселя. Некой - потому что понятий яркостей существует несколько. И хрен его знает что мы получили за число, но оно точно как-то характеризует исследуемый пиксель.
Резюмируя можно сказать, что в прикладных целях совершенно наплевать как рассчитывать яркость пикселя, хоть просто брать среднее арифметическое по RGB, потому что неизвестно с помощью какого оборудования получены данные пиксели, какие там были кодеки, какой они стандарт поддерживали, будут ли они куда-то выводиться вообще потом и через сколько десятков лет какие изменения в этой всей сфере произойдут.
Яркость пикселя
Добрый день! Как можно получить яркость пикселя черно-белой картинки в Builder C++? Спасибо!
Яркость монитора
Добро всем :senor: Подскажите как программно управлять яркостью монитора? если тема обсуждалось.
Яркость, контрастность и насыщенность в RGB
Чтобы увеличить/уменьшить яркость, надо R, G и B увеличивать/уменьшать на одинаковую величину. А.
При изменении значения ползунка, изменять яркость рисунка
Здравствуйте, скажите, пожалуйста, как сделать программу, в которой при изменении значения.
Цвет каждого пикселя должен просто стать темнее, я полагаю. Пропорции rgb не должны измениться, а должны уменьшиться значения по каждому из каналов.
Приблизительно так: умножили на число, а потом с помощью побитого сдвига от множителя избавляемся.
Стопроцентной точности нет, но погрешность не сильно большая.
я сразу не понял, на какое число. нужно на число, кратное двум.
и чем больше число, тем больше точность.
Вот, кстати, пример сделал (может кому-нибудь будет полезен):
Спасибо за ответы, но теперь, собственно, возник еще один вопрос - как присвоить пикселю новую яркость? Как я понимаю, нужно сначала разложить всю картинку на RGB составляющие, а затем перевести это в YUV составляющие
И теперь вопрос: как правильно перейти от RGB составляющих к цвету пикселя?
Если сделать так, то программа попросту зависает:
Лучше эти строки переведи в такой вид, как у Gremlin, потому как проц выражения с целыми числами быстрее вычисляет, чем с действительными числами. Возможно из-за этого и зависает программа.
эта строчка по-моему тоже долго будет вычисляться, посмотри как у Gremlin реализовано, у него сразу в col записывается
Вечно вы любите велосипеды писать:
Это вообще не то
Добавлено через 18 минут
Тут тема про цветовую модель YUV
для этого знать, что такое пространственный сглаживающий фильтр с шириной окна 3.
есть где прочитать?
kzru_hunter, Отклик простейшего линейного пространст*венного фильтра представляет собой среднее значение элементов окрестности, по*крытой маской фильтра. Такие фильтры называются усредняющи*ми или сглаживающими. За*меной исходных значений элементов изображения на средние значе*ния по маске фильтра достигается уменьшение изменений яркости. Как следствие, таким способом решаются следующие задачи:
Походу хрень, а не программа у меня Буду переделывать
kzru_hunter, вы правы, я использую именно эту формулу (0.299*r + 0.587*g + 0.114*b) . нужна предистория:
Я решил написать бота для игры, бот графический (этот код по для определения яркости нужен для распознования текста), мой первый вариант был BMP->Pixels[x][y], но производительность была низкой, потом мне подсказали что лучше использовать ScanLine, производительность выросла, но мне этого все равно не хватало, и потом подсказали такой вот примерчик "(((r * 77) + (g * 151) + (b * 28)) >> 8);", еще несколько возрасла производительность
т.е. эти 2 формулы идентичны
Тот кусок кода, который я предложил (мне помогали его ускорить)
1) Работает быстрее
2) При повторном проходе не путается, и не делает изображение темнее с каждым последующим проходом
gunslinger - ответил правильно, из за того, что байт это целое число, оно не особо дружит с дробными, числами, из за этого и идут погрехи
100 проходов
справа: со смещением на 8 бит
слева: функция из вики
в Edit'ах под ними время выполнения
Так в чем же конкретно проблема?
Кто-то может подумать, что те коэффициенты отражают некие фундаментальные свойства человеческого зрения и потому не имеют срока давности. Это не совсем верно — помимо всего прочего, коэффициенты привязаны к технологии воспроизведения цвета.
Любое RGB-пространство (а YIQ это преобразование над моделью RGB) определяется тремя базовыми параметрами:
1. Хроматическими координатами трех основных цветов (они называются primaries);
2. Хроматическими координатами белой точки (white point или reference white);
3. Гамма-коррекцией.
Хроматические координаты принято задавать в системе CIE xyY. Регистр букв в данном случае важен: cтрочные xy соответствуют координатам на хроматической диаграмме (всем известная «подкова»), а заглавный Y — это яркость из вектора CIE XYZ.
Теперь посмотрим на компоненту Y у всех первичных цветов NTSC (я пометил их розовым):
* Оригинал таблицы со многими другими пространствами на сайте Брюса Линдблума.
Знакомая цифирь, правда? Вот и ответ на вопрос «откуда взялось?»
А проблема в том, что используемое сегодня пространство sRGB существенно отличается от системы 60-летней давности. И дело даже не в том, что из них лучше или хуже — они просто разные:
Треугольник шире и смещён в сторону. Другая белая точка. К слову сказать, иллюминант C уже очень давно признан deprecated в пользу иллюминантов серии D вообще и наиболее популярного D65 в частности. Тело цветового охвата другое — соответственно, результаты вычислений яркости окажутся неадекватны реальности.
Вы можете спросить: а зачем древнему NTSC охват (практически совпадает с охватом Adobe RGB 1998!) настолько больше, чем у современного sRGB? Я не знаю. Совершенно очевидно, что кинескопы того времени покрыть его не могли. Быть может, хотели сделать задел на будущее?
Оценка преобладающего тона
Преобладающим тоном можно считать «средний тон». Это утверждение имеет физический смысл: изображение будет представляться такого цвета, если его угловой размер будет равен разрешающей способности глаза.
Читайте также: