Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.04.10;
Скачать: CL | DM;

Вниз

Цвет TBitmap   Найти похожие ветки 

 
Неважно   (2010-12-30 13:20) [0]

Имеется TBitmap небольшого размера. На нем может быть что-то нарисовано в двух цветах (черный и белый). Мне необходимо получить TRUE, если на нем преобладает черный цвет и FALSE, если преобладает белый.

Как решить подобную задачу?


 
Ega23 ©   (2010-12-30 13:27) [1]


> Как решить подобную задачу?

Посчитать количество Сил Тьмы, подсчитать количество Сил Света, сравнить по своему критерию "преобладания".


 
Неважно   (2010-12-30 13:31) [2]

А как получать эти силы?
По пиксельно? Определять цвет всех пикселей моего битмапа? Или как-то иначе (по нескольким пикселам)?


 
Ega23 ©   (2010-12-30 13:33) [3]


> По пиксельно

Естественно. Есть другие варианты?


 
Неважно   (2010-12-30 13:39) [4]

Ну, мало ли. Я бы предпочел пройтись "крестом". Как бы действий меньше и быстрее, вероятно.


 
Dimka Maslov ©   (2010-12-30 13:44) [5]

У каждого битмапа есть св-во сканлине


 
Ega23 ©   (2010-12-30 13:46) [6]


> пройтись "крестом".

А какая хрен разница, как перебирать пикселы? Всё равно тебеих все придётся перебрать (точнее, не все, а как критерий преобладания будет достигнут).
А справа налево, слева направо, по синусоиде или буквой зю - без разницы.


 
Неважно   (2010-12-30 13:57) [7]

Понял. А еще вопрос.
Поимел я цвет пиксела. Преобразовал в RGB.

А далее? Там вроде как была какая-то формула определения цвета в черное или  белое? Что-то там сравнивается со значением 100. Это к тому, а вдруг у меня там серый, желтый и т.д. Как оттенок цвета ГРУБО преобразовать в белый или черный?


 
Andy BitOff ©   (2010-12-30 14:05) [8]


> нарисовано в двух цветах (черный и белый)


> а вдруг у меня там серый, желтый и т.д.

Эта как?


 
Anatoly Podgoretsky ©   (2010-12-30 14:48) [9]

> Неважно  (30.12.2010 13:57:07)  [7]

Не надо ля ля, нам не тяжело привести твою цитату

"На нем может быть что-то нарисовано в двух цветах (черный и белый"


 
RWolf ©   (2010-12-30 15:01) [10]

google "RGB to YUV".


 
Серый   (2010-12-30 16:42) [11]

R, G, B: byte;
D: word;

D := High(byte) * 3 div 2;
R + G + B < D  - темный
R + G + B >= D - светлый


 
Неважно   (2010-12-30 17:45) [12]

Спасибо.

Я где-то нашел такой вариант:

Color:= Bmp.Canvas.Pixels[Bmp.Height-I,I];
Gray:= (GetRValue(Color) + GetGValue(Color) + GetBValue(Color)) div 3 ;
if Gray> 100 then ...



 
Jeer ©   (2010-12-30 17:56) [13]

Можно использовать вероятностный метод.
Сделать рандом-координатную выборку около 50% пикселей.


 
Студент   (2011-01-09 06:47) [14]


> Как оттенок цвета ГРУБО преобразовать в белый или черный?


Можно грубо преобразовать в оттенки серого:
Если равно 0 - то чёрный;
Если равно 255 - то белый;
Если значение получилось между ними - то серый цвет;

Можно в процентах сделать: ( ( ( R + G + B) / 3 ) * 100) Div 255


 
Студент   (2011-01-09 06:48) [15]

Что-то не напечаталось...

>> Можно грубо преобразовать в оттенки серого:  (R + G + B) / 3


 
Anatoly Podgoretsky ©   (2011-01-09 10:34) [16]

> Студент  (09.01.2011 06:47:14)  [14]

У тебя получается, что яркость красного равна яркости синего.


 
Студент   (2011-01-09 13:51) [17]

В модели RGB нету понятий яркости и.т.п.))
А в градациях серого - это когда все три составляющие равны...

Самый быстрый (хоть и грубоватый) способ сделать картинку чёрно-белой - это среднеарифметическое...


 
RWolf ©   (2011-01-09 16:57) [18]

может, всё же погуглить "RGB to YUV"?



Страницы: 1 вся ветка

Текущий архив: 2011.04.10;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.009 c
11-1232967128
BMouradov
2009-01-26 13:52
2011.04.10
Выполнение команд до создания окна в МСК


15-1291411633
Nic
2010-12-04 00:27
2011.04.10
Недорогой телефон с сенсорным экраном


1-1251369396
ViToTiV
2009-08-27 14:36
2011.04.10
Вызов формы без деактивации текущей формы


2-1294821073
student_92
2011-01-12 11:31
2011.04.10
Классы


2-1294948457
Oleg_teacher
2011-01-13 22:54
2011.04.10
Excel + Delphi совмесный доступ