2014-11-25 3 views
2

В основном я пытаюсь найти яркость всех пикселей в растровом изображении. Изображения, которые я использую, - это 24-битные растровые изображения, и я не могу использовать функцию GetBrightness(). Я получаю значение RGB пикселей, мне интересно, является ли значение RGB также яркостью пикселя, или кто-нибудь может рекомендовать метод получения яркости пикселей в градациях серого?Получение яркости пикселя в оттенках серого

Благодаря

+0

Можете ли вы показать нам, как вы «получаете» эти вещи? Почему бы вам не использовать 'GetBrightness'? –

+0

Я не могу использовать getBrightness, потому что я написал свой собственный класс для чтения в растровых изображениях. Я просто читаю значение RGB каждого пикселя и задаюсь вопросом, содержит ли это яркость? Если это имеет смысл, извините, я не могу быть более ясным –

ответ

1

Есть несколько методов для преобразования в оттенки серого: http://www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale/

Я использовал 0.21 R + 0.72 G + 0.07 B метод с успехом. Это даст вам число (между 0-255), которое представляет собой значение оттенков серого.

1

Поскольку яркость (яркость) субъективна, существует несколько способов преобразования RBG в значение яркости. Разница в том, сколько веса вы даете каждому цвету.

Вот one method относительной яркости (Y):

Y = (0.2126 * R) + (0.7152 * G) + (0.0722 * B) 

Вот another:

Y = (0.299 * R) + (0.587 * G) + (0.114 * B) 

Первый способ является предпочтительным для некоторых, потому что (для большинства людей) «зеленый свет способствует больше всего интенсивность, воспринимаемая людьми, и синий свет наименее ». Цветная слепота и другие различия могут уменьшить эффект. Обратите внимание, что второй метод уменьшает вес по зеленому значению и большему весу по красному значению, а дополнительный smidgen переходит на синее значение.

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