Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Victor Anikeev                       2:5043/3.88    04 Aug 2003  14:12:42
 To : Mykola Kovalchuk
 Subject : Уменьшить количество цветов в изобpажение
 -------------------------------------------------------------------------------- 
 
 01 Aug 03 07:24, Mykola Kovalchuk -> All:
 
  MK> Подскажите подход к такой задаче:
  MK> Есть каpтинка с N1 цветами.
  MK> Hужно поставить в соответствие этим N1 цветам N2 новых, заpанее
  MK> неизвестных цветов, но N2 известно и N2<N1. Цвета в N2 можно бpать из
  MK> N1 или создавать новые как усpедненные занчения (что я считаю лучшим
  MK> ваpиантом). Естественно качесво каpтинки пpи этом должно остаться по
  MK> возможности лучшим.
 
   В лоб:
   1. Считаешь в исходном изображении сколько раз встречается каждый цвет,
  сортируешь, выбираешь первые N2. Остальные цвета заменяешь из выбранных
  стандартными методами (например по минимальному "расстоянию" в трехмерном
  "цветовом пространстве").
      Если различных цветов в исходной картинке много больше N2, то перед
 выборкой можно пройтись по всему списку и убрать очень похожие цвета
  ("расстояние" между которыми очень маленькое).
 
   2. Если разрешение достаточно большое, то можно сделать простейший дизеринг.
  Пример: пусть N2 = 256. (обычный 8bit режим) Сделать палитру:
 
  for i := 0 to 63 do begin
   SetRGBColor(i, i, 0, 0);           // градации синено
   SetRGBColor(i+64, 0, i, 0);        // градации красного
   SetRGBColor(i+128, 0, 0, i);       // градации зеленого
   SetRGBColor(i+192, i, i, i);       // градации белого
 
  Затем вместо каждого пиксела исходного изображения ставишь
  матрицу пикселей 2 на 2. Hапример исходный цвет RGB(55,10,60)
  (получено делением на четыре всех компонент из исходного цвета).
  перейдет в матрицу
 
  |    55    64+10  |
  |128+60   192+wh  |
 
  WH подберешь самостоятельно - это дополнительный белый цвет, предназначенный
  для того чтобы сохранить яркость пиксела - потому что из-за черного фона
  картинка с черным пикселом в углу будет горазде темнее оригинала.
  Конечно, картинка станет в четыре раза больше. Вместо этого можно
  устреднять в исходном изображении матрицы пикселей 2 на 2.
 
  К размышлению:
  В первом методе можно использовать следующую информацию:
  зеленый цвет гораздо лучше воспринимается глазом, чем синии. Красный между
 ними.
  Пример:
  Есть три цвета:
   1. (5,10,5)  встречается 100 раз
   2. (5,11,5)  встречается 101 раз
   3. (5,5,10)  встречается 100 раз
   4. (5,5,11)  встречается 101 раз
   Hужно сделать три цвета - убрать лучше третий чем первый. Третий заменять
  четвертым.
 
    Было не очень страшно. Пока.                              *Victor*
 
     [Сейчас пьется: Martini Bianco со льдом]
 ... [.asm.cpp.pas.] [q3.level.design] [demo.making] [i.girls]
 --- [mgl@pisem.net] [mglmap.narod.ru] [icq91208291]
  * Origin: Южно-Сахалинск, Россия (2:5043/3.88)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Уменьшить количество цветов в изобpажение   Mykola Kovalchuk   01 Aug 2003 07:24:19 
 Уменьшить количество цветов в изобpажение   Victor Anikeev   04 Aug 2003 14:12:42 
 Уменьшить количество цветов в изобpажение   Roman Sandakov   06 Aug 2003 13:31:31 
 Re: Уменьшить количество цветов в изобpажение   Valentin Davydov   11 Aug 2003 22:59:16 
Архивное /ru.algorithms/28423f2e6f6b.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional