3

如果我有这样的图像

在此处输入图像描述

我想根据网格打破图像并将其保存在矩阵中。因此,如果我知道每个单元格的大小,那么我可以制作一个新的 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中执行此操作

4

2 回答 2

2

有一个很好的 Matlab 演示可以解决这个问题,即微阵列图像案例研究。

于 2012-10-04T08:44:27.617 回答
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-阴谋/

于 2012-10-04T15:49:35.573 回答