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