Хорошо, предлагаю вариант решения. Это никакое не ноу-хау, поскольку "подсмотрено" у мозга человека. Реализаций этого алгоритма тоже существует много. Честно говоря, я даже удивился, что народ так вяло на эту задачу отреагировал - она ведь сравнительно простая (на сегодня), и давно решена. Причём разными способами. Приведу вкратце тот из них, который (ИМХО) наиболее напоминает обработку сигнала зрительной корой. Сетчатку с её тремором и прочими эффектами - не рассматриваем, так как по условию задачи раст чёрно/белый, даже без оттенков серого.
Итак:
1) В каждой точке исходного растра размещаем "пиксельный датчик".
2) Показания датчика определяются так: берём "бревно" - чёрный прямоугольник размером 10х5, помещаем его центр масс в точку расположения датчика (горизонтально) и вращаем на 180°, с интервалом например в 5° (выбор интервала зависит от толщины линий искомого прямоугольника и и желаемой точности решения задачи). На каждой итерации вращения "накладываем" наше бревно на исходный растр, и определяем "степень соответствия" (т.е. среди всех пикселей растра, "накрытых" бревном хотябы наполовину, подсчитываем количество чёрных). Показанием "датчика" в данной точке будем считать значение угла, при котором "степень соответствия" максимальна. Если при нескольких разных углах она одинакова и это значение максимально - то такой датчик имеет сразу несколько показаний, ни одно из них не отбрасываем, все запоминаем.
3) Для каждого значения угла А в диапазоне от 0 до 90°, с шагом в 5° (о шаге см. выше) формируем сетку. Сетка состоит из всех прямых, образующих с положительной полуосью Х угол А (для определённости - против часовой стрелки), а также перпендикуляных им, причём отстоящих друг от друга на 1 пиксель, и пересекающих исходный растр отрезком длиной не менее 5 пикселей. Для каждого конкретного угла А такую сетку назовём "семейством" А.
4) В каждом семействе, построенном в предыдущем пункте, на каждую прямую этого семейтсва вешаем "линейный датчик". Показания датчика отпределяются так: максимальная продолжительность (в пикселях) отрезка, в каждом пикселе которого показания пиксельного датчика совпадают с углом А (или А+90° - для перпендикулярных прямых сетки).
5) Проходим снова по прямым и оставляем показания только тех линейных датчиков, для которых показания датчика этой прямой, двух предыдущих и двух последующих прямых семейства - сходны. (2+1+2=5 пикселей, ширина линии по условию задачи). Остальные обнуляем.
6) Теперь всё готово, находим наши прямоугольники. Все, которые на растре есть. Дальше очевидно, или ещё расписать?..
P.S. Если требуется найти один, и известно что он на картинке только один - задача будет решаться более точно, так как "кандидатов" может возникать несколько, и мы из них всех выбираем тот, оценка которого по показаниям "датчиков" максимальна.
P.P.S. Ресурсоёмкость этого метода решения очень высока. Что поделать, у мозга нейронов вон сколько, а у компьютера процессор всего один

Мозг - это такой орган, с помощью которого мы думаем, что мы думаем.