из RGB в Lab..

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sofist
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 04.02.2007 (Вс) 19:19

из RGB в Lab..

Сообщение Sofist » 09.02.2007 (Пт) 10:36

Подскажите как перевести изображение из системы RGB в систему Lab?. Вот из RGB в WB переводится так WB = (1/4) * R + (7/12) * G + (1/6) * B. А как в Lab?? Подскажите кто знает..

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 09.02.2007 (Пт) 11:32

А для чего? Если я не ошибаюсь, цветовой охват этой системы гораздо больше rgb, cmyk и даже cmyk32. Lab описывает всё цветовое пространство которое может углядеть человек. И если я правильно понял цвет rgb из лаб получают с помощью матрицы, т.е. просто ставя в соответствие один цвет другому. Хотя наверняка есть какие то хитроумные формулы.. я это всё к тому, что эта модель "слишком абстрактна и матимизирована чтобы с ней работать на практике."

Покуртил модельку в кореле.. понял только, что L - это яркость, a - красный/зелёный компонент, b - синий/жёлтый компонент. L изменяется 0 до 100, а и b от -128 до 127

(54 81 76) - это красный. Как он получается я не знаю)

Sofist
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 04.02.2007 (Вс) 19:19

Сообщение Sofist » 09.02.2007 (Пт) 11:40

Я с помощью этого хочу попытаться избавиться от тени при сравнении двух изображений. И меня интересует именно L-канал, т.к. это действительно яркость. И если каналы а и b на обоих изображениях одинаковы, а различается только L-канал, то, я думаю, это будет говорить о том, что на одном из изображений присутсвует тень.. и, следовательно, появится возможность избавиться от нее. с помощью RGB избавиться мне от тени не удается..

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.02.2007 (Пт) 12:00

Если нужна именно яркость, то легче перевести в HSV. Для этого есть стандартная функция в shlwapi.
Изображение

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 09.02.2007 (Пт) 16:42

Если под тенью понимать равномерное уменьшение яркости - то можно просто проверить чтобы R, G, и B отличались на одно и то же число.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 09.02.2007 (Пт) 16:57

Я в таких случаях перевожу RGB в модель HSL. Алгоритм могу выслать.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Sofist
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 04.02.2007 (Вс) 19:19

Сообщение Sofist » 10.02.2007 (Сб) 7:00

BV, буду очень признателен, если вышлешь алгоритм на sofist@bk.ru
Заранее спасибо..

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.02.2007 (Сб) 7:16

Зачем алгоритм, когда есть готовая стандартная функция? :roll:
http://bbs.vbstreets.ru/viewtopic.php?p=60200#60200
Изображение

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 10.02.2007 (Сб) 9:26

Например, затем, что её нет в Win95/WinNT 4?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Sofist
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 04.02.2007 (Вс) 19:19

Сообщение Sofist » 11.02.2007 (Вс) 20:59

Огромное спасибо всем, кто помог разобраться с проблемой!! :cheers: Все получилось и все теперь работает как надо!! СПАСИБО!!!!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 81

    TopList