Top.Mail.Ru
Ответы

Графика на джава

Нужно написать прогу, которая бы отличала (явный) фон от (явного) обекта на картинке
К примеру, на фоне в шахматную доску но вместо черных квадратов светло серые, а обекти черные, или красные или светло оранжевые или и т. д.

Подкиньте идею как делать. Какой логике следовать? Как можно отличить фон если он не с одного цвета состоит?

По дате
По рейтингу
Аватар пользователя
Новичок
5лет

добро пожаловать в компьютерное зрение
java тут вообще ни при чём, алгоритмы везде одни и те же

для начала конкретизируй задачу
что нам известно, кроме самой картинки, и что требуется найти?

Аватар пользователя
Мыслитель
5лет

Тут самый главный вопрос стоит в том, что считать за фон, а что за объект. Если допустим по определению кол-во пикселей фона всегда больше кол-ва пикселей самого объекта, то тогда нам нужно сначала определить кол-во тех и тех и сравнить.

Если же, как вы далее утверждаете, фон состоит не из одного цвета, а

а) фон состоит из похожих пикселей, отличающихся на незначительную величину (разность)

б) фон состоит из довольно отличающихся оттенков или цветов, например красный и оранжевый

Тут также нужно подсчитать кол-во пикселей всех цветов, а затем сравнить. Только в первом случае необходимо будет определить граничное значение разности - порог, при котором пиксели можно считать различными. Во втором случае возникает неопределенность, какие пиксели считать фоновыми, а какие нет. Здесь нужно руководствоваться не принципом больше/меньше, а вычислять процентные содержания пикселей каждого цвета на изображении и согласно заранее установленным директивам, определять что есть фон а что нет.

Также случаи (а) и (б) могут сочетаться в один, все зависит от конкретного изображения.

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