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

时间:2012-10-04 08:24:25

标签: matlab image-processing

如果我有这样的图像

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 个答案:

答案 0 :(得分:2)

有一个很好的Matlab演示来解决这个问题,Microarray image case study.

答案 1 :(得分:2)

这可以使用霍夫变换 - http://en.wikipedia.org/wiki/Hough_transform

来实现

检测线条并使用它们来计算交叉点。

这可以使用像Openc这样的库来轻松计算,这些库有现成的函数来计算Hough变换,这里有一个教程:http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html

和一个非常类似的目的是检测数独谜题中的线,以下网站已经提到了如何使用Hough变换的教程:http://aishack.in/tutorials/sudoku-grabber-with-opencv-plot/