Я новичок в matlab, и я пытаюсь написать код, который может отделять записанные вручную цифры из квадратного фона страницы. Я попытался использовать kmeans, чтобы отличать числа от строк и косых, но он не работает на всех изображениях. Любые идеи, как я могу это сделать? Tahnks!Разделение письменных цифр на квадратной бумаге с ее фоном
1
A
ответ
2
Я использую пакет EBImage в R, но я уверен, что вы можете найти equivilent в MATLAB:
Начиная с оригинальным изображением:
# 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))
г теперь выглядит следующим образом :
# 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)
г теперь выглядит
Не могли бы вы показать пример изображение + результат вашей попытки (в том числе используемого кода)? –
Sure, вот ссылка для загрузки кода: http://www.speedyshare.com/9KAK7/Untitled.m и ссылка на картинку «хороший»: http://www.speedyshare.com/ X8c8T/1.jpeg и ссылайтесь на «плохую» картинку: http://www.speedyshare.com/RCSaU/badpic.jpg – user2339198
и здесь находится документ Word, который показывает результаты: http: // www. speedyshare.com/B3rkx/results.docx – user2339198