|
|
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Давно искал формулы для работы с цветом, наверное плохо искал, но так и не пришел к простым и понятным формулам, в которых можно было бы выставить имеющиеся ( R,G,B ) и поменять их значениями, типа - цвет, яркость, контрастность . Поэтому попытался написать свои в этой программе... Программа (формулы - в окошке, снизу по центру "оставить галочку на - поменять цвет RGB") С кодом дружу плохо, все тормозит и антивирусники ругаются.. Может кто-то знает нормальные "формулы"? Заранее благодарен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 09:49 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Из Гугла: Яркость (стандартная для определенных цветовых пространств): (0.2126*R + 0.7152*G + 0.0722*B) Luminance (вариант 1): (0.299*R + 0.587*G + 0.114*B) Luminance (вариант 2, медленнее для вычисления): sqrt( 0.241*R^2 + 0.691*G^2 + 0.068*B^2 ) или sqrt( 0.299*R^2 + 0.587*G^2 + 0.114*B^2) Судя по обсуждениям, 3-я формула наиболее точная. Остальные формулы найдете в Гугле сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 10:17 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Это новый вирус такой - через docx распространяется ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 10:30 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
GraphUtil.ColorRGBToHLS GraphUtil.ColorHLSToRGB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 10:39 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
d7i, Ну вот я подставлю свои значения R,G,B в эту формулу "sqrt( 0.299*R^2 + 0.587*G^2 + 0.114*B^2)" А как сделать яркость больше, меньше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 10:40 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Не программным способом, а с помощью формул ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 10:46 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
schi, После скачивания вордовского документа, у него почему-то теряется формат. В имени файла дописываю .docx и тогда открывается.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 10:51 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, вордовский документ в виде изображения пытался загрузить.. :\ Поменять цвет (R,G,B) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 11:00 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Ученик_333Не программным способом, а с помощью формул Посмотри на реализацию этих методов, там и найдёшь формулы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 11:03 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Ученик_333d7i, Ну вот я подставлю свои значения R,G,B в эту формулу "sqrt( 0.299*R^2 + 0.587*G^2 + 0.114*B^2)" А как сделать яркость больше, меньше? Вычисляем текущую яркость: Y=sqrt(0.299*R^2 + 0.587*G^2 + 0.114*B^2); Измененная яркость (умноженная на коэффициент К): Y1=K*sqrt(0.299*R^2 + 0.587*G^2 + 0.114*B^2); Значение Y1 нам известно. Вычисляем новые значения RGB и устанавливаем их. Как быстрее и точнее вычислить - ищите в Гугле. Там всё есть, только искать надо уметь. От себя: в данной задаче легче будет работать через HLS-модель, а не RGB. Формулы преобразований моделей найдете в интернете. Заодно изучите вопрос о цвете в общем. Там не всё так просто... Творите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 11:15 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Ученик_333Давно искал формулы для работы с цветом, наверное плохо искал, но так и не пришел к простым и понятным формулам, надо было Википедию почитать что ли.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 11:24 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
d7iСудя по обсуждениям, 3-я формула наиболее точная. Сомнительно это очень. Все формулы - ни что иное, как попытка адаптации под психофизику человеческого зрения. И там все должно быть линейно, эвклидовой метрики неоткуда взяться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 12:20 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
[quot Соколинский Борис]d7iэвклидовой метрики неоткуда взяться. В приводимых формулах Евклидова метрика не при чем. Это чисто эмпирический подход. Можно нашлепать и еще формулы: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Я, например, на практике для уточнения коэффициентов использовал метод минимального контраста с серым, рассчитанная яркость которого равна рассчитанной яркости исходного цвета (нужен калиброванный экран). (Почему-то не получается вставить картинку). Чтобы не ломать голову, для изменения яркости в процентах вполне подходит функция ColorAdjustLuma (external 'Shlwapi.dll', примеры поищите в интернете). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 13:06 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Контрастность не может быть применена к цвету, если что. Контрастность - это отношение яркости, как минимум, двух цветов. Про оттенок и яркость уже сказали - их всяко удобно менять в HLS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 13:34 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Сергей NВ приводимых формулах Евклидова метрика не при чем. Это чисто эмпирический подход. Но Вы же ей пользуетесь когда возводите в квадрат, суммируете и извлекаете корень. Это применимо для измерения расстояний но совершенно не соответствует принципу работы зрительного анализатора (он устроен весьма сложно, поэтому простые линейные формулы тоже плохо работают). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 13:48 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Вот теперь Ученик_333, наверное, уже понял во что он вляпался... Работа с цветом и его характеристиками не очень простая. Там не только несколько моделей, но ещё и кучу цветовых профилей нужно использовать применительно к целевому устройству и назначению. Достаточно посмотреть на всю эту кухню , к примеру, в фотошопе, чтобы убедится что это далеко не травиальная задача, которая сводится к паре формул... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 13:57 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Нужны формулы элементарно разжеванные как здесь, ! поставил свои значения и ковыряешься в носу !.... У меня процедура получилась очень большая, есть ли что-то подобное, только компактнее? (В виде формул! + - все дела) Красным вы вводите нужное вам значение, синим выделен полученный на выходе результат... R := вставить число от 0 до 255; G := … ; B := … ; // Свое значение "RGB" Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. // Чтобы оставить знач. цвета в прежнем состоянии (Xall = Xmain+1) Xall := вставить число от 0 до 1531; // Поменять Цвет (Координата выбранной ячейки с цветом, по оси X) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. // Чтобы оставить знач. яркости в прежнем состоянии (Yarkost = Light*2) Yarkost := вставить число от 0 до 508 / 2; // Поменять Яркость // Чтобы оставить знач. контрастности в прежнем состоянии (Zcontrast = Z) Zcontrast := вставить число от 0 до 127; // Поменять Контрастность Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. // Результат "RGB" Сопоставить полученные результаты (RGBmid, RGBmin, RGBmax) с (R, G, B) R:=Trunc(abs((Trunc(Rm/2)*(RGBmax2+RGBmid2))+(Trunc(1/(Rm+1))*(RGBmin2+RGBmid2))-RGBmid2)*BGW + Yarkost*(1-BGW)); G:=Trunc(abs((Trunc(Gm/2)*(RGBmax2+RGBmid2))+(Trunc(1/(Gm+1))*(RGBmin2+RGBmid2))-RGBmid2)*BGW + Yarkost*(1-BGW)); B:=Trunc(abs((Trunc(Bm/2)*(RGBmax2+RGBmid2))+(Trunc(1/(Bm+1))*(RGBmin2+RGBmid2))-RGBmid2)*BGW + Yarkost*(1-BGW)); Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Небольшая программка с примером конкретно этих формул (вместе с исходниками "Delphi") Большая программа, понапихано все подряд (без исходников) Большая программа, понапихано все подряд (с исходниками "Delphi") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 15:42 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
schiКонтрастность - это отношение яркости, как минимум, двух цветов Сергей Nметод минимального контраста с серым что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 19:25 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисСергей NВ приводимых формулах Евклидова метрика не при чем. Это чисто эмпирический подход. Но Вы же ей пользуетесь когда возводите в квадрат, суммируете и извлекаете корень. Это применимо для измерения расстояний но совершенно не соответствует принципу работы зрительного анализатора (он устроен весьма сложно, ...). В плане физики вроде норм, это не расстояние, это энергия. У каждого цвета свой диапазон длин волн и соответственно энергия. Весь вопрос в нормировочных коэффициентах и их корректировке в плане физиологии человеческого глаза ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2018, 08:49 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Энергия - скаляр, а формула явно для векторов. ЕМНИП, правильная формула все же линейная, но с переменными крэффициентами, которые зависят от точки белого (white point), а она тоже может плавать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2018, 09:20 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, это да, но у каждого цвета своя энергия, а спектр по цветам и есть вектор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2018, 10:40 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Соколинский Борисkealon(Ruslan), правильная формула все же линейная, но с переменными крэффициентами, которые зависят от точки белого (white point), а она тоже может плавать. По сути, Вы говорите об относительном сером цвете с максимальной яркостью (термин не очень подходит) для данного источника (монитора). Про зависимость от точки белого я согласен, но, к сожалению, мне не удалось свести с приемлемой точностью известные линейные функции с визуальной сравнительной оценкой соответствующего серого цвета. Мой опыт дал противоположный результат. Гораздо быстрее удавалось свести квадратичные функции (энергетические или интенсивностные). Так что я согласен с kealon. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2018, 11:21 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyGraphUtil.ColorRGBToHLS GraphUtil.ColorHLSToRGB schi Про оттенок и яркость уже сказали - их всяко удобно менять в HLS HLS модель не подходит, т.к. хотелось бы работать со всеми имеющимися цветами без потерь... Из-за введенных констант в формулах типа - (Y = 0.299 * R + 0.587 * G + 0.114 * B) нет уверенности, что учитывается весь диапазон цвета (16 777 216 цветов). В этой программе я расставил все цвета таким образом, чтобы они не терялись и не повторялись... (каждый, конечно, не проверял, но вроде бы все на своих местах) Только в формулах очень много лишнего, если постараться, то можно написать и покороче, но я не математик... Arioch надо было Википедию почитать что ли.... d7i ищите в Гугле. Там всё есть Еще раз перелопатил весь интернет в поисках нужного алгоритма, но опять столкнулся с тем, что в каждой найденной теме используются константы. Очевидно - глаза у всех видят по разному, а значит что и константа нужна лишь затем, чтобы сформировать конкретный диапазон цвета, под конкретного человека + нужно учитывать, что каждый монитор показывает цвета по разному, так что смысл не в том, чтобы подгонять цвета под константы, а в том, чтобы расставить их в таком порядке, в каком они используются в природе. (та же радуга к примеру или преломление света через призму) (1 0 0) (255 0 0) (255 254 254) - Красный (темный,чистый,светлый) (1 1 0) (255 255 0) (255 255 254) - Желтый (темный,чистый,светлый) (0 1 0) (0 255 0) (254 255 254) - Зеленый (темный,чистый,светлый) (0 1 1) (0 255 255) (254 255 255) - Голубой (темный,чистый,светлый) (0 0 1) (0 0 255) (254 254 255) - Синий (темный,чистый,светлый) (1 0 1) (255 0 255) (255 254 255) - Фиолетовый (темный,чистый,светлый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2018, 10:51 |
|
||
|
Цвет, яркость, контрастность...
|
|||
|---|---|---|---|
|
#18+
Относительно "радуги" лично у меня имеются большие сомнения... Там один цвет (голубой) явно притянут за уши. Судите сами: есть 3 основных цвета - красный,желтый,синий. И между ними 3 дополнительных (смеси соседних): красный+желтый=оранжевый желтый+синий=зеленый синий+красный=фиолетовый Итого имеем: красный-оранжевый-желтый-зеленый-синий-фиолетовый Голубой сюда просто не вписывается, так как является частью синего. В мониторах (телевизорах и т.д.) желтый цвет вообще заменен на зеленый (RGB). Отсюда начинают вылезать формулы с разными коэффициентами для адаптации к зрению человека. Для адаптации к другим устройствам синтеза цветов (принтеры, типографские машины и т.п.) эти коэффициенты получаются везде разные. Так что не всё так просто и от формул с коэффициентами избавиться не удастся, так как все формулы адаптированы под человека. Можете их упростить, но тогда они будут под непонятно кого. Может для робота-андроида сгодятся, если его зрение будет работать именно по этим формулам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2018, 11:31 |
|
||
|
|

start [/forum/topic.php?fid=58&startmsg=39684618&tid=2038199]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
147ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 495ms |

| 0 / 0 |
