Вот простая на первый взгляд задача, и даже о распознавании в ней не пахнет, но ...
Допустим перед загрузкой изображения на сервер или уже на сервере, что не принципиально, нужно удалить черноту или белое обрамляющее рисунок, к примеру это результат сканирования. Даже условно будем считать, что ориентация при этом идеальная, сама полезная часть изображения без угла наклона.
Пусть нужно вырезать белую/серую канву. С цветом работать, это много мороки и не удобно, значит преобразуем изображение в градации серого. Работать с цветовой моделью RGB тоже не удобно, опять будут лишние расчеты. А вот цветовая модель HSB в данном случае будет самой удобной - задав 0 для H и S, указав нижний порог яркости (В) до которого нужно удалять найденные пиксели, сравнивая яркость преобразованного RGB цвета ячейки в HSB с заданным диапазоном (для белого/серого от 100% до нижнего указанного).
При этом не обязательно сканировать все ячейки каймы, нужно лишь только узнать ее ширину с каждого края, и для этого было бы достаточно опросить центральные по горизонтали и вертикали ячейки, начиная с краев и к центру изображения. Это совсем не много, одного цикла с малым числом итераций хватит.
Было бы, если бы не но. А что если изображение, это комната с окном, на стекле которого мороз нарисовал свой шедевр, и стекла которого в аккурат сливаются с каймой, и центральные пиксели как раз напоролись на этот шедвер. Цвет, насыщенность вполне могут попадать в диапазон для удаления. А значит потребуется анализ. А может быть и луна на ночном небе, звезды, паруса яхты...
Последний раз редактировалось laimas, 26.01.2016 в 12:48.
|