Easyelectronics.ru

Электроника для всех
Текущее время: 18 янв 2020, 16:12

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Алгоритм увеличения четкости изображения
СообщениеДобавлено: 20 фев 2017, 08:52 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 361
Откуда: Новый Уренгой
Доброго времени, пытаюсь составить алгоритм построения новой картинки на основе размытой существующей, но не могу найти правильного метода, хотя такие фильтры существуют. Подскажите куда копать или еще лучше как это делается и как называется?
Пример того, чего я пытаюсь получить во вложении. Свой алгоритм я описывать не буду, так как он не работает с наклонными линиями, а только с вертикальными и горизонтальными. Но на картинке также встречаются дуги, вот с ними вообще ступор.


Вложения:
Комментарий к файлу: Реальная картинка для обработки
Безымянный3.png
Безымянный3.png [ 2.22 Кб | Просмотров: 1490 ]
Комментарий к файлу: Четкость
Безымянный2.png
Безымянный2.png [ 3.5 Кб | Просмотров: 1504 ]

_________________
реверс STM8


Последний раз редактировалось casus 20 фев 2017, 09:12, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм увеличения четкости изображения
СообщениеДобавлено: 20 фев 2017, 09:11 
Старожил

Зарегистрирован: 06 фев 2011, 15:16
Сообщения: 617
Откуда: Челябинск
casus писал(а):
Доброго времени, пытаюсь составить алгоритм построения новой картинки на основе размытой существующей, но не могу найти правильного метода, хотя такие фильтры существуют. Подскажите куда копать или еще лучше как это делается и как называется?
Пример того, чего я пытаюсь получить во вложении. Свой алгоритм я описывать не буду, так как он не работает с наклонными линиями, а только с вертикальными и горизонтальными. Но на картинке также встречаются дуги, вот с ними вообще ступор.

https://www.google.ru/search?q=%D0%B4%D0%B2%D1%83%D0%BC%D0%B5%D1%80%D0%BD%D0%B0%D1%8F+%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F+%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F&ie=utf-8&oe=utf-8&gws_rd=cr&ei=bWuqWJaIFMjt6ASMkJ04


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм увеличения четкости изображения
СообщениеДобавлено: 20 фев 2017, 09:24 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 361
Откуда: Новый Уренгой
Спасибо. Нашел http://vscode.ru/prog-lessons/filtratsi ... sharp.html

_________________
реверс STM8


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм увеличения четкости изображения
СообщениеДобавлено: 20 фев 2017, 10:31 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2634
Откуда: Санкт-Петербург
Так вам повышать чёткость или искать линии на изображении надо? Для поиска линий есть свои алгоритмы, которые в гораздо худших условиях могут работать.

И у вас именно такое изображение, без шумов? Если так - вообще халява, но обычно так не бывает, есть шумы, неоднородность фона и т.п.

И как надо обрабатывать пересечения, как на вашей картинке наверху? Достроить линию или получить три отдельных фрагмента?

И как с ресурсами? (Хотя, если задача простая...)

Кстати, посмотрите на такой алгоритм, как скелетизация. Вполне возможнл, что вам хватит скелетизации + отрезание мелких веточек скелета.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм увеличения четкости изображения
СообщениеДобавлено: 20 фев 2017, 17:17 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 361
Откуда: Новый Уренгой
Пишу распознаватель капчи. Это не первый мой опыт в этом направлении, поэтому раньше времени не критикуйте.
Вообще это нужно для распознавания рукописного ввода, а капча это тренировка на "кошках".
Раньше распознавание делал по маске. Тоесть избавление от фона-фильтрация от шумов-масштабирование-выравнивание-разделение на символы-поиск по маске.
Тут же все намного сложнее, но я решил замахнуться.
От фона избавился, картинку почистил от шумов, увеличил контраст, картинка стала намного лучше читабельная.
Конечной целью планирую построить траекторию движения кисти, траекторию разбить на простые фигуры-дуги и линии, и уже по ним распознавать.

