Вообще, анализ изображений - это сложно. Но, как ты знаешь, любую сложную задачу разделяют на более простые.
Я думаю, твою задачу надо свести к поиску объектов на черно-белом (или типа того) изображении.
Даже если у тебя есть черно-белое изображение - то выделение объектов (например символов) на нем - это трудоемкая задача. Надо, в частности, различать, где буква, где шумы, а где - засвеченная область или тень упала.
Каждый объект изображения тебе надо кодировать каким-то числом. Берешь первый пиксель, присваиваешь ему код. Берешь следующий пиксель, смотришь пиксели, которым присвоены коды, вокруг него, если цвета похожи (сам думай как это определить) - то текущему пикселю присваиваешь код код похожего. Если не похожи - то присваиваешь новый код. Если текущий пиксель похож на несколько пикселей вокруг себя, значит он объединяет несколько областей - присваиваешь ему код любой из области, а остальные области "перекрашиваешь" с этим же кодом.
Это первый этап, в результате которого ты, грубо, говоря, повысишь контрастность (насколько повысишь - зависит только от того, что ты будешь понимать под "похожими писелами"). Ну а дальше - те е шаги, что при анализе черно-белого изображения - удаление шумов (маленьких объектов), разделение объектов на несколько (если они соединены только узкой "перемычкой" - при распознавании символов рукописного текста это важно) и т.п.
Ну а потом, тебе надо сопоставлять объекты изображения с эталонными объектами (образ домика и т.п.). Я бы посмотрел как это делается при распознавании текста, там есть прикольные алгоритмы.