Исключительно умозрительный алгоритм...

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

Исключительно умозрительный алгоритм...

Сообщение Deimos » 09.12.2016 21:04:06

Добрый день коллегам ))

Знакомая задала вопрос, возможно-ли это...

https://freelancehunt.com/project/vyirezat-shablonnyie-kartinki-vnutri-foto/178576.html

Нужна программа, которая позволит вырезать из фотографии продуктового магазина ценники (белые квадраты) и сохранять их отдельными файлами.

Формат ценников:
- формат ценников может быть различный (белый прямоугольник)
- ценники могут быть расположены прямо или под углом

Принцип работы:
1. Сохраняю фотографии в папку
2. Запускаю программу
3. Программа вырезает ценники из общей фотографии магазина (пример общей фото во вложении)
4. Программа сохраняет вырезанные ценники новыми документами (имя документа – имя общего файла +номер фотографии)
5. На общей фотографии отмечается какие фотографии были вырезаны (для проверки)


Сперва я ответил, что да, но долго и дорого, сравнив задачу с капчей... Но потом за чашкой ароматного кофе подумал и выявил мысль:

Задача достатошно проста...

Сканируем массив пикселей картинки на предмет прямоугольной формы белого цвета, а после, выделяя внутр. область, уточняем, есть-ли внутри области цвет, отличный от белого и если есть, то вырезаем. С вероятностью достаточно высокой, на мой взгляд, это и будет ценник... Хотя оговорок, конечно, много.

Мысли исключительно умозрительны и ничем подобным заниматься я не планирую, в ближайшее время... Интересны ваши мнения. Может кто придумает более-элегантный метод?
Deimos
постоялец
 
Сообщения: 169
Зарегистрирован: 17.01.2010 00:31:30

Re: Исключительно умозрительный алгоритм...

Сообщение olegy123 » 09.12.2016 21:47:26

Задача не проста.. очень важно цвето-корректировка, нахождения границ контуров, выявления прямоугольных областей..

Вам в OpenCV.
Там есть примеры сканирования автомобильных номеров по фотографии или по видео..

еще подключить нейроные сети и все будет ок..

Добавлено спустя 4 минуты 6 секунд:
вот что то типа такого
https://habrahabr.ru/post/170909/
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Исключительно умозрительный алгоритм...

Сообщение Deimos » 09.12.2016 21:53:42

olegy123 писал(а): очень важно цвето-корректировка, нахождения границ контуров, выявления прямоугольных областей..

Это абсолютно понятно и я согласен.

olegy123 писал(а):подключить нейроные сети и все будет ок

Тоже да, но, право, вырезание ценников с картинки не стоит нейронных сетей...

Повторюсь ))) Вопрос умозрительный и меня интересует обсуждение возможного алгоритма, а не конечная реализация проекта.
Deimos
постоялец
 
Сообщения: 169
Зарегистрирован: 17.01.2010 00:31:30

Re: Исключительно умозрительный алгоритм...

Сообщение olegy123 » 09.12.2016 22:18:41

Ну например "Оператор Собеля" применить, получить контурную картинку, перевести картинку в векторы..
искать замкнутый примитив.. искать прямоугольную область..

наверное так..
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Исключительно умозрительный алгоритм...

Сообщение Deimos » 09.12.2016 22:59:54

olegy123 писал(а):Оператор Собеля

Идея вполне интересна.Спасибо. Не знал о ней.
Deimos
постоялец
 
Сообщения: 169
Зарегистрирован: 17.01.2010 00:31:30

Re: Исключительно умозрительный алгоритм...

Сообщение Лекс Айрин » 10.12.2016 10:03:13

ок... а если у нам в МАНах ценники 3 цветов? Да и в других магазинах такое встречается.

Deimos писал(а):Повторюсь ))) Вопрос умозрительный и меня интересует обсуждение возможного алгоритма, а не конечная реализация проекта.


Пошукайте в архивах компьютерры статью об "отключенном киборге" Он решил для себя похожую задачу -- вырезание рекламы в окружающей его расширенной рекламы и замену на, если требуется, свой контент.

Deimos писал(а):Сканируем массив пикселей картинки на предмет прямоугольной формы белого цвета, а после, выделяя внутр. область, уточняем, есть-ли внутри области цвет, отличный от белого и если есть, то вырезаем. С вероятностью достаточно высокой, на мой взгляд, это и будет ценник... Хотя оговорок, конечно, много.


Имхо, достаточно порезать картинку на нахождение прямоугольных примерно однотонных объектов. Пусть и не все это будет ценниками, но попадаемость должна быть достаточной.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Исключительно умозрительный алгоритм...

Сообщение pupsik » 10.12.2016 21:46:17

Deimos вы бы сперва узнали какого рода исходные фотки будут.
Тогда можно что то и сделать. А так... Необходимо учесть кол-во возможностей получения подобных изображений. И попытка найти их (есть вариант что программа определит как ценник не только ценник) - равна созданию ИИ...

Добавлено спустя 2 минуты 49 секунд:
п.с.
Есть люди готовые решить данную задачу. Спасибо за комментарий, но я надеюсь определиться с исполнителем.
за 5к р.???
ну да, ну да...
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Исключительно умозрительный алгоритм...

Сообщение vitaly_l » 26.12.2016 22:50:02

Deimos писал(а):Сперва я ответил, что да, но долго и дорого, сравнив задачу с капчей... Но потом за чашкой ароматного кофе подумал и выявил мысль:

Сканируем массив пикселей картинки на предмет прямоугольной формы белого цвета, а после, выделяя внутр. область, уточняем, есть-ли внутри области цвет, отличный от белого и если есть, то вырезаем. С вероятностью достаточно высокой, на мой взгляд, это и будет ценник... Хотя оговорок, конечно, много.


Всё ещё проще. Ценник имеет средне-арифметически одинаковое количество фоновых пикселей и пикселей занятых цифрами. И самое главное, ценник имеет средне-арифметически одинаковое количество пикселей вообще. И при этом неважно какой угол поворота по оси Z. Соответственно, если все ценники ПРИМЕРНО одинаковые, то их очень легко вычислить. А затем проверить найденные области на наличие ЦИФР.

С другой стороны, изначально можно тестировать всё изображение на наличие цифр ( без лишнего поиска квадратных квитков ) и затем на наличие первичных признаков ценника. Пусть это даже в пять раз дольше по времени процессора, но результат будет много точнее, нежели при поиске по квиточкам, т.к. такой алгоритм, будет искать не только повёрнутые по оси Z но и немного искажённые по осям X и Y.

Учитывая, что задача не реал-таймная, то решить её просто.


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Исключительно умозрительный алгоритм...

Сообщение Лекс Айрин » 27.12.2016 12:46:29

vitaly_l писал(а): И при этом неважно какой угол поворота по оси Z.


Как раз важно.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Исключительно умозрительный алгоритм...

Сообщение vitaly_l » 27.12.2016 12:59:25

Лекс Айрин писал(а):Как раз важно.

Возьмите БЕЛУЮ картинку в 2D нарисуйте на ней ЧЁРНЫЙ квадрат и прокрутите квадрат на 360 градусов, сохраняя каждую итерацию из 360 в BMP и самое главное: посчитайте количество пикселей в ЧЁРНОМ квадрате. :roll: И убедитесь, что неважно какой угол поворота по оси Z, т.к. чем выше разрешение картинки, тем ближе будет количество занимаемых ЧЁРНЫМ квадратом пикселей (на любой из итераций).
:arrow: Удачи в подсчёте пикселей. :wink:
:!: При желании можете повторить эксперимент и снова посчитать пиксели. :cry:
:idea: В итоге удалите сохранённые BMP, т.к. они вам ненужны изначально. :mrgreen:

:?: Если вышеизложенное не поможет, то обратитесь к Геометрии и 360 раз посчитайте площадь квадрата при условии что на каждой из 360 итераций, стороны квадрата сохраняют свою длину... :evil:
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Исключительно умозрительный алгоритм...

Сообщение Лекс Айрин » 27.12.2016 13:20:19

vitaly_l писал(а):Возьмите БЕЛУЮ картинку в 2D нарисуйте на ней ЧЁРНЫЙ квадрат и прокрутите квадрат на 360 градусов, сохраняя каждую итерацию из 360 в BMP и самое главное: посчитайте количество пикселей в ЧЁРНОМ квадрате. :roll: И убедитесь, что неважно какой угол поворота по оси Z,


Сделал. У меня множество алеф2 (многоугольник, сверхразрешение) превратилось, на определенном этапе в множество алеф1(прямая, сверхразрешение). И так по всем осям, как по отдельности, так и вместе. Если что, Алеф это бесконечность.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Исключительно умозрительный алгоритм...

Сообщение vitaly_l » 27.12.2016 13:32:20

Лекс Айрин писал(а):Сделал. У меня множество алеф2 (многоугольник, сверхразрешение) превратилось, на определенном этапе в множество алеф1(прямая, сверхразрешение). И так по всем осям, как по отдельности, так и вместе. Если что, Алеф это бесконечность.

Ввиду того что выше-предложенные варианты - не помогли, то сделайте следующее:
1) нарисуйте ЧЁРНЫЙ квадрат на canvas растянутой на весь экран.
2) учитывая что виртуальное мышление у Вас отсутствует, вращайте Ваш монитор по оси Z на 360 градусов. Таким образом Вы будете точно знать что, количество пикселей неизменно, а ЧЁРНЫЙ квадрат поворачивается на 360 градусов.
3) Когда удостоверитесь, что монитор тоже сохраняет длинну своих сторон при повороте на 360 градeсов по оси Z возьмите молоток и стучите по краям монитора, чтобы изменить его площадь!
4) Ну и наконец, самое главное, когда догадаетесь и поймёте что Вы сильно облажались, киньте свой монитор об стену!
5) Возьмите клавиатуру, и убедившись, что при повороте по оси Z она сохраняет пропорции - разбейте свою клавиатуру об угол стола...
6) Встаньте на стол с ногами и крутитесь на 360 градусов! Когда увидите что и стол, сохраняет длину сторон, то разломайте свой стол.
7) Точно также поступите с мебелью и другими предметами в вашем доме.
8 ) Кода Вы увидев руины, убедитесь что Вы абсолютный, гений - поставьте себе памятник, и пользуйтесь им как голубь! :cry:


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Исключительно умозрительный алгоритм...

Сообщение Лекс Айрин » 27.12.2016 13:46:50

vitaly_l, я левша. Пространственное мышление у меня настолько хорошее, что я мысленно поворачивал часы (механические, без цифр), а потом уже смотрел время.

vitaly_l писал(а): Таким образом Вы будете точно знать что, количество пикселей неизменно, а ЧЁРНЫЙ квадрат поворачивается на 360 градусов.


Вообще-то, при при преобразовании с 3Д в 2Д не сохраняется ни количество видимых символов, ни длинна и даже площадь. Это, школьные сведения.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Исключительно умозрительный алгоритм...

Сообщение vitaly_l » 27.12.2016 13:58:03

Лекс Айрин писал(а):Вообще-то, при при преобразовании с 3Д в 2Д не сохраняется ни количество видимых символов, ни длинна и даже площадь. Это, школьные сведения.

Нет никакого 3D - вращение только по одной оси Z.
А касаемо, вопроса топик стартера (Deimos), на фотографиях, искажения по остальным осям ОЧЕНЬ-ОЧЕНЬ маленькие и на них можно просто забить, т.к. результат всегда равен +- 5% . В смысле здесь ненужно изобретать ИИ - задача очень тривиальная.

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Исключительно умозрительный алгоритм...

Сообщение Лекс Айрин » 27.12.2016 14:41:33

vitaly_l писал(а):Нет никакого 3D - вращение только по одной оси Z.


Как же это нет? Обязательно есть. Пусть даже и перспективным преобразованием. Конечно, если отклонение от перпендикуляра к плоскости экрана будет большим, то задача сильно затрудняется или даже не имеет решения.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

След.

Вернуться в Потрепаться

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru