Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2012, 15:20   #1
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию Расшифровка размазанных QR кодов =)

Доброго времени суток. Пару дней назад завершилась акция http://www.idemvkino.ru/events/?pub=237&page=1 в которой можно было получить билеты в кино если расшифровать QRCode, акция прошла -интерес остался. Если б не был он так размылен, то вопросов бы не было, но эти ребята здорово усложнили задачу.
Я пробовал рисовать, но выходит чушь (64x64) а если в паинте прикинуть, то ~135. Думаю лучше найти алгоритм.
Может кто поделится соображениями, как этот QR код привести в человеческий вид и прочитать


Ой, только что перечитал условия акции -в следующий раз не буду доверять чужим глазам.
Оказывается я все переврал и сложность была в том, чтоб найти плакат с кодом, а код вроде должен быть нормальным.
Но рас уж тему я создал, кто знает как это размылить?
Изображения
Тип файла: jpg 1000.jpg (85.2 Кб, 125 просмотров)
Тип файла: jpg 1.jpg (100.9 Кб, 141 просмотров)
пыжок

Последний раз редактировалось maloun; 04.09.2012 в 15:41.
maloun вне форума Ответить с цитированием
Старый 04.09.2012, 16:00   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Можно попробовать уменьшить детализацию изображения - разбить его на квадраты и по каким-нибудь правилам считать что он обозначает - чисто поле или еще что.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 04.09.2012, 16:22   #3
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Можно попробовать уменьшить детализацию изображения - разбить его на квадраты и по каким-нибудь правилам считать что он обозначает - чисто поле или еще что.
Если делить на квадраты, то нужен точный, а не примерный размер + точка старта.
Известны только размеры неизменных деталей. http://upload.wikimedia.org/wikipedi...0%BE%D0%B4.png
Картинка размыта так, что некоторые пиксели сдвинуты и даже если проверять каким-то образом вычисленный квадрат\пиксель -QR кода
процентным отношением черного к белому, то скорее всего полученная картинка будет сдвинута или половины не досчитаемся (что гораздо хуже).
Хотя если размытие было равномерное, то обратный алгоритм вернул бы чистую картинку.

Кстати а в delphi есть компоненты для чтения QR кодов? Я вот пользуюсь этим http://dansl.net/qrreader/
пыжок

Последний раз редактировалось maloun; 04.09.2012 в 16:41.
maloun вне форума Ответить с цитированием
Старый 04.09.2012, 20:28   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Не нужно привязываться к пикселям. У тебя же не пиксель отвечает за единицу изображения на бар-коде. Наоборот, известна же длина и ширина кода в единицах кода (то есть сколько полезных точек несет в себе код). Допустим получится один элемент равен матрице 5х5 пикселей. Вот нужно из них и брать процентное отношение.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 04.09.2012, 20:59   #5
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Процентное соотношение приводилось как метод определения цвета пикселя (он больше черный или белый (больше\меньше 50%)).

А о каком процентом соотношении идет речь?

Так можно определить длину бар кода по опорным точкам,
или как я понял "единицам кода", в общем рыженьким на картиночке ?
Кстати у нас есть центральная точка что упрощает поиски длинны в 4 раза
Изображения
Тип файла: png center.png (8.0 Кб, 96 просмотров)
Тип файла: png QrQR.png (37.9 Кб, 96 просмотров)
пыжок

Последний раз редактировалось maloun; 04.09.2012 в 21:35.
maloun вне форума Ответить с цитированием
Старый 05.09.2012, 14:21   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
или как я понял "единицам кода", в общем рыженьким на картиночке
Нет, нужно взять целый и годный код, как у Вас на картинке. И в нем минимальная закрашенная точка и есть единица кода. Но на размытом изображении она состоит не из одного пиксела, а из матрицы NxM пикселов. Нам нужно загрубить изображение, чтобы единица кода соответствовала одному пикселу. Это можно сделать если исходить из того, что длина/ширина кода известна заранее (взята с эталона как на последней картинке).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 06.09.2012, 14:03   #7
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Нет, нужно взять целый и годный код, как у Вас на картинке. И в нем минимальная закрашенная точка и есть единица кода. Но на размытом изображении она состоит не из одного пиксела, а из матрицы NxM пикселов. Нам нужно загрубить изображение, чтобы единица кода соответствовала одному пикселу. Это можно сделать если исходить из того, что длина/ширина кода известна заранее (взята с эталона как на последней картинке).
да никто не спорит, только проблема как раз в нахождении длины!
А длина кода прямо-пропорционально зависит от количества данных в нем же.
Вот пример, под каждым кодом на картинке приведено количество символов зашифрованных в коде, а сверху длина в пикселях.
Кстати вокруг неизвестной части кода рамка 8 пикселей
Изображения
Тип файла: png вот.png (6.6 Кб, 73 просмотров)
Вложения
Тип файла: rar 1000.rar (269.1 Кб, 10 просмотров)
пыжок

Последний раз редактировалось maloun; 06.09.2012 в 15:41.
maloun вне форума Ответить с цитированием
Старый 07.09.2012, 06:49   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Мне кажется размер боковых квадратиков которые Вы уже определили и расстояние между ними должны указывать Вам на общий размер квадратика содержащего весь код.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 07.09.2012 в 14:59.
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расшифровка HTML-кодов кириллицы mixer94 Работа с сетью в Delphi 8 03.09.2011 17:26
обновление в блоге - Расшифровка скан-кодов клавиш Pblog Обсуждение статей 0 31.05.2011 21:30