Форум по Delphi программированию

 



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.03.2020, 18:28
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 68
Репутация: 518
По умолчанию Delphi 6-7 Работа с данными тепловизора

Задача - сграбить с экрана фирменной утилиты тепловизора термограмму и найти температуры нужных точек перемещая мышь по изображению.
Фирменная утилита в своей форме в ОНЛАЙН показывает как веб-камера красочное изображение температурного поля, рядом горит шкала палитры от синего до

красного и второй вариант - как радуга.
Границы температур заданы +18 до +103С, тоесть я точно знаю что самый синий это +18 а самый красный +108 градусов цельсия. Всего точек - 310 штук. Накидав

код переходя одного цвета в другой я рисую палитру и по коэффициенту получаю зависимость цвет-температура...
Но, как всегда НО... палитра прибора содержит зелёный цвет!!! сравнив их визуально а потом и разложив на RGB. У меня нет оттенка жёлтого а у них есть.

Сравнивая чисто по величине TColor (R,G,B)я почти попадаю в цвет, но иногда сумма цветов даёт такое число что попадает в границу отличную от искомой - так

как цвета не чистые.. Причём с радугой ещё сложнее!! там цвета дважды уходят в максимум и минимум!! и одно число скажем 8934546+-50 будет и внизу палитры

и вверху палитры а цвет то сильно будет отличаться!!! по этому прямое сравнение по числу TColor не катит.
Есть другие модели HSV/CMYK - но они же не годятся для захвата с экрана и конвертация всегда идёт с ошибками.
Какая модель использована и как можно вычислить палитру? (фирмачи SDK не дают )
Пример 3х палитр во вложении.
Изображения
Тип файла: jpg палитры ti400.jpg (17.8 Кбайт, 0 просмотров)
Ответить с цитированием
  #2  
Старый 26.03.2020, 19:23
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 124
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

У TColor цветовая модель не RGB, а BGR (если я правильно помню), т.е. два цвета переставлены местами. Сам когда-то наступил на эти грабли...
Ответить с цитированием
  #3  
Старый 27.03.2020, 15:05
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 68
Репутация: 518
По умолчанию

Да, это так, но я цвета не в ручную вытаскиваю а стандартными функциями.
Как найти формулу расчёта палитры разложенной на составляющие.. ил перевести её в HUE/CMUK.. чтобы получить линейную зависимость. Наврняка же использована готовая технология/формула.
Ответить с цитированием
  #4  
Старый 01.04.2020, 01:52
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,582
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Для CMYK в D7 есть готовые функции (см здесь пример, ну и можешь просто использовать этот класс для удобства: https://www.tek-tips.com/faqs.cfm?fid=7480)
Перевод в HSV см тут: https://www.swissdelphicenter.ch/en/...de.php?id=2349
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Guaho (04.04.2020)
  #5  
Старый 15.04.2020, 04:04
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 68
Репутация: 518
По умолчанию

Да, спасибо, я выбрал палитру сине-красную, так как она имеет по одному переходу мин/макс каждого цвета. Радуга вообще по 2 на каждый цвет...
Для сравнения точки палитры и точки под указателем мыши на картинке по началу пробывал тупо сравнивать каждый цвет с кажрым цветом - ничего не совпадало!!! причём совсем, в плодь до разброса на границы палитры.. потом осенило - надо считать среднеквадратичную погрешность - возводим все цвета (разности) в квадрат, суммируем и корень - чем получаем число тем ближе искомая точка к палитре, точность получил 2 градуса!!, а проведя корректировку границ палитры можно и в 0.5 на нужном диапазоне шкалы, края конечно немного заваливаются в шибки при этом, но там мне точность не нужна. И важное - надо отключить "прозрачность" - это дополнительная погрешность цветов!!! - наложение термограммы на видео поток. Думаю что задача решена на 50%, так как формула оригинальной палитры так и не получена..
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2020

ВКонтакте   Facebook   Twitter