LINUX.ORG.RU

Возможно в тегах навроде EXIF что-нибудь найдется, а так в целом - в чб изображениях пиксели все есть градации серого, так что R = G = B

yoghurt ★★★★★
()
Ответ на: комментарий от Rubbiroid

Да возможно достаточно проверить exif или какой-нибудь формат-специфичный заголовок :)

yoghurt ★★★★★
()

А ч/б фотография с небольшим цветным логотипом/копирайтом будет считаться ч/б или цветной?

kovrik ★★★★★
()
Ответ на: комментарий от kovrik

Значит, нужно собрать статистику по всему изображению: если превалирует ч/б - считать изображение черно-белым; иначе - считать цветным :)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от yoghurt

Если проверять только градации серого, то получается, что сепия - не ч/б.
И вообще любое тонированное ч/б изображение.

anonymous
()
Ответ на: комментарий от yoghurt

Спасибо, капитан, куда мы без вас.
И тем не менее, многие говоря о ч/б имеют ввиду монохромное изображение вообще.

anonymous
()
Ответ на: комментарий от anonymous

В любом случае R:G:B будут соотноситься как A*(x:y:z). Т.о., все равно проверка относительной интенсивности уровней цветности в каждом пикселе позволит выявить: монохромное (в т.ч. черно-белое) ли изображение.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Ну да, только ближе к светам (где-то к 250 ближе) это отношение ближе к 1:1:1 (при высокой интенсивности падает насыщенность), тоже надо учитывать.

Вообще самому интересно узнать простой алгоритм определения монохромности изображения.

anonymous
()
Ответ на: комментарий от anonymous

где-то к 250 ближе это отношение ближе к 1:1:1

Там просто будут ошибки округления. Так что достаточно учитывать эти ошибки - например, построить гистограммы пропорций R:B и G:B с не очень большим разрешением. Если на гистограммах будет только по одному пику - изображение монохромное.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

По-моему проще всего перевести изображение в HSV и убедиться, что H более-менее одинаковый

anonymous
()
Ответ на: комментарий от anonymous

Больше операций выполнять придется. А так - прочитал картинку один раз, попутно заполняя две гистограммы. Потом проанализировал гистограммы. И все.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Изображение: черный фон и 3 одинаковых квадрата (R,G,B) гистограмма скажет, что изображение ч/б. Или я не так идею понял?

Rubbiroid
()
Ответ на: комментарий от Rubbiroid

Не проще: во-первых, есть ошибки округления, во-вторых, R\approx G\approx B только в черно-белом, а у нас рассматривался случай монохромного изображения. Т.е. имеем: R=Ar, G=Ag, B=Ab; где rgb - общий цветовой тон изображения (double), A - яркость.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Так в HSV же перевести без сохранения результата, только считая статистику тонов (360 значений всего, меньше памяти, чем под две гистограммы)


anonymous
()
Ответ на: комментарий от Eddy_Em

какое округление в byte?
Случайные пиксели не того цвета - там их число/все пиксели. Меньше 1% - значит ошибки, игнорить их. Но это для ч/б, о чем и говорил ТС.
Для монохрома да, так не пойдет.

Rubbiroid
()
Ответ на: комментарий от Rubbiroid

какое округление в byte?

Берем базой цвет #FFD66D (r=255, g=214, b=109) - для точки с яркостью 255. Точка с яркостью 0 будет иметь R=0, G=0, B=0 - это понятно. А вот, скажем, точка с яркостью 100: R=100.00, G=83.92, B=42.75. Округлить результат можно как по правилам округления, так и простым floor или ceil. А при вычислении соотношения цветов получим ошибку.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Ясно, мы говорим про разные вещи. Я имею ввиду случай, когда функция должна вернуть true, если фотка ч/б. Пропорции нужны для случая, если функция выозвращает true, если фотка монохромна.

Rubbiroid
()

Если в изображении есть три (и больше) канала, о чём говорит конкретный формат файла изображения, то наиболее правильно его считать цветным/многоканальным. Если есть палитра + квантованные данные, тоже цветное, и лишь одноканальные серые изображения являются Ъ-серыми. Монохромные битмапы - отдельный случай серого ;).

Весь этот бред сокращённо: лишь данные о процессе получения изображения правильно опишут ваше изображение. Логично процесс получения изображения описывать подходящим форматом хранения.

nikitos ★★★
()

Перейти в пространство «Lab».

Построить гистограммы каналов «a» и «b».

Если на гистограммах имеется один выраженный максимум ближе к середине, то это ч/б.

Deleted
()

Перейти в YUV и посчитать дисперсию U и V. Если меньше порога, то ч.б., возможно с тонированием.

rymis ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.