Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2014, 09:59   #1
Speeker
Форумчанин
 
Аватар для Speeker
 
Регистрация: 01.12.2006
Сообщений: 241
По умолчанию Приведение к заданому цвету.

Есть база данных доступных цветов в формате RGB. И есть изображение в компоненте image. Необходимо привести пиксели из оригинального цвета к цвету максимально близкому из базы цветов. У кого какие идеи есть? Сам пробовал брать запросом в цикле пока не появится хотя бы один цвет +- n от заданого каждый раз при отрицательном результате увиличивая n на единицу.... получалось адски долго.... может у кого есть что то более презентабельное?

Код:
n:=0;
            repeat  
               aq1.SQL.Clear;
               aq1.SQL.Add('Select * from color_tbl where (r>='+inttostr(r+n)+') and(r<=' +inttostr(r-n)+')' +'and (g>='+inttostr(g-n)+') and(g<=' +inttostr(g+n)+')'+'and (b>='+inttostr(b+n)+') and(b<=' +inttostr(b-n)+')');
               aq1.Active:=true;
               n:=n+1   ;
               until (aq1.RecordCount>0) or (n>255);
               if aq1.RecordCount>0 then
               begin
               r:=AQ1R.Value;
               g:=aq1g.Value;
               b:=aq1b.Value;
               end  ;
Програмисты - единственные люди, которым платят за исправления их же ошибок

Последний раз редактировалось Speeker; 09.07.2014 в 10:03.
Speeker вне форума Ответить с цитированием
Старый 09.07.2014, 10:17   #2
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

База данных цветов -- это что-то вроде квантования? Посмотри, например, как делается перевод в 256 цветов при кодировании в GIF. Конкретное количество цветов не имеет значения, алгоритм квантования универсален.
Vapaamies вне форума Ответить с цитированием
Старый 09.07.2014, 10:40   #3
Speeker
Форумчанин
 
Аватар для Speeker
 
Регистрация: 01.12.2006
Сообщений: 241
По умолчанию Наверное это не совсем то

В результате квантования, на сколько я понял, идет приведение к снижению количества цветов, но не идет к привязке к конкретному цвету. А тут именно необходимость для построения аналогичного рисунка используя только заданые цвета. Задача не стоит в уменьшении размера изображения, задача стоит в замене недоступных цветов доступными, наиболее близкими по значению
Програмисты - единственные люди, которым платят за исправления их же ошибок

Последний раз редактировалось Speeker; 09.07.2014 в 10:47.
Speeker вне форума Ответить с цитированием
Старый 09.07.2014, 11:02   #4
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

А теперь перечитай свое сообщение и исключи из него взаимоисключающие параграфы.
Vapaamies вне форума Ответить с цитированием
Старый 09.07.2014, 11:08   #5
Speeker
Форумчанин
 
Аватар для Speeker
 
Регистрация: 01.12.2006
Сообщений: 241
По умолчанию

это о том что снижение размера будет? да будет но это не цель.... юольше чесно говоря не увидел... Возможно потому что я знаю о чом говорю, и кажется что понятно выразился, а со стороны может и не так. Буду юлагодарен если покажете....
Програмисты - единственные люди, которым платят за исправления их же ошибок
Speeker вне форума Ответить с цитированием
Старый 09.07.2014, 11:58   #6
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

Поиск наиболее подходящего цвета из ограниченного набора -- и есть снижение количества цветов.
Vapaamies вне форума Ответить с цитированием
Старый 09.07.2014, 13:35   #7
Speeker
Форумчанин
 
Аватар для Speeker
 
Регистрация: 01.12.2006
Сообщений: 241
По умолчанию

Я ж написал но.... там нет привязки к определенным цветам.... Там поиск плавных переходов и замена пикселов на близкий однородный цвет. А мне необходим поиск наиболее близких цветов к базе
Програмисты - единственные люди, которым платят за исправления их же ошибок
Speeker вне форума Ответить с цитированием
Старый 09.07.2014, 14:00   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

1. Можно заменить >= and <= на between. Побыстрей работает
2. Индексы по полям r, g, b
3. А по HLS не лучше подбор будет?
4. Можно не наращивать на единичку, а с большим шагом брать и если есть результат, то или уменьшать его или программно в полученном наборе перебирать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 09.07.2014 в 14:53.
Аватар вне форума Ответить с цитированием
Старый 10.07.2014, 05:20   #9
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

Цитата:
Сообщение от Speeker Посмотреть сообщение
А мне необходим поиск наиболее близких цветов к базе
В GIF тоже есть приведение к палитре web-safe.
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу по заданому значению аргумента Cool Zero Помощь студентам 2 28.03.2011 22:11
Принадлежит ли точка заданому полю? Katmai Паскаль, Turbo Pascal, PascalABC.NET 4 29.09.2010 14:01
выделить все строки цветом по заданому условию mars56 Microsoft Office Excel 2 15.02.2010 07:55
Поиск процессов по заданому критерию imax Помощь студентам 0 01.05.2009 12:32
Равенство по цвету snakezx Microsoft Office Excel 1 30.03.2009 12:11