Преобразование RGB к шкале полутонов/интенсивности

Когда пользователь нажимает назад, результатом является RESULT_CANCELED , а полученное data значение равно нулю. Таким образом, приложение вылетает при вызове data.getData(), когда вы вызываете getData() для нулевого объекта. Есть несколько способов обойти это: вы можете проверить, что такое resultCode, и убедиться, что это RESULT_OK. Вы также можете просто проверить, является ли data Intent нулевым, прежде чем пытаться получить из него данные:

if (requestCode == PICK_IMAGE_REQUEST) {
    if (data != null) {
        filePath = data.getData(); 
    } else {
        // Note: if filePath is by default null, you don't need this else statement
        filePath = null; 
    }
    if (filePath != null) {
        ...

118
задан Palak 19 September 2019 в 09:23
поделиться

4 ответа

Определенные числа в вопросе от CCIR 601 (см. ссылку ниже Википедии).

При преобразовании RGB-> шкала полутонов с немного отличающимися числами / различные методы Вы не будете видеть, что много различия вообще на нормальном мониторе в нормальных условиях освещения - пробует его.

Вот еще некоторые ссылки на цвет в целом:

Википедия Luma

Выдающийся веб-сайт Bruce Lindbloom

глава 4 по Раскрашивает книгу Colin Ware, "Визуализации информации", ISBN 1-55860-819-2; эта длинная ссылка на Ware в books.google.com может или не может работать

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

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


RGB-> ^gamma-> Y-> L*

В цветной науке, общих значениях RGB, как в HTML rgb (10%, 20%, 30%), названы "нелинейными" или исправленная Гамма. "Линейные" значения определяются как

Rlin = R^gamma,  Glin = G^gamma,  Blin = B^gamma

где гамма 2.2 для многих ПК. Обычные R G B иногда пишутся как R' G' B' (R' = Rlin ^ (1/гамма)) (щелчок языка пуристов), но здесь я отброшу '.

Яркость на дисплее CRT пропорциональна RGBlin = RGB ^ гамма, таким образом, 50%-й серый на CRT является довольно темным:.5 ^ 2.2 = 22% максимальной яркости. (Жидкокристаллические дисплеи более сложны; кроме того, некоторые видеокарты компенсируют гамму.)

Получить меру названной легкости L* от RGB сначала разделите R G B на 255 и вычислите

Y = .2126 * R^gamma + .7152 * G^gamma + .0722 * B^gamma

Это Y в цветовом пространстве XYZ; это - мера цветной "яркости". (Реальные формулы не точно x^gamma, но близко; палка с x^gamma для первичной обработки.)

Наконец,

L* = 116 * Y ^ 1/3 - 16

"... стремится к перцептивной однородности [и] тесно соответствует человеческому восприятию легкости". - Цветовое пространство Wikipedia Lab

82
ответ дан jpaugh 24 November 2019 в 01:59
поделиться

Я нашел, что эта публикация сослалась в ответе на предыдущий подобный вопрос. Это очень полезно:

http://cadik.posvete.cz/color_to_gray_evaluation/

Это показывает 'тонны' различных методов для генерации полутоновых изображений с различными результатами!

12
ответ дан Peter O. 24 November 2019 в 01:59
поделиться

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

6
ответ дан Brian Campbell 24 November 2019 в 01:59
поделиться

Вот статья о том, как эти числа (или подобные) были получены:

https://web.archive.org/web/20160303201512/http://www.cis.rit.edu/mcsl/research/broadbent/CIE1931_RGB.pdf

6
ответ дан rmmh 24 November 2019 в 01:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: