Растры в Windows

Тема в разделе "MS Visual C++", создана пользователем zubr, 8 авг 2004.

Статус темы:
Закрыта.
  1. zubr

    zubr Гость

    У меня такая проблема: при копировании аппаратно-независимого растра TrueColor в 256-цветный, цвета передаются не совсем корректно. Использую системную палитру. Может кто подскажет как сделать палитру, чтобы цвета отображались максимально корректно.
     
  2. Pete

    Pete Гость

    Нужно создавать адаптивную палитру, то есть такую которая наиболее близко с визуальной точки зрения описывает более многоцветное изображение. Например, как простейший вариант, посчитать гистограмму цветов, то есть сколько пикселов каждого цвета встречается на изображении и затем выбрать максимальные по количеству пикселов цвета. Проблема только в том, что нельзя построить функцию сравнения цветов, так как у цвета может быть 3-4 цветовые координаты.
     
  3. zubr

    zubr Гость

    Pete

    Спасибо, попробую. Я делал немного не так. Взял картинку с небольшим количеством цветов - всего 67, из массива графических данных определил цвета и внес их в палитру, в итоге получилось еще хуже чем с системной палитрой.
     
  4. Pete

    Pete Гость

    Странно такого быть не должно, так как потеря информации происходит только когда цветов больше в картинке, чем задано ограничением в 256 цветов. Кажется мне что ты перепутал порядок следования байтов в DIB =) BGR а не RGB.
     
  5. zubr

    zubr Гость

    Pete

    Да, ты прав, я размещал в последовательности RGB - попробую наоборот.
     
  6. Kernel

    Kernel Гость

    1. Что значит цвета сравнивать нельзя ... можно по квадрату расстояния, по интенсивности, и по куче других характеристик
    2. У цветов не бывает 4 цветовых компоненты - альфа не является "цветовой"
    3. Если ты не уменьшив кол-во цветов ухудшил качество картинки то скорее всего ты либо а) не попал в индексы палитры либо б) вообще не заменил системную на свою (тоже бывает забывается сделать) ... т.к. если бы проблема была только в переставленных R и B каналах это было бы заметно невооружённым глазом :)
    4.
    с таким подхлдом получится полная фигня - в большинстве изображений цвета довольно плотно сконцентрированны в какой то области цветового пространства - и обработка портрета таким методом приведёт к тому чо облака на заднем плане будут цвета лица ...
    на самом деле если надо сделать простейший вариант введи линейное квантование цветового пространства - быстро и в большинстве случаев нормально ... если не хвотает - делай адаптивную палитру просто из гипотезы компактности возми допустим алгоритм FOREL и примени его к цветовому пространству ... если и этого недостточно - diffusion dither тебе поможет
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей