Originally posted by SiMM
untied, твоя схема вообще непригодна - опробуй как нибудь на практике
А чего пробовать-то?
Я в Фотошопе регулярно пользуюсь такой схемой для получения контурных изображений при сканировании. Сканируешь картинку на белом фоне в оттенках серого, конвертируешь в Lab, потом редактируешь кривую в канале L (то что ближе к черному -- в ноль, то что ближе к белому -- в 1). Получается контурное изображение на белом фоне. Такой способ отлично отсеивает "шумы" с бумаги.
У кого есть Фотошоп -- можете сами поиграться и убедиться.
Originally posted by SiMM
Ну не может оно пахать Возьми картинку, состоящую из двух цветов - 0xFF,0xFF,0x00 и 0x00,0xFF,0xFF - и пройдись алгоритмом определения чёрности точки. Ну и что у тебя получится на выходе? Правильно, один белый цвет.
Оно не может пахать в модели RGB! Потому что в модели RGB все три компоненты участвуют в определении яркости. А в модели Lab яркость определяется только
одной компонентой! А каналы a и b оперируют с понятиями "скорее красный чем зеленый" и "скорее желтый чем синий". Все вам разжевывай!
Есть, кстати, и более простой способ. Я уже потом вспомнил. Есть формула для перевода RGB-компонент в оттенки серого (всё равно остается модель RGB, но все три компоненты равны друг другу).
Т.е. у преобразованной точки R1 = G1 = B1 = F(R0,G0,B0), где F -- функция перевода (если кому надо -- могу поискать, у меня где-то программа на C валяется, делающая такое преобразование).
Потом проверяем, если R1,G1,B1 меньше 128 -- точка черная, если больше 128 -- белая.
Этот подход тоже должен сработать, но, вполне вероятно, с меньшей точностью: так как здесь используется целочисленная арифметика, а при подходе Lab -- с плавающей точкой. Впрочем, на экране мобильника все равно будут те же яйца, только сбоку.
Но проще всего, наверное, обратиться к функции image2wbmp().