2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 поиск алгоритма черно-белое или цветное изображение
Сообщение01.04.2008, 00:39 
Аватара пользователя
Ищу алгоритм, с помощью которого можно понять какое изображение обрабатывается: черно-белое или цветное. Заранее спасибо за помощь.

 
 
 
 
Сообщение01.04.2008, 21:10 
Аватара пользователя
Вам надо указать формат файла. Вначале большинства файлов записывается цветовая палитра. По соотношениям RGB можно определить линейную зависимость цветов палитры с соответствующим выводом.

 
 
 
 
Сообщение01.04.2008, 23:02 
Аватара пользователя
:evil:
Я предполагаю, что совет прочитать метаданные файла, в которых написано Ч/Б, Вас не заинтересует.

Перед тем, как углублятся в алгоритмы, было бы полезно определиться с тем, какие картинки считаются цветными. Например, старое фото, пожелтевшее от времени. Или тонированная фотография. Или сепия из цифровой камеры.

Выбор, как видите, есть. Так что, определитесь с целью.

 
 
 
 
Сообщение03.04.2008, 12:57 
Аватара пользователя
Цветное изображение, где количество цветов больше 2. Полутоновые изображения - тоже можно считать цветными изображениями. Черно-белое - на картинке только 2 цвета, то есть изображение бинарное..
У меня идея. Сравнивать значения зеленой, красной и голубой интенсивности цвета в каждой точке на рисунке, если интенсивности трех значений составляющих модель RGB совпадает, то картинка - черно белая. Но получается, что это ооочень медленный алгоритм:(

 
 
 
 
Сообщение03.04.2008, 13:03 
Не понял ваш алгоритм. По определению, картинка состоящая только из синего и зеленого цветов, считается черно-белой, хотя интенсивности во всех точках будут разные.

 
 
 
 
Сообщение03.04.2008, 13:10 
Аватара пользователя
я имел ввиду, что интенсивность в 1 точке по всем трем составляющим должны быть одинаковыми!!

 
 
 
 
Сообщение03.04.2008, 14:01 
Ну вот. В зеленой точке интенсивность зеленого существенно больше интенсивности красного. Это не противоречит чернобелости. :?

Ну, в-общем, ясно, что с таким определением надо в любом случае проехать по всей картинке (одна точка третьего цвета в самом конце может всё испортить).

Давайте я свой вариант для начала напишу. Заводим две переменные типа "цвет" $C_1$, $C_2$ и две переменные типа "целое число" $n_1=0$,$n_2=0$. Фиксируем точность сравнения цветов $\varepsilon>0$. Читаем первую точку (N=1). Запоминаем ее цвет в $C_1$, и пишем $n_1=1$. Читаем (N+1)-ую точку. Если она имеет цвет $C$, и $C$ отличается от $C_j$ меньше, чем на $\varepsilon$, то на место $C_j$ кладем среднее значение цветов, попавших в $C_j$ (то есть что-то типа $\frac{n_j}{n_j+1}C_j+\frac{1}{n_j+1}C$), и увеличиваем $n_j$ на 1. Иначе: если $n_2>0$, то ответ: картинка не является черно-белой. А если $n_2=0$, то объявляем $C_2=C$, $n_2=1$. Если дошли до конца, то картинка является черно-белой.

Недостаток алгоритма --- не рассмотрен случай, когда в какой-то момент оказывается, что $C_1$ и $C_2$ отличаются меньше, чем на $\varepsilon$.

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group