Всем привет. Решаю сейчас задачку одну простенькую. Условие звучит примерно так:
Дана матрица (двумерный массив), в которой каждый элемент представляет собой пиксель. Пиксели могут быть красного цвета, черного, либо какого-то другого цвета. Необходимо реализовать поиск на изображении эффекта "красных глаз". Если центр черных пикселей совпадает с центром красных пикселей - значит мы нашли "красный глаз".
Подразумевается, что границы диапазона красных пикселей шире границ диапазона черных. Так же, не рассматриваются варианты, если на изображении присутствуют красные и черные пиксели вне "глаза". Все, что вне "глаза" - будет другого цвета. Я планировал реализовать по (примерно) такому алгоритму. Два цикла, один вложенный в другой. Одним проходимся по Х, вторым - по Y. Как только нашли красный пиксель - фиксируем его координаты как начальные и ищем конечные координаты. Как только оказывается, что красные пиксели больше не появляются - фиксируем последний красный пиксель, который нам попадался, в качестве конечных координат диапазона красных пикселей. Аналогично и с черными пикселями. После чего делим диапазоны пополам и находим центры. Такой алгоритм будет достаточно неплохо работать с фигурами более-менее правильной формы (круга). И вот тут я решил усложнить себе задачу)) А именно, понять как улучшить алгоритм для фигур неправильной формы. Например, если у человека некоторые проблемы со зрением (в связи с чем форма глаза может быть неправильной), или фотка сделана была под углом, или еще какие-то ситуации... Беглый поиск вывел меня на статьи в википедии про центр масс и барицентр. Но там так много страшного и ужасного матана, что я решил пока отложить это и поинтересоваться у сообщества, как бы реализовали это вы? :)