根据白色边界将网格分割为单元格

3

如果我有这样一张图片

enter image description here

我想按照网格划分图像并将其保存到矩阵中。如果我知道每个单元格的大小,那么我就可以创建一个新的4-D矩阵,并将每个单元格的像素值保存到新矩阵中。

例如:

[m n]=size(img);
a=ones(m/64,n/64,64,64);
x=0;y=0;
for i = 1:m
    for j = 1:n
        ti=i/64;
        tj=j/64;
        a(ti+1,tj+1,i-ti,j-tj)=img(i,j);
    end;
end

但是如果我们不知道每个单元格的大小,我不知道如何做到这一点,我们只需要根据白色边界分割单元格。

另外,我不想要网格的像素,我只需要网格线内部的所有像素。

请告诉我如何在Matlab中实现这个功能。

2个回答

2

2
这可以通过使用霍夫变换来实现 - http://en.wikipedia.org/wiki/Hough_transform 用于检测线并使用它们来计算交点。
这可以使用像Openc之类的库轻松计算,具有预先制作的函数以计算霍夫变换,以下是一个教程:http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html 在数独谜题中检测行和上述目的非常相似,其中如何使用霍夫转换的教程已经在以下网站中提及:http://aishack.in/tutorials/sudoku-grabber-with-opencv-plot/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接