我有车牌照片,数字标有黑色方块。 我想要的是得到方块的所有坐标,并用它将它们从盘子上切下来。
例如这是原始图像:
这是在标记数字之后:
任何帮助将不胜感激。
答案 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'))
%# extract and show label #1
firstNumber = out==1;
imshow(firstNumber);
答案 1 :(得分:1)
我不做Matlab,但我可以告诉你如何在Mathematica中做到这一点。希望你能翻译!
答案 2 :(得分:0)
查看图像处理工具箱。
函数bwdist,imregionalmin和bwselect应该能够为你提供方形坐标。
答案 3 :(得分:0)
草绘答案,因为我匆忙。你在方块中有一些白点和一些连接正方形的黑色条纹。查找形态操作,例如:
http://www.mathworks.com/help/toolbox/images/ref/imclose.html
用一个小的结构元素(3x3正方形或类似元素)关闭图像,以消除正方形中的噪点。
使用更大的结构元素(10x10平方或更大)打开图像,摆脱连接的条纹位。
然后使用像bwlabel这样的函数来分割/标记剩余的像素。这有点不精确,因为正方形会在边缘处失去一些结构。