Форум программистов, компьютерный форум CyberForum.ru

Преобразование цветов - C++

Восстановить пароль Регистрация
 
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
19.10.2012, 18:50     Преобразование цветов #1
Есть массив байтов 3 на 256 такого вида:
0,0,0
1,1,1
2,2,2
....
255,255,255
Т.е. он представляет собой палитру RGB из черного цвета в белый.

Есть палитра ironbow (картинка внизу)
[img]http://i064.***********/1210/da/8118863964c4.gif[/img]

Нужно математическими преобразованиями переделать значения серой палитры в соответствующие значения палитры ironbow. При этом не допускается напрямую делать матрицу значений и подставлять цвета, нужно именно методом расчета. Смысл всего этого изображен на последней картинке

[img]http://s018.***********/i516/1210/89/e171fd3d3aaa.jpg[/img]
Миниатюры
Преобразование цветов  
Изображения
 
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
19.10.2012, 20:08     Преобразование цветов #2
палитра имеет 7 специальных оттенков (представление в rgb):

C++
1
2
3
4
5
6
7
72, 153, 45 #ISOTERM1 Isotherm 1
229, 160, 22 #ISOTERM2 Isotherm 2
0, 255, 255 #MARKER IR window Area, Line, Spot
0, 0, 255 #RESERVED1
200, 0, 0 #RESERVED2
50, 50, 50 #UNDERFLOW Image underflow
200, 200, 200 #OVERFLOW Image overflow
и 120 оттенков температуры:
C++
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
0, 0, 0
0, 0, 36
0, 0, 51
0, 0, 66
0, 0, 81
2, 0, 90
4, 0, 99
7, 0, 106
11, 0, 115
14, 0, 119
20, 0, 123
27, 0, 128
33, 0, 133
41, 0, 137
48, 0, 140
55, 0, 143
61, 0, 146
66, 0, 149
72, 0, 150
78, 0, 151
84, 0, 152
91, 0, 153
97, 0, 155
104, 0, 155
110, 0, 156
115, 0, 157
122, 0, 157
128, 0, 157
134, 0, 157
139, 0, 157
146, 0, 156
152, 0, 155
157, 0, 155
162, 0, 155
167, 0, 154
171, 0, 153
175, 1, 152
178, 1, 151
182, 2, 149
185, 4, 149
188, 5, 147
191, 6, 146
193, 8, 144
195, 11, 142
198, 13, 139
201, 17, 135
203, 20, 132
206, 23, 127
208, 26, 121
210, 29, 116
212, 33, 111
214, 37, 103
217, 41, 97
219, 46, 89
221, 49, 78
223, 53, 66
224, 56, 54
226, 60, 42
228, 64, 30
229, 68, 25
231, 72, 20
232, 76, 16
234, 78, 12
235, 82, 10
236, 86, 8
237, 90, 7
238, 93, 5
239, 96, 4
240, 100, 3
241, 103, 3
241, 106, 2
242, 109, 1
243, 113, 1
244, 116, 0
244, 120, 0
245, 125, 0
246, 129, 0
247, 133, 0
248, 136, 0
248, 139, 0
249, 142, 0
249, 145, 0
250, 149, 0
251, 154, 0
252, 159, 0
253, 163, 0
253, 168, 0
253, 172, 0
254, 176, 0
254, 179, 0
254, 184, 0
254, 187, 0
254, 191, 0
254, 195, 0
254, 199, 0
254, 202, 1
254, 205, 2
254, 208, 5
254, 212, 9
254, 216, 12
255, 219, 15
255, 221, 23
255, 224, 32
255, 227, 39
255, 229, 50
255, 232, 63
255, 235, 75
255, 238, 88
255, 239, 102
255, 241, 116
255, 242, 134
255, 244, 149
255, 245, 164
255, 247, 179
255, 248, 192
255, 249, 203
255, 251, 216
255, 253, 228
255, 254, 239
255, 255, 249
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
19.10.2012, 20:16  [ТС]     Преобразование цветов #3
К сожалению мне это не подходит, мне нужно использовать математическую зависимость между яркостью и цветом. По заданию мне нужно использовать математическую модель для этой палитры. В графике она выглядит так [img]http://s002.***********/i200/1210/ae/5b824328e635.gif[/img]
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
19.10.2012, 20:21     Преобразование цветов #4
получается, по графику нужно понять в каких диапазонах какой функцией задается компонента?
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
19.10.2012, 20:22  [ТС]     Преобразование цветов #5
В задании этого не сказано. Даже не знаю как действовать. Вроде палитра часто используется, значит по логике должна существовать ее модель... не могли же ее методом тыка сделать. А график я сам составил слив картинку в RGB массив и запихав его в эксель. Я тут нашел инфу что палитра еще называется IR FLIR Thermal Palette и infrared palette, но это тоже не помогло
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
19.10.2012, 20:31     Преобразование цветов #6
значения яркости рассчитывается так
Y=0.3R+0.59G+0.11B
переводи свою
Цитата Сообщение от Damaks Посмотреть сообщение
палитра ironbow
в градации серого и сравнивай с
Цитата Сообщение от Damaks Посмотреть сообщение
массив байтов 3 на 256
по другому никак у серого потеряна информация о цветности и однозначно перевести из серого в цветное не получится, если подставить другую палитру результат будет другим
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
19.10.2012, 20:40     Преобразование цветов #7
Цитата Сообщение от ValeryS Посмотреть сообщение
Y=0.3R+0.59G+0.11B
так это ж для монохромного просто.
rgb нужно перевести в ironbow, как сделать? независимо монохромное оно или нет, есть же преобразование какое-то
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
19.10.2012, 20:41  [ТС]     Преобразование цветов #8
ironbow - одномерная палитра, т.ч. цвет в ней соответствует яркости, чем сильнее принятый сигнал - тем ярче цвет. Я получаю черно-белое изображение в котором каждый пиксель это уровень сигнала, соответственно максимальный и минимальный уровни могут быть разными, и мне нужно относительно них и встраивать эту картину. Картинка должна интуитивно-понятно отображать уровень излучения от объектов http://2.bp.blogspot.com/_moFK8jHyxf...49_600x450.jpg Вот как тут - четко видно что центр теплый. Кстати эта палитра мне тоже бы подошла, но по ней вообще нет инфрмации.
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
19.10.2012, 20:43     Преобразование цветов #9
Damaks, ну эта фотка явно с тепловизора, через ironbow такого не добиться,мне кажется, он же реально не видит ИК спектр
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
19.10.2012, 20:51     Преобразование цветов #10
Цитата Сообщение от Sor Посмотреть сообщение
независимо монохромное оно или нет, есть же преобразование какое-то
Нет такого преобразования если из цветного мы сделали изображение с градациями серого то обратно не вернуть(информация о цветности потеряна)
например есть серый с уровнем 0.3
это может быть и красный
0.3=0.3*1+0.59*0+0.11*0
и половина зеленого(примерно)
0.3=0.3*0+0.59*0.5+0.11*0
и смесь цветов
для этого я и предлагаю добавить в опорную палитру уровень яркости и сравнивать этот уровень с уровнем на изображении
например уровень 255 это в палитре белый задаем белый
227 это уровень желтого в палитре задаем желтый
и так пройтись по всем пикселям
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
19.10.2012, 20:53  [ТС]     Преобразование цветов #11
Вы не совсем понимаете. В моем первом посте есть картинка в которой градации серого переведены в ironbow. Это возможно только по той простой причине что вместо 3 байт (R G B) я получаю 1 байт (яркость) А палитра Ironbow и палитра с тепловизора одномерные, т.е. у них можно сказать одно значение цвета на одно значение яркости - поэтому это возможно.
Вот смотрите - каждому значению серого оттенка соответсвует значение цвеита из палитры [img]http://s015.***********/i333/1210/e1/73424ca098ff.jpg[/img]
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
19.10.2012, 20:56     Преобразование цветов #12
я тебе про что и толкую
в палитру Ironbow добавь значения яркости и потом сравнивай эту яркость с яркостью на картинке
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2012, 21:01     Преобразование цветов
Еще ссылки по теме:

C++ Получение цветов GetBitmapBits()
C++ Как сделать текст на консоли двух цветов?
Массив цветов C++

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

Или воспользуйтесь поиском по форуму:
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
19.10.2012, 21:01  [ТС]     Преобразование цветов #13
Дак в чем и проблема - палитры у меня нет, у меня есть только ее растровое представление, которое нельзя использовать. Мне нужно математическими преобразованиями получить результат. Типо как взять значение яркости домножить на что то, взять интеграл и т.д. и получить значение R, потом G и B
Yandex
Объявления
19.10.2012, 21:01     Преобразование цветов
Ответ Создать тему
Опции темы

Текущее время: 06:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru