Russian Qt Forum
Сентябрь 30, 2024, 06:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: как правильно сложить компоненты цвета  (Прочитано 4762 раз)
XXCoder
Гость
« : Март 06, 2007, 14:40 »

Работаю с QImage. вот так я беру цвет пиксела и компоненты цвета РГБ
c=baseImage->pixel(i,j);            
colR=qRed(c);            
colB=qBlue(c);            
colG=qGreen(c);
// и так несколько раз в соответствие с алгоритмом
...
потом

colBAntialiased=((colB+colB1+... + colBN)/N);     // смешиваю компоненты синего цвета      
b=qRound(colBAntialiased); //собираю в синюю компоненту
...
resultPixel=setRgb(a,g,b); //собираю пиксел с новыми характеристиками

ВОПРОС: как правильно взять процентное отношение цвета, если я делаю colB*0,5 - - этот цвет становится черным.

Помогите как взять правильно процент цвета пиксела, пожалуйста.

Спасибо.
Записан
Alex03
Гость
« Ответ #1 : Март 06, 2007, 16:22 »

Цитата: "XXCoder"

ВОПРОС: как правильно взять процентное отношение цвета, если я делаю colB*0,5 - - этот цвет становится черным.

Помогите как взять правильно процент цвета пиксела, пожалуйста.

Во первых не очень понятно какого типа у Вас переменные цветовых компонент. Если плавучка то всё должно получаться.
Вот только медленная она. Тут можно вовсю целочисленные вычисления с фиксированной точкой пользовать.

Один из простых вариантов реализации фильтра, и блюра в частности, с использованием матрицы весовых коэффициентов 3х3 типа:
1 2 1
2 4 2
1 2 1
Записан
XXCoder
Гость
« Ответ #2 : Март 06, 2007, 16:54 »

double, промежуточные все такие, я потом округляю перед тем как собрать цвет. это я скейлинг делаю со сглаживанием.
Записан
Alex03
Гость
« Ответ #3 : Март 07, 2007, 08:16 »

Да всё должно работать в дабле.
Т.к. значений у компонента цвета всего 256, то 32-х разрядов вполне хватает для целочисленных вычислений.

Для скейлинга самое простое билинейная интерполяция. (точнее самое простое - ближайший пиксел, но часто неприемлим)
Записан
XXCoder
Гость
« Ответ #4 : Март 07, 2007, 11:45 »

какие есть еще методы скейлинга... если уменьшение больше чем 1/3 то получается очень плохое изображение.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.04 секунд. Запросов: 21.