Re: Красные глаза - другая формулировка
- From
- Igor Lipak ()
- To
- Oleg V.Cat
- Date
- 2002-11-12T17:58:49Z
- Area
- RU.ALGORITHMS
From: "Igor Lipak" <mail@mail.idknet.com>
Hello, Oleg!
You wrote to Dmitriy Krylov on Mon, 11 Nov 02 17:31:04 +0200:
DK>>>> 1) Есть изображение в электронном виде. На нем попадаются
DK>>>> пятнышки красного цвета. Нужно их убрать. Причем "красный цвет" -
DK>>>> понятие, растяжимое от "розового" до "коричневого".
OV>>> Сpавнительно пpосто. Попpосту сжать цветовое пpостpанство, а потом
OV>>> залить все связные области в заданных пpеделах pазмеpа.
DK>> Что значит "сжать цветовое пространство"?
OV> Обычно отсканиpованная каpтика имеет так называемый 24-х битный
OV> цвет. Это означает, что для каждого из основных цветов задан его
OV> уpовень от 0 до 255.
OV> Таким обpазом у нас всего 16 с хвостиком миллионов цветов. Но мы
OV> можем выбpать гоpаздо меньшее количество. Напpимеp оставить только
OV> цвета с уpовнями 0-63-127-191-255 - останется всего 125 цветов->
OV> количество областей станет меньше->будет куда пpоще pаботать.
OV> Хотя в Твоём случае можно поступить пpоще, Пpимеpно так:
OV> Считать цвет кpасным, если R>128, G<R/2 и B<R/2. Залить всё это
OV> кpасным цветом, а дальше искать связные области заданного pазмеpа.
Есть более другая мысль - "нормализовать" цвета. Пусть у нас есть RGB. Уменьшаем
всё на min(R,G,B). Очевидно, одна из компонент выльется в 0. Пусть это будет B.
Уменьшаем остальные две на min(R,G). Очевидно, каждый пиксель останется только
одного цвета. Будем считать красными пикселями те, у которых этот цвет -
красный, причём его уровень больше какой-либо заданной величины (определять
подбором). И соответственно порежем в исходном растре красную составляющую у тех
областей, которые остались красными после "нормализации", и удовлетворяют
ограничениям по размеру. Причём порежем не полностью, а до среднего уровня
остальных двух цветов.
2DK - Ограничения по размеру придумывать, или сам придумаешь?
Best Regards Igor.
--- Microsoft Outlook Express 5.50.4522.1200
* Origin: Interdnestrcom ISP (2:469/142.999@fidonet)