Вообщем назрел такой вопрос: есть определенное изображение и на нем изображены некие объекты на фоне (фон слегка неоднороден), необходимо удалить фон, вырезать объекты (т.е. как бы сделать рамку для вырезки этих объектов из основной картинки или вырезать в прямом смысле, для последующей обработки). Кто-нибудь подкинет идеи?
Алгоритмы начиная от простейшего геометрического сопоставления, заканчивая алго виолойджонса и нейронными сетями. Как вариант OpenCV, но придётся сделать обучающую выборку... тема стара как мир .. ) . Опиши хоть изображения, форму и пр.
Фотография на сером фоне. Изображены бусинки, бисер. Геометрическое сопоставление не подходит. Нейронные сети было бы неплохо. Собрался писать с нуля. Вообще речь идет не о совсем распозновании, а просто об отделении объектов из фона. Я так полагаю по тонам. Т.е. из более менее однородного фона выбрать все изображения для дальнейшего их распознования. (т.е. определять по тонам я так понимаю, или я не прав?) Видимо нужно найти границы объекта по перепадам. Т.е. удалить фон и помотреть где на такой фон. Если тема стара как мир. Может уже есть что-то с срц и небольшое?
Ну вот пример такого изображения http://static.biserok.org/wp-content/uploads/2010/07/biser.jpg Качество лучше будет, конечно. Для каждого круга отдельно.
zdacom Фон не монотонный, а местами не однородный. Так как есть бусинки прозрачные, то их тона очень близки с фоном. Думаю надо двигаться в сторону автоматической сегментации.
Что тут думать, всё что граничит с фоном не является фоном, а значит обьект. Поверхность описать попиксельно, задав условие отличия цвета поверхности от фона. Элементарно же.
Вот для примера скрин. 1 - это некоторая небольшая, по сравнению с обьектами область фона, близкая к круглой форме. Условие отличия фона от обьекта может быть сумма яркости всех пиксель области 1. Тогда например область два будет иметь большую яркость. Таким образом можно убрать основной не равномерный фон. 3 - показано выделение границы обьекта с фоном. Если расстояние между максимумами выпуклостей меньше какойто опред виличины, например половине описывающей окружности, то можно обьединить вершины выпуклости. Таким образом будет выделен обьект целиком. Также при описании поверхности будут резкие изменения цвета, это позволяет выделить обьекты из их группы(там в верху скрина).
недавно делал так (требовалась скорость) - переводил картинку в цвет-насыщенность-яркость и дальше по каждой оси проверял значение и особенно производную на максимумы. те, если больше определенного значения - граница объекта. в более сложном случае стоит пропустить через фнч чтобы выделить области ожидаемого и больше размеров. ЗЫ както зачастили в последнее время вопросы по распознаванию. 3 или 4 ветки одновременно. к чему бы это?
zdacom Считаем, что в верхнем левом углу картинки бусинок и бисера нет, то есть что это фон, так как он неоднороден, то допустим, что фон соответствует квадрату 16х16 пикселей. Берем цвет каждой точки этого квадрата 16х16 и вычитаем этот цвет попиксельно из картинки, таким образом избавляемся от части фона. Если в результате вычитания результат ненулевой, то восстанавливаем цвет и переходим к следующей точке фона, предварительно можно сравнить точки в области фона на совпадение цветов и этим хотя бы немного облегчить себе работу.
У меня получилось так: Фильтр Гауса на 4 пикселя, подбирается по (минимальный размер элемента фора)+1, и простейший алгоритм выделения границ - наложение яркости, 8 картинок со сдвигом по 8 сторонам на 1-3 пикселя. http://img808.imageshack.us/i/35794637.jpg/ Получили ботовую маску мест для потенциального геометрического распознания. Есть ли возможность снять изображение без бликов и под лампами разного цвета ?
Вообщем решил применить автосегментирование, кластеризация методом k-средних. Пока что в матлабе чтобы проэмулировать все. Работает отлично! Изображения будут без бликов, надеюсь. Будет расстояние между бусинками, поэтому маску наложу объекты можно будет легко отделить и дальше распознать.