php — Улучшение распознавания zbar отсканированных кодов qr

Я пытаюсь прочитать отсканированные коды qr из php, запуская zbarimg через exec. Работает не так уж и плохо.

Проблема в том, что он, кажется, задыхается от артефактов сканирования, таких как эти маленькие точки: введите здесь описание изображения

Я пытался избавиться от white dots syndrome, возясь с Imagick — изменение яркости/контрастности/резкости, кажется, делает их менее заметными, но некоторые, как этот, все еще нечитаемы.

Есть ли способ убрать белые точки/улучшить распознавание zbarimg?


Редактировать:

Одна вещь, которую я забыл указать: что мне кажется странным, так это тот факт, что сканирование QR через смартфон с помощью камеры успешно считывает код в одно мгновение без единой проблемы, что наводит меня на мысль, что это «исправление» даже не должно быть нужно. Я просто неправильно использую zbar? Или мобильные ОС просто используют другой, более совершенный алгоритм? Я также пробовал использовать оболочку zxing для PHP, но она дала еще меньше результатов по сравнению с zbar.


person Hissvard    schedule 07.02.2018    source источник
comment
С исправлением ошибки Low, как в этом случае, повреждение более 7%, и его невозможно прочитать, кто-то должен придумать функцию/алгоритм/фильтр, который обнаруживает 3 основных репера и создает сетку, затем просматривает каждый блок в сетке и исправления по среднему покрытию/цвету в этом блоке. 6к репозиториев на github для генераторов qrcode, 0 фиксеров...   -  person Lawrence Cherone    schedule 07.02.2018
comment
QR-код уже достаточно хорош для чтения, вашему приложению просто нужно слегка подтолкнуть его, о-очень-слегка размыв с помощью Imagick::blurImage.   -  person emcconville    schedule 09.02.2018


Ответы (1)


С точки зрения очистки изображения, которое вы нам показали, очевидным подходом было бы использование сотовой связи. автоматы - хотя для достижения наилучших результатов вам следует изменить поведение, чтобы охватить повышение резкости и пороговое значение, которое вы уже применяете с помощью других фильтров. Вы можете рассмотреть возможность установки размера ячейки, скажем, одной 25-й части разрешения блока QR-кода, а не 1: 1 с пикселями в нечетком изображении. На самом деле вы должны применять пороговое значение с помощью подхода, основанного на гистограмме (при условии, что вы можете изолировать QR-код на изображении).

Я не знаю о реализации на PHP, но есть как минимум один интерфейс OpenCV для PHP

person symcbean    schedule 07.02.2018
comment
Это действительно полезная информация, спасибо. Однако, как я уже сказал выше, мой смартфон без проблем читает точно такой же qr, что заставляет меня думать, что я неправильно использую zbar. - person Hissvard; 07.02.2018