2013-02-24 3 views
0

Итак, у меня есть проект для преобразования изображения в черно-белый вручную путем изменения значений argb с помощью алгоритма. Я пробовал усреднять значения RGB, и я получаю изображение почти в полутонах, но в нем все еще есть намеки на цвет. У кого-нибудь есть примеры алгоритмов для преобразования пикселя в aRGB в оттенки серого вручную?Преобразование пикселя изображения с ARGB в оттенки серого ARGB вручную

Это то, что я делал до сих пор:

  //Apply the filter 
      reds = ((reds+greens+blues)/3); 
      greens = ((reds+greens+blues)/3); 
      blues = ((reds+greens+blues)/3); 
+0

Стоит отметить, что из-за биологии человеческого глаза красный, зеленый и синий цвета не должны быть равномерно взвешены, когда изображение преобразуется в оттенки серого. –

ответ

4

Похоже, вы изменяете входы в правой части, ожидая его значение остается постоянным. Почему бы не использовать это?

reds = (reds + greens + blues)/3; 
greens = reds; 
blues = reds; 
+0

Да, я отставлен. Большое спасибо. – user1088595

+0

@ user1088595 не чувствую себя плохо, я просто перепутал влево и вправо :) – harold

+0

Я думаю, было бы неплохо отметить этот ответ как правильный. –

2

Я всегда был под впечатлением, что, из-за наши глаза, отличающейся чувствительность к красным, зеленым и синим длинам волн, оттенки серому должны вычисляться с помощью:

(int) (0.299 * red + 0.587 * green + 0.114 * blue) 

Нескольких лет назад, это используется чтобы найти легкую информацию, но теперь я не могу найти слишком много источников для этого. Wikipedia's entry on grayscale - один.

Смежные вопросы