找到黑色方块的x和y坐标 - Matlab

时间:2011-04-08 18:10:49

标签: matlab image-processing

我有车牌照片,数字标有黑色方块。 我想要的是得到方块的所有坐标,并用它将它们从盘子上切下来。

例如这是原始图像:

enter image description here

这是在标记数字之后:

enter image description here

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:3)

这是在Matlab中实现它的一种方法

%# read the first image
img = imread('http://i.stack.imgur.com/s9A4m.jpg');
%# convert it to a binary image
img = rgb2gray(img);
img = img > 200;
%# remove the connecting lines
img = imclose(img,strel('disk',5));
%# use bwlabel to replace the black squares with a index (1,2,3...)
lblImg = bwlabel(~img);

%# read the second image, make it binary
img2 = imread('http://i.stack.imgur.com/PtKzw.jpg');
img2 = img2 > 200;

%# create the output - each number is now labeled with an index
out = double(~img2).*lblImg;

%# visualize all
figure,imshow(label2rgb(out,'jet','k','shuffle'))

enter image description here

%# extract and show label #1
firstNumber = out==1;
imshow(firstNumber);

enter image description here

答案 1 :(得分:1)

我不做Matlab,但我可以告诉你如何在Mathematica中做到这一点。希望你能翻译!

enter image description here

答案 2 :(得分:0)

查看图像处理工具箱。

函数bwdist,imregionalmin和bwselect应该能够为你提供方形坐标。

答案 3 :(得分:0)

草绘答案,因为我匆忙。你在方块中有一些白点和一些连接正方形的黑色条纹。查找形态操作,例如:

http://www.mathworks.com/help/toolbox/images/ref/imclose.html

用一个小的结构元素(3x3正方形或类似元素)关闭图像,以消除正方形中的噪点。

使用更大的结构元素(10x10平方或更大)打开图像,摆脱连接的条纹位。

然后使用像bwlabel这样的函数来分割/标记剩余的像素。这有点不精确,因为正方形会在边缘处失去一些结构。