1

我是matlab的新手,我正在尝试编写一个可以将手写数字从平方页面背景中分离出来的代码。我曾尝试使用 kmeans 来区分线条和 squers 的数字,但它不适用于所有图像。有什么想法我该怎么做?太棒了!

4

1 回答 1

2

我在 R 中使用 EBImage 包,但我相信你可以在 matlab 中找到等效的包:

从原始图像开始: 在此处输入图像描述

# 读取并提取灰度图像
# 用 3 个中心运行 kmeans
km = kmeans(as.vector(x), 3)
c = km$centers

# 1 0.4936797
# 2 0.2841005
# 3 0.6456494

# 提取最小的簇 2(你的数字)作为二值图像
t = (km$cluster==2)
r = 矩阵(t, nrow(x))

r 现在看起来像:

在此处输入图像描述

# 应用具有最小可能结构元素的形态开口(腐蚀然后膨胀)
kern = makeBrush(3, 'box')

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

z = openingGreyScale(r, kern)

z 现在看起来像

在此处输入图像描述

于 2013-05-03T20:13:35.087 回答