Re[3]: Распознование изображения
От: R.K. Украина  
Дата: 22.05.13 20:20
Оценка: 3 (1)
Здравствуйте, superbober, Вы писали:

S>Обновил картинку

S>

S>Решил взять такие же квадраты ка и в qr коде. Растояния между квадратами и сами квадраты с данными на картинке.


RK>>Эта картинка с квадратами, в каком виде она подается на вход программы?

S>Будет с web камеры фото

RK>>Она полутоновая/цветная или уже бинаризована? В первом случае могут ли быть колебания контраста или участки не в фокусе?

S>Из проги по ссылке которую дали тут, я взял код который получается обесцвечивает ее и бинаризирует, т.е это в принципе есть.
S>А также находит квадраты как в qr коде по паттерну ка я понял

RK>>Какие искажения геометрии картинки могут быть: наклон, масштабирование, перспективные?

S>Мм..сорри я не очень знаю, но так ка изображение будет с веб камеры то думаю что — наклон точно но не большой, маштаб тоже, перспективные — мм... наверно или нет?


S>Вот не могуль только разобраться как мне искать мои квадраты с данными? какой алгоритм поиска с учетом искажений геометрии?


Если известны примерные размеры внешних квадратов, а также процент мусора в них (белых пикселей), то для их нахождения можно применить морфологию.
А именно фильтр порядковой статистики (Rank filter) со структурирующим элементом (SE) равным внешнему квадрату (а лучше даже с вписанным в квадрат диском для игнорирования поворота).
Медианный фильтр (Median filter) является его частным случаем, когда порядок равен 50%.
Например, известно, что процент мусора не превышает 20%. Тогда после применения 80%-фильтра на картинке останутся только те точки, которые были в середине квадратов, а весь более мелкий мусор отфильтруется.
Потом можно найти выпуклую оболочку (Convex hull) этих точек — крайние точки слева и сверху и будут центрами искомых квадратов.
По их координатам можно вычислить матрицу преобразования и скомпенсировать исходную картинку обратной матрицей.
Для подавления мусора внутренние квадраты тоже можно фильтровать порядковой статистикой (после компенсации геометрии можно использовать квадрат в качестве SE).

S>Заранее огоромное спасибо
You aren't expected to absorb this
Распознование изображения
От: superbober  
Дата: 19.05.13 19:17
Оценка:
Доброго времени суток!
Я не очень знаком с распознование изображения, поэтому буду благодарен за любой совет/направление.

Так вот, задача у меня стоит, надо распознать такое изображение
и получить булевую матрицу с результатом [0,0]=false,[0,1]=true.....[1,0]=false,[1,1]=true...
4 заполненых квадрата для стабилизации изображения надо я так понимаю, и соответственно для нахождения начала/конца.

Может мне кто либо помочь с алгоритмом? Буду писать на c#, но задача не привязана к языку поэтому если есть примеры на других яп, буду признателен.
ocr распознование c#
Re: Распознование изображения
От: Ops Россия  
Дата: 19.05.13 19:59
Оценка:
Здравствуйте, superbober, Вы писали:

http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library не подойдет?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[2]: Распознование изображения
От: superbober  
Дата: 19.05.13 20:56
Оценка:
Здравствуйте, Ops, Вы писали:
Спасибо, что то похоже я уже нашел. Я понимаю что смысл у меня тут превратить изображение в бинарное, это я же понял как.
Но дальше я не знаю куда двигаться? Т.е как мне найти прямоугольники?
Re: Распознование изображения
От: R.K. Украина  
Дата: 20.05.13 19:24
Оценка:
Здравствуйте, superbober, Вы писали:

S>Доброго времени суток!

S>Я не очень знаком с распознование изображения, поэтому буду благодарен за любой совет/направление.

S>Так вот, задача у меня стоит, надо распознать такое изображение

S>и получить булевую матрицу с результатом [0,0]=false,[0,1]=true.....[1,0]=false,[1,1]=true...
S>4 заполненых квадрата для стабилизации изображения надо я так понимаю, и соответственно для нахождения начала/конца.

Эта картинка с квадратами, в каком виде она подается на вход программы?
Она полутоновая/цветная или уже бинаризована? В первом случае могут ли быть колебания контраста или участки не в фокусе?
Какие искажения геометрии картинки могут быть: наклон, масштабирование, перспективные?
You aren't expected to absorb this
Re[2]: Распознование изображения
От: superbober  
Дата: 21.05.13 12:13
Оценка:
Здравствуйте, R.K., Вы писали:

RK>Здравствуйте, superbober, Вы писали:


S>>Доброго времени суток!

S>>Я не очень знаком с распознование изображения, поэтому буду благодарен за любой совет/направление.

S>>Так вот, задача у меня стоит, надо распознать такое изображение

S>>и получить булевую матрицу с результатом [0,0]=false,[0,1]=true.....[1,0]=false,[1,1]=true...
S>>4 заполненых квадрата для стабилизации изображения надо я так понимаю, и соответственно для нахождения начала/конца.

RK>Эта картинка с квадратами, в каком виде она подается на вход программы?

RK>Она полутоновая/цветная или уже бинаризована? В первом случае могут ли быть колебания контраста или участки не в фокусе?
RK>Какие искажения геометрии картинки могут быть: наклон, масштабирование, перспективные?

Обновил картинку


Решил взять такие же квадраты ка и в qr коде. Растояния между квадратами и сами квадраты с данными на картинке.

RK>Эта картинка с квадратами, в каком виде она подается на вход программы?

Будет с web камеры фото

RK>Она полутоновая/цветная или уже бинаризована? В первом случае могут ли быть колебания контраста или участки не в фокусе?

Из проги по ссылке которую дали тут, я взял код который получается обесцвечивает ее и бинаризирует, т.е это в принципе есть.
А также находит квадраты как в qr коде по паттерну ка я понял

RK>Какие искажения геометрии картинки могут быть: наклон, масштабирование, перспективные?

Мм..сорри я не очень знаю, но так ка изображение будет с веб камеры то думаю что — наклон точно но не большой, маштаб тоже, перспективные — мм... наверно или нет?


Вот не могуль только разобраться как мне искать мои квадраты с данными? какой алгоритм поиска с учетом искажений геометрии?

Заранее огоромное спасибо
Re: Распознование изображения
От: DimaR Ниоткуда  
Дата: 22.05.13 06:44
Оценка:
S>Может мне кто либо помочь с алгоритмом? Буду писать на c#, но задача не привязана к языку поэтому если есть примеры на других яп, буду признателен.


Надо знать длину квадратиков L или вычислить предварительно.

1) создаешь список1(Х,У) -- массив в котором будут храниться крайние точки найденных квардатиков
2) проходишь по всем точкам
for x = 1 to width do
for y = 1 to height do
begin
if color(x,y)=black then
begin
проход по списку1

если список1 содержит точку, расстояние до которой меньше 1.3*L — значит ничего не делать

если список1 НЕ содержит точку, расстояние до которой меньше 1.3*L — значит добавить (х,у) в список

end;

end;

На выходе получаешь список1, который содержит крайние (верхние левые) точки черных квадратиков.

Далее анализируешь координаты в списке1 -- смотришь какие ячейки твоей матрицы заполнены.
while(work){ money++; time--; if(!time){ die_happy();} }
Re[2]: Распознование изображения
От: DimaR Ниоткуда  
Дата: 22.05.13 07:17
Оценка:
а если найти крайние точки одного квадрата, то можно и центральные точки вычислить

что бы найти другие крайние точки надо модифицировать цикл

for x = 1 to width do
for y = 1 to height do
находит верхние левые точки

for x = width to 1 do
for y = 1 to height do
находит верхние правые точки

for x = 1 to width do
for y = height to 1 do
находит нижние левые точки

for x = width to 1 do
for y = height to 1 do
находит нижние правые точки
while(work){ money++; time--; if(!time){ die_happy();} }
Re[3]: Распознование изображения
От: superbober  
Дата: 22.05.13 18:12
Оценка:
Здравствуйте, DimaR, Вы писали:

А почему именно "расстояние до которой меньше 1.3*L — значит ничего не делать "
И я попробывал применить ваш алгоритм, но он находит не всегда верхнии углы, иногда просто границы квадрата

DR>а если найти крайние точки одного квадрата, то можно и центральные точки вычислить


DR>что бы найти другие крайние точки надо модифицировать цикл


DR> for x = 1 to width do

DR> for y = 1 to height do
DR>находит верхние левые точки

DR> for x = width to 1 do

DR> for y = 1 to height do
DR>находит верхние правые точки

DR> for x = 1 to width do

DR> for y = height to 1 do
DR>находит нижние левые точки

DR> for x = width to 1 do

DR> for y = height to 1 do
DR>находит нижние правые точки
Re: Распознование изображения
От: TimurSPB Интернет  
Дата: 22.05.13 20:35
Оценка:
OpenCV это дело должен потянуть.
http://recog.ru/blog/barcode/3.html — например
Make flame.politics Great Again!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.