Именно линии и нужны. Вертикальные, горизонтальные, наклонные, дуги..
Скелетизация это то что надо. Но сначала всетаки нужно привести картинку к чб. Просто выкосить информацию о цвете нельзя, она содержит полезную информацию, как например слой или разделитель. Поэтому сейчас работаю над предварительными фильтрами. Без них скелетизация паршивая, фото во вложении. Попытаюсь для начала распознать тиснение.


Вложения:
VK terror.png
VK terror.png [ 66.52 Кб | Просмотров: 1367 ]

_________________
реверс STM8
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм увеличения четкости изображения
СообщениеДобавлено: 21 фев 2017, 12:04 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2634
Откуда: Санкт-Петербург
Конкретно для этой картинки напрашивается классификация точек скелета по цвету.
Для большей надёжности:
Берём цвет C (rgb) как среднее по окрестности
Считаем вектор C-C0, где C0 - цвет фона
Нормируем вектора (чтобы не так зависеть от яркости)
Кластеризуем (метод k-средних должен сойти)
Итого получите отдельно точки символов, отдельно прочие.

Упрощённый вариант "на посмотреть": посчитать цвет точек скелета, посчитать разницу с фоном, нормализовать и контрастировать до максимума (чтобы r, g, b были на весь диапазон от 0 до 255)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм увеличения четкости изображения
СообщениеДобавлено: 21 фев 2017, 14:20 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 2471
casus писал(а):
Пишу распознаватель капчи. Это не первый мой опыт в этом направлении, поэтому раньше времени не критикуйте.
Вообще это нужно для распознавания рукописного ввода, а капча это тренировка на "кошках".

Самое место, что бы применить deep learning. Вот тут лежит упрощенный набор данных для тренировки распознавания рукописного ввода. Многие обучающие публикации по deep learning и распознаванию используют этот набор для тренировки моделей. Например вот этот туториал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм увеличения четкости изображения
СообщениеДобавлено: 23 фев 2017, 18:04 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 361
Откуда: Новый Уренгой
Возникла проблема с матрицей свертки. Например имею матрицу 3x3 со значениями -1 и якорем 9. Тоесть фильтр увеличения резкости.
Делитель в этом случае= 9 + (-1 * 8) = 1. Но сумма произведений иногда больше 255. Как правильно обработать сумму произведений, чтобы результат записать в пиксель над которым применяется фильтр? Ответов не нашел.
Иногда сумма произведений может быть например -400. Ясно что в таком виде записывать ее глупо. Делить на 1 тоже.

Если поделить всю сумму произведений на размер матрицы (9) получается следущее:


Вложения:
Комментарий к файлу: Не работает как надо
Sharpness not work.png
Sharpness not work.png [ 70.72 Кб | Просмотров: 1220 ]

_________________
реверс STM8
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм увеличения четкости изображения
СообщениеДобавлено: 23 фев 2017, 18:43 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2634
Откуда: Санкт-Петербург
Тупо ограничивать. Получили -400 - значит, 0. Получили 500 - 255.

Но вообще такая суровая матрица - явный оверкилл. А если хотите именно выравнивать фон - почитайте про математическую морфологию. Конкретнее - операции закрытие (closing) и tophat.
(единственное - потом ещё придётся прочитать, как правильно считать максимум/минимум по бегущему окну - алгоритм ван Херка; забавно, но этот алгоритм, несмотря на свою простоту, был изобретён относительно недавно - вроде первая статья про него вышла в 1992).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм увеличения четкости изображения
СообщениеДобавлено: 23 фев 2017, 19:26 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 361
Откуда: Новый Уренгой
Спасибо, прочитаю, а так прогресс на картинке. Уже можно распознать каждое десятое изображение.
Взял менее агрессивную матрицу. Заполнил ее по гауссу и вот результат.


Вложения:
Sharpness work.png
Sharpness work.png [ 78.11 Кб | Просмотров: 1203 ]

_________________
реверс STM8
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 


Часовой пояс: UTC + 5 часов


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB