Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 1
Регистрация: 17.09.2014
Сообщений: 46

Насыщенность цвета

25.12.2014, 07:25. Показов 3942. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Стоит задача - закрасить первый пиксель в заданный цвет, в котором составные имеют высокое значение, например - 254, 252, 251. Далее - в зависимости от следующего значения, например "длина", закрасить ряд пикселей с нарастающей насыщенность. Например, конечное значение должно составлять - 254, 84, 0. Это всё оранжевый цвет, первый пиксель слева выглядит почти белым, последний - яркий насыщенный оранжевый.

Далее приходят новые значения цвета, например - 240, 244, 254, это в районе синего цвета. И так же, в зависимости от значения "длина", закрасить следующий ряд пикселей с увеличением насыщенности.

Пытаюсь вывести какое-то подобие формулы, но в зависимости от разницы между R, G и B, она имеет разный вид. Чего-то единого не получается. Существует ли возможность задать цвет и указать его насыщенность? Так, чтобы указать всему ряду искомые начальные значения, но с увеличением «длина» поднимать и насыщенность? Или возможно есть иной способ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2014, 07:25
Ответы с готовыми решениями:

Изменить яркость и насыщенность цвета
Здравствуйте! Возник такой вопрос: как программно изменять яркость и насыщенность цветов у мувик клипа. В сети нашел инфу о классе...

Цветовая насыщенность
Добрый день! подскажите пожалуйста, существует ли способ программно (или как нить еще) придать цветовую насыщенность изображению на...

Насыщенность ключевиками - не перебощить бы.
Знаю что Яндекс плохо отностися, а то и банит, если страница просто насыщена ключевиками, при этом текст несвязанный. А вот например ...

29
0 / 0 / 1
Регистрация: 17.09.2014
Сообщений: 46
25.12.2014, 11:35  [ТС]
Студворк — интернет-сервис помощи студентам
Вот скрин из ФШ с исходным цветом, который находится в центре звезды. Ближе к краю она залита тем же цветом, но более насыщенным. Это разве искажение?
Миниатюры
Насыщенность цвета  
0
es geht mir gut
 Аватар для SoftIce
11275 / 4761 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
25.12.2014, 11:39
А почему бы не от края (где цвет более насыщен) скакать к центру(где не пойми какой цвет) ?
0
0 / 0 / 1
Регистрация: 17.09.2014
Сообщений: 46
25.12.2014, 11:42  [ТС]
Это уже я залил его такой насыщенностью, подбирая варианты. Звезда в центре всегда ярче. Именно от него и прискакал до края.
0
0 / 0 / 1
Регистрация: 17.09.2014
Сообщений: 46
25.12.2014, 11:47  [ТС]
Вот исходный вариант этой звезды. Недоюстированный телескоп немного размазывает звезду и вносит хроматизм. Однако вся информация о цвете ещё остаётся.
Изображения
 
0
es geht mir gut
 Аватар для SoftIce
11275 / 4761 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
25.12.2014, 12:20
Может тогда лучше сделать как-то так?

Visual Basic
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
Option Explicit
 
Private Sub Command1_Click()
    Dim R As Integer, G As Integer, B As Integer, D As Integer, X As Integer, Y As Integer
     R = 224
     G = 222
     B = 253
     D = 100 ' диаметр звезды
     X = 0   ' координаты центра звезды
     Y = 50  ' координаты центра звезды
     DrawStar R, G, B, D, X, Y
End Sub
 
Private Sub DrawStar(ByVal Red As Integer, ByVal Green As Integer, ByVal Blue As Integer, ByVal Diametr As Integer, ByVal X As Integer, ByVal Y As Integer)
    Dim m As Integer, i As Single, j As Integer
    Dim R As Single, G As Single, B As Single
    R = Red: G = Green: B = Blue
    For i = 0 To 6.28 Step 0.01
         R = Red: G = Green: B = Blue
         For j = 1 To Diametr
              R = R - 100 / Diametr: If R < 0 Then R = 0
              G = G - 100 / Diametr: If G < 0 Then G = 0
              B = B - 100 / Diametr: If B < 0 Then B = 0
              PSet (Cos(i) * j + X, Sin(i) * j + Y), RGB(R, G, B)
         Next j
    Next i
End Sub
 
Private Sub Form_Load()
    Me.Height = Me.Width
    Me.AutoRedraw = True: Me.ScaleMode = 3: Me.Scale (-200, 200)-(200, -200)
End Sub
0
es geht mir gut
 Аватар для SoftIce
11275 / 4761 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
25.12.2014, 12:23
Цитата Сообщение от Неуч Посмотреть сообщение
Вот скрин из ФШ с исходным цветом, который находится в центре звезды. Ближе к краю она залита тем же цветом, но более насыщенным. Это разве искажение?
Кстати, да, искажение цвета. Синий явно преобладает на краях.
0
es geht mir gut
 Аватар для SoftIce
11275 / 4761 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
25.12.2014, 18:02
Вот без искажений как будет примерно

Visual Basic
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
Option Explicit
 
Private Sub Command1_Click()
    Dim R As Integer, G As Integer, B As Integer, D As Integer, X As Integer, Y As Integer
     R = 200
     G = 200
     B = 256
     D = 130  ' диаметр звезды
     X = 0   ' координаты центра звезды
     Y = 50  ' координаты центра звезды
     DrawStar R, G, B, D, X, Y
End Sub
 
Private Sub DrawStar(ByVal Red As Integer, ByVal Green As Integer, ByVal Blue As Integer, ByVal Diametr As Integer, ByVal X As Integer, ByVal Y As Integer)
    Dim R As Single, G As Single, B As Single, dR As Single, dG As Single, dB As Single
    Dim i As Single, j As Integer, m As Single
    dR = Red / Diametr: dG = Green / Diametr: dB = Blue / Diametr
    R = Red / 5: G = Green / 5: B = Blue / 5
    For i = Diametr To 0 Step -1
              R = R + dR: G = G + dG: B = B + dB
              Circle (X, Y), i, RGB(R, G, B)
    Next i
End Sub
 
Private Sub Form_Load()
    Me.Height = Me.Width
     Me.AutoRedraw = True: Me.ScaleMode = 3: DrawWidth = 3: Me.Scale (-200, 200)-(200, -200)
End Sub
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
25.12.2014, 19:53
Цитата Сообщение от Неуч Посмотреть сообщение
Я занимаюсь астрофотографией, звёзды получаются белыми, но всё же значения составляющих дают надежду выправить цвет на исходный. Ради этого и пытаю вас глупыми вопросами.
Вычитай минимум компонентов пикселя из каждого компонента и умножай на величину.
0
0 / 0 / 1
Регистрация: 17.09.2014
Сообщений: 46
26.12.2014, 06:16  [ТС]
Увы, от цвета к цвету нет линейной зависимости. Например, если начальные значения - 254-252-251, то при полном насыщении они принимают значения 254-84-0. А изменение в синем канале всего лишь на единицу уже приводят к 254-127-0. Если же 254-252-180, то 254-247-0.
Если цвета изменять синхронно, то получаем движение значений по левой стороне окна "Палитры" сверху вниз, а это область серого. Требуется же - движение направо, в область насыщенности.

Вот результат при линейном уменьшении.
Миниатюры
Насыщенность цвета  
0
0 / 0 / 1
Регистрация: 17.09.2014
Сообщений: 46
26.12.2014, 11:51  [ТС]
Лучший ответ Сообщение было отмечено The trick как решение

Решение

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

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim m As Integer, j As Integer
    Dim R As Single, B As Single
    Dim s As Single
    Dim color As Long, hue As Integer, sat As Integer, lum As Integer
    Static n
      R = среднее(1, 1): G = среднее(1, 2): B = среднее(1, 3)
     color = RGB(R, G, B)
 
    For s = 0 To 6.28 Step 0.01
         n = 240
         For j = 1 To радиус(3)
                ColorRGBToHLS color, hue, lum, sat
                n = n - 60 / j
                sat = n
                lum = 220 - 70 * j / радиус(3)
                color = ColorHLSToRGB(hue, lum, sat)
              Frm1_Редактор.Pct_Результат.PSet (Cos(s) * j + столбец, Sin(s) * j + строка), color '
         Next j
         n = 0
    Next s
Миниатюры
Насыщенность цвета  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.12.2014, 11:51

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

Яркость, контрастность и насыщенность в RGB
Чтобы увеличить/уменьшить яркость, надо R, G и B увеличивать/уменьшать на одинаковую величину. А как увеличить/уменьшить контрастность и...

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

Насыщенность шрифта в андроид браузере
Здравствуйте. У меня некорректно отображается насыщенность шрифта. &lt;span class=&quot;bold&quot;&gt;Текст&lt;/span&gt; .bold...

Как увеличить насыщённость (цветность) в играх?
Добрый день. Я люблю, когда цветности побольше. У меня на мониторе не регулируется насыщенность. Увеличение насыщенности интерфейса Windows...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru