Растры в Windows

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

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

    zubr Гость

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

    Pete Гость

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

    zubr Гость

    Репутация:
    0
    Pete

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

    Pete Гость

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

    zubr Гость

    Репутация:
    0
    Pete

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

    Kernel Гость

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

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