С помощью этой небольшой бесплатной программы, действующей аналогично инструменту «Пипетка» (EyeDropper) растровых графических редакторов (Adobe Photoshop, Corel PhotoPaint и т.д.), можно легко определять RGB-значения цветов на любых изображениях, показываемых на экране, а также одновременно видеть сильно увеличенные фрагменты этих изображений в местах взятия цветовых проб (т.е. это ещё и экранная лупа). Она может пригодиться, например, в тех случаях, когда хочется более детально познакомиться с техническими деталями заинтересовавшей нас фотографии прямо в галерее какого-нибудь сайта, а загружать ради этого целый Photoshop как-то не хочется… Вместе с тем, у этой пипетки есть некоторые особенности, которые могут оказаться полезными и при работе в графическом редакторе (или, возможно, при работах, даже не имеющих отношения к фотографии):
Масштабы увеличения – от 1× до 8×;
Размеры «пипетки» (пятна опробования) – от 1×1 до 11×11 пикселов (с усреднением цвета);
«Пипетка» как квадратной, так и круглой формы со сглаживанием ступеней растра (anti-aliasing);
Отображение цветовой информации не только в координатах RGB, но и в координатах CIE L*a*b* и CIE L*C*H*;
Вычисление значений «шумов» в пределах пятна «пипетки» (по каждому из каналов) двумя методами;
«Замораживание» положения «пипетки».
Установка
Программа работает под управлением ОС семейства MS Windows и распространяется в виде ZIP-архива. Для её установки требуется только скопировать папку с файлами из архива в любое место на компьютере. В архиве находятся файлы:
Pipette.exe – главный исполняемый файл (сама программа);
Pipette.ini – инициализационный файл (с параметрами запуска);
Pipette.chm – файл справки;
Round.dat – коэффициенты сглаживания для всех размеров круглого пятна «пипетки»;
*.par – файлы с параметрами цветовых RGB-пространств (для цветовых преобразований), в настоящее время: sRGB.par и Adobe98.par (пусть будет…);
ChromAd.dat – файл с параметрами хроматической адаптации (для цветовых преобразований);
WP_XZ.dat – файл с параметрами стандартных источников света (для цветовых преобразований);
В реестр программа ничего не записывает, поэтому для её удаления нужно только удалить эту папку со всем содержимым.
Работа с программой
Окно запущенной программы висит поверх остальных окон в удобном для Вас месте, его размеры можно изменять. Когда курсор находится за пределами окна Pipette и Вы работаете с другими приложениями (например, рыскаете по фотогалерее), в окне отображается увеличенный фрагмент экрана в районе курсора, а красной рамочкой в центре фрагмента – область цветового опробования (пятно). Над фрагментом постоянно показывается текущая информация (слева направо, по порядку):
Значения цветов (средние для пятна опробования) в выбранных координатах (RGB, CIE L*a*b*, CIE L*C*H*);
Квадратик, окрашенный в получающийся суммарный цвет;
Разницы значений dG=R-G и dG=B-G, по которым сразу видно отличие текущего цвета от нейтрально-серого (у которого обе величины dG равны 0) – только при выборе RGB-координат;
Средний разброс значений цветов в пределах пятна опробования (N или G, в зависимости от метода оценки: см. ниже), по которому можно оценивать уровень «шумов» на выбранных участках изображения (независимо для трёх каналов). Эта величина для канала X вычисляется по простой формуле: Nx = (|X1 - Xm| + |X2 - Xm| + ... + |Xn - Xm|) / n, в которой n – число пикселов в пятне опробования; X1, X2, ..., Xn – значения канала X для 1-го, 2-го, ..., n-го пикселов; Xm – среднее значение для канала X (см. п. 1). Однако, это среднее значение может вычисляться по-разному (см. ниже).
Если курсор передвинуть на окно программы, то показывается панель для настройки программы. Сверху – ползунок для выбора степени увеличения лупы (Zoom = 1× .. 8×). Под ним – ползунок для выбора размера пятна, т.е. его ширины/высоты (Sample size = 1 .. 11 пикселов). Рамочка пятна опробования не показывается, если убрать галочку в пункте «Show sampling area» (например, когда нужна только экранная лупа). Если стоит галочка в пункте «Round», то используется пятно опробования не квадратной формы (как в PhotoShop'е и других редакторах), а круглой. При этом учитывается сглаживание ступеней растра на границах круга (anti-aliasing). Оно вычисляется, исходя из площадей, занимаемых кругом для каждого из пикселов. Маленькие таблички с этими данными для каждого размера круглого пятна находятся в текстовом файле Round.dat, который должен размещаться в одном каталоге с программой. Справа можно выбрать одну из трёх систем цветовых координат:
CIE L*a*b* – L*: ось светлоты [0 .. +100], – a*: ось от зелёного до красного цвета [-128 .. +127], – b*: ось от синего до жёлтого цвета [-128 .. +127] (очевидно, что этих крайних значений по хроматическим осям мы никогда не увидим);
CIE L*C*H* иногда удобное «цилиндрическое» представление системы CIE L*a*b*, аппаратно-независимый аналог модели HSL (Hue, Saturation, Lightness). В нём: – L* (от Lightness): ось светлоты [0 .. +100], – C* (от Chroma, то же, что Saturation): насыщенность [0 .. +100], – H* (Hue): цветовой тон [0° .. 360°]. Тут следует особо подчеркнуть, что наблюдаемые на изображениях значения «шумов» по оси H* сильно растут с уменьшением насыщенности (и достигают предела в окрестности ахроматической точки, где ось H* оказывается вообще неопределённой).
Интересной особенностью программы, оказывающейся важной при оценке «шумов», является выбор того среднего значения, относительно которого следует измерять отскоки отдельных пикселов. Самый простой и стандартный подход – просто использовать средние значения каналов, включая ближайшее окружение каждого пиксела (т.е. в квадрате 3×3 пиксела) и усреднять отскоки в пределах пятна опробования. Этот метод отрабатывает только высокочастотный «шум» (отскоки отдельных пикселов). Однако, в программе также реализован и нестандартный подход к оценке «шумов»: вычисление средних значений каналов по всему пятну опробования и измерение отскоков отдельных пикселов относительно этой «базовой плоскости» (программа пока что использует только линейное приближение):
Очевидно, что в случае горизонтальной базовой плоскости он хорошо работает только на очень ровно окрашенных участках. Вместе с тем, фотоизображениям свойственна насыщенность градиентными цветовыми переходами. На этих участках такой примитивный подход будет заметно завышать значения «шумов» (особенно, при больших размерах пятна опробования и значительной «крутизне» цветового перехода). Поэтому лучше использовать не горизонтальные, а наклонные базовые плоскости, соответствующие среднему градиенту в области опробования:
При установке галочки напротив опции «Use gradient» («Использовать градиент») программа методом наименьших квадратов «на лету» вычисляет уравнения трёх этих плоскостей (для каждого канала отдельно, с учётом сглаживания ступеней растра на краях пятна опробования, если оно круглое) и измеряет отскоки пикселей именно от этих плоскостей. При этом перед значениями «шумов» показываются вместо букв «N» («Normal») буквы «G» («Gradient»). Опция может также включаться и выключаться с клавиатуры – нажатием на клавишу «G» при активном окне программы. Надо сказать, что градиентный метод отличает такое закономерное поведение, как увеличение значений для сильных отскоков пикселов, когда они приближаются к краям пятна опробования (т.к. эти пикселы также используются при расчёте наклонной базовой плоскости). Например, при изучении одного чёрного пиксела на белом фоне квадратной «пипеткой» 9×9 пикселов обнаруживается, что при нахождении пиксела в углах квадрата значения «шума» равны 8.9, а при его нахождении в центре квадрата – 6.2.
Положение лупы можно «замораживать» – чтобы можно было легко отслеживать изменение всех значений для выбранного участка изображения при манипуляциях с ним в редакторе (например, при настройке цветового баланса). Для этого надо активизировать окно программы (просто ткнув в него мышью), перевести курсор в нужное место на изображении и нажать клавишу «F» на клавиатуре. После этого можно работать с изображением в редакторе – но следует помнить о том, что оно должно отображаться в масштабе 100% («пиксел в пиксел») и не должно перемещаться (например, прокручиваться). Казино Вулкан https://info-vulcan.com/ вся информация про особенности и разновидности игровых автоматов здесь. Для отмены «заморозки» надо снова активизировать окно программы и нажать клавишу «F». Для отслеживания значений в нескольких местах можно запустить и несколько экземпляров программы одновременно. Хотя, надо сказать, что в Adobe PhotoShop подобный инструмент предоставлен для работы с кривыми.
Наконец, я оставил работающей одну отладочную функцию (она может оказаться полезной): при нажатии на клавишу «D» (если окно программы активизировано) в каталог программы записывается текстовый файл debug.txt, в котором находится некоторая информация (большей частью – таблицы данных текущего пятна опробования). Этот файл перезаписывается при каждом нажатии клавиши.
Сводка назначений клавиш, которые можно нажимать при активном окне программы:
Color = номер системы цветовых координат (0 – RGB, 1 – CIE L*a*b*, 2 – CIE L*C*H*);
RGB = название файла с параметрами цветового RGB-пространства (для WEB – sRGB.par);
Lab = название стандартного источника света для абсолютной привязки пространства CIE L*a*b*. Как правило (в том числе и в Adobe PhotoShop), принято использовать D50;
Grad = учёт цветового градиента при вычислении «шумов» (0 – не учитывать, считать методом «ближайших соседей», 1 – учитывать, вычислять наклонные базовые плоскости).
Известные проблемы
«Известные проблемы» – это, собственно, не ошибки в программе, а до сих пор сохраняющаяся возможная недоработка. Если Вы решите «пройтись пипеткой» по изображению, загруженному в Adobe PhotoShop (или любое другое приложение, поддерживающее цветовые профили устройств), то обнаружите, что показываются совсем не те значения цветов, которые показывает программа аналогичным инструментом. Дело в том, что Adobe PhotoShop сообщает те значения цветов, которые были записаны в файле (и затем переведены в рабочее цветовое пространство), а для вывода на экран преобразует цвета в соответствии с цветовым профилем монитора. Вместе с тем, программа Pipette берёт цвета с уже преобразованного изображения, подготовленного к показу на экране. Честно говоря, я пока что не уверен, что буду исправлять эту ситуацию…
Кроме того, я тут поместил и ответы на пару возможных вопросов:
Q. Я запускаю программу, а она всё время ругается на отсутствие каких-то файлов и не показывает никаких «Лабов», только RGB и квадратную рамку! A. Возможно, что Вы перетащили на «Рабочий стол» саму программу вместо того, чтобы создать для неё «ярлык» – вот она и не находит своих файлов с необходимыми для работы параметрами.
Q. Программа то реагирует на нажатия клавиш «F»,«G» и «D», то не реагирует! A. При использовании клавиатуры не забывайте делать активным окно «Пипетки» (например, с помощью «Alt-Tab»).
Если Вы обнаружите что-то ещё очень нехорошее в её поведении, то сообщите, пожалуйста, мне об этом письмом на адрес: doliva@inbox.ru
Благодарности
Программа написана в Delphi 7.0, в качестве отправной точки взят проект удобной экранной лупы, широко распространённый на сайтах по Delphi-программированию (правда, чаще встречаются варианты с одной неприятной ошибкой освобождения ресурсов). Немного поискав, я, вроде, наткнулся и на первоисточник (лежащий вот тут), его автор из Хорватии – Zarko Gajic (gzarko@sf.hr). Хочу особо поблагодарить Евгения Фёдорова (aka Gene – www.genesdigest.com, macroclub.ru) за ценные предложения по функциональности программы, а также за её тестирование.
Дмитрий Доливо-Добровольский (aka Dima DD) Санкт-Петербург, январь 2008 г.