Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
求黑色正方形的x和y坐标-Matlab_Matlab_Image Processing - Fatal编程技术网

求黑色正方形的x和y坐标-Matlab

求黑色正方形的x和y坐标-Matlab,matlab,image-processing,Matlab,Image Processing,我有一张车牌的图像,号码用黑色的方块标出。 我想要的是得到所有正方形的坐标,然后用它把它们从盘子上切下来 例如,这是原始图像: 这是在标记数字之后: 任何帮助都将不胜感激。我不会使用Matlab,但我可以用Mathematica向您演示如何使用Matlab。希望你能翻译 查看图像处理工具箱 函数bwdist、imregionalmin和bwselect应该能够为您获取平方坐标。在我赶时间的时候,请给出答案。正方形中有一些白点,正方形之间有一些黑色条纹。查找形态学操作,例如: 用一个小的结构

我有一张车牌的图像,号码用黑色的方块标出。 我想要的是得到所有正方形的坐标,然后用它把它们从盘子上切下来

例如,这是原始图像:

这是在标记数字之后:


任何帮助都将不胜感激。

我不会使用Matlab,但我可以用Mathematica向您演示如何使用Matlab。希望你能翻译


查看图像处理工具箱


函数bwdist、imregionalmin和bwselect应该能够为您获取平方坐标。

在我赶时间的时候,请给出答案。正方形中有一些白点,正方形之间有一些黑色条纹。查找形态学操作,例如:

用一个小的结构元素(3x3正方形或类似物)关闭图像,以去除方块中的噪声位

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


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

这里有一种在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'))


@E先生,我有两张照片。首先,我用正方形标记了盘子里的每个数字,然后我想用正方形的细节切割盘子里的数字。或者,如果你有办法从盘子上切下数字,而不先标记它们,那也很好。但我需要一种适合每个盘子的通用方法。那太令人印象深刻了。。我不知道mathematica可以做这些事情。@zephyr mathematica的图像处理能力在最近两个版本中得到了很大的提高。它现在是一个非常好的算法测试平台。也许性能不足以满足生产需要,但您可以在五分钟内完成上述程序,谢谢您的回答。有没有办法只显示数字而不显示所有黑色背景?还有一个问题,有没有办法知道标签上的东西是否是数字?@Michael:要只显示数字,你可以在最后一行写
imshow(~firstNumber)
。要知道你是否有数字,你应该看看OCR方法。再次感谢。我只想剪切数字,没有背景,因为以后我在相关函数中使用它。有没有办法做到这一点?@Michael:所以你只想去掉所有只有背景的区域,对吗?为此,您可以编写
[r,c]=find(firstNumber)
;croppedNumber=firstNumber(最小(r):最大(r),最小(c):最大(c:)`
%# extract and show label #1
firstNumber = out==1;
imshow(firstNumber);