2013-05-01 8 views
1

Я новичок в matlab, и я пытаюсь написать код, который может отделять записанные вручную цифры из квадратного фона страницы. Я попытался использовать kmeans, чтобы отличать числа от строк и косых, но он не работает на всех изображениях. Любые идеи, как я могу это сделать? Tahnks!Разделение письменных цифр на квадратной бумаге с ее фоном

+0

Не могли бы вы показать пример изображение + результат вашей попытки (в том числе используемого кода)? –

+0

Sure, вот ссылка для загрузки кода: http://www.speedyshare.com/9KAK7/Untitled.m и ссылка на картинку «хороший»: http://www.speedyshare.com/ X8c8T/1.jpeg и ссылайтесь на «плохую» картинку: http://www.speedyshare.com/RCSaU/badpic.jpg – user2339198

+0

и здесь находится документ Word, который показывает результаты: http: // www. speedyshare.com/B3rkx/results.docx – user2339198

ответ

2

Я использую пакет EBImage в R, но я уверен, что вы можете найти equivilent в MATLAB:

Начиная с оригинальным изображением: enter image description here

 
# Read and extract greyscale image 
# Run kmeans with 3 centers 
km = kmeans(as.vector(x), 3) 
c = km$centers 

# 1 0.4936797 
# 2 0.2841005 
# 3 0.6456494 

# Extract smallest cluster 2 (your numbers) as binary image 
t = (km$cluster==2) 
r = matrix(t, nrow(x)) 

г теперь выглядит следующим образом :

enter image description here

 
# Apply morphological opening (erode then dilate) with smallest possible structural element 
kern = makeBrush(3, 'box') 

#[,1] [,2] [,3] 
#[1,] 1 1 1 
#[2,] 1 1 1 
#[3,] 1 1 1 

z = openingGreyScale(r, kern) 

г теперь выглядит

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^