Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 13.06.2019, 23:53  
parovoZZ
Почётный гражданин KAZUS.RU
 
Регистрация: 15.11.2010
Сообщений: 2,378
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
parovoZZ на пути к лучшему
Восклицание HSV преобразовать в RGB на 8-ми битной архитектуре

Hi!

Ну всем же известно, что работать в пространстве RGB не очень удобно. А вот в HSV (HSL) - самое оно. Но возникает вопрос - чтобы вывести наружу значения, необходимо их преобразовать в значения отдельных цветовых компонент. RGB.
Что хочется сразу? А сразу хочется конечную палитру цветов. Вот здесь есть отличная статья
http://we.easyelectronics.ru/Soft/cv...nstva-hsv.html
Этот код я срисовал и он работает. Что мне не нравится. Даже при наличии в моей тиньке аппаратного умножителя, на конвертацию уходит 2520 тактов. Это много.
Есть ещё такое решение
https://www.kasperkamperman.com/blog...ng-hsb-to-rgb/
но здесь привязка к 6-ти цветовой палитре и hue 0...360. Если перенос диапазона не представляет сложностей, то вот как воткнуть туда произвольную палитру цветов совсем не догоняю.
Есть еще библиотека FastLed
https://github.com/FastLED/FastLED/
в ней используется 3-х секторное преобразование. Но вот как оно потом переносится в цветовую палитру - понять никак не могу
Так вот вопрос: есть ли у кого какие идеи или даже решения, как преобразовать HSV в RGB в конечном наборе цветов?
Реклама:
parovoZZ вне форума  
Непрочитано 14.06.2019, 10:29  
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,330
Сказал спасибо: 85
Сказали Спасибо 596 раз(а) в 361 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: HSV преобразовать в RGB на 8-ми битной архитектуре

Бегло глянул по ссылке.
Как мне кажется, визуально не сильно пострадает, если делить не на 255, а на 256.
А это значит, что просто нужно взять второй байт из предыдущего результата умножения.
Ну а скорость вычисления должна сильно возрасти.
pambaru вне форума  
Непрочитано 14.06.2019, 16:08  
vladisslav1
Прописка
 
Регистрация: 25.03.2013
Адрес: Глубокое замкадье
Сообщений: 216
Сказал спасибо: 3
Сказали Спасибо 71 раз(а) в 55 сообщении(ях)
vladisslav1 на пути к лучшему
По умолчанию Re: HSV преобразовать в RGB на 8-ми битной архитектуре

Нашел проект гирлянды на пикселях ws2811/ws2801 с али.
У меня там такой странный код:
Код:
struct rgb
{
	uint8_t r;
	uint8_t g;
	uint8_t b;
};


struct hsv
{
	uint8_t H;
	uint8_t S;
	uint8_t V;
};

void hsv_to_rgb1(struct hsv * in,struct rgb * out,int cnt)
{
	int k;
	for(k=0;k<cnt;k++)
	{
		uint16_t Vmin=(255-in[k].S);
		Vmin*=in[k].V;
		Vmin/=256 ;
		uint16_t a=(in[k].V-Vmin);
		a*=(in[k].H%42);
		a/=42;
		uint8_t Vinc=Vmin+a;
		uint8_t Vdec=in[k].V-a;
		switch (in[k].H/42)
		{
		case 0:
			out[k].r=in[k].V;
			out[k].g=Vinc;
			out[k].b=Vmin;
		break;
		case 1:
			out[k].r=Vdec;
			out[k].g=in[k].V;
			out[k].b=Vmin;
		break;
		case 2:
			out[k].r=Vmin;
			out[k].g=in[k].V;
			out[k].b=Vinc;
		break;
		case 3:
			out[k].r=Vmin;
			out[k].g=Vdec;
			out[k].b=in[k].V;
		break;
		case 4:
			out[k].r=Vinc;
			out[k].g=Vmin;
			out[k].b=in[k].V;
		break;
		case 5:
			out[k].r=in[k].V;
			out[k].g=Vmin;
			out[k].b=Vdec;
		break;
		}
	}
}
Работает, конечно, не очень точно... Но для гирлянды вполне приемлимо.
vladisslav1 вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 22:00.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot