用MatLab计算图像上的目标个数
我需要用MatLab计算图像上的粉笔数。我尝试将图像转换为灰度图像,然后分配边框。我还尝试将我的图像转换为二值图像,并对其进行不同的形态学操作,但没有得到理想的结果。可能是我做错了什么。请帮帮我 我的形象:用MatLab计算图像上的目标个数,matlab,image-processing,object-recognition,Matlab,Image Processing,Object Recognition,我需要用MatLab计算图像上的粉笔数。我尝试将图像转换为灰度图像,然后分配边框。我还尝试将我的图像转换为二值图像,并对其进行不同的形态学操作,但没有得到理想的结果。可能是我做错了什么。请帮帮我 我的形象: 你可以利用粉笔是彩色的,隔板是灰色的这一事实。使用rgb2hsv将图像转换为HSV颜色空间,并获取饱和度分量。设置阈值,然后尝试使用形态学来分离粉笔碎片。好的,所以我花了一点时间在这方面-但不幸的是,我今天没有时间,我为不完整的答案道歉,但这可能会让你开始-(如果你需要更多帮助,我会在周末编
你可以利用粉笔是彩色的,隔板是灰色的这一事实。使用
rgb2hsv
将图像转换为HSV颜色空间,并获取饱和度分量。设置阈值,然后尝试使用形态学来分离粉笔碎片。好的,所以我花了一点时间在这方面-但不幸的是,我今天没有时间,我为不完整的答案道歉,但这可能会让你开始-(如果你需要更多帮助,我会在周末编辑这篇文章,给你一个更完整的答案:))
这是密码-
for i=1:3
I = RWBDS(:,:,i);
se = strel('rectangle', [265,50]);
Io = imopen(I, se);
Ie = imerode(I, se);
Iobr = imreconstruct(Ie, I);
Iobrd = imdilate(Iobr, se);
Iobrcbr = imreconstruct(imcomplement(Iobrd), imcomplement(Iobr));
Iobrcbr = imcomplement(Iobrcbr);
Iobrcbrm = imregionalmax(Iobrcbr);
se2 = strel('rectangle', [150,50]);
Io2 = imerode(Iobrcbrm, se2);
Ie2 = imdilate(Io2, se2);
fgm{i} = Ie2;
end
fgm_final = fgm{1}+fgm{2}+fgm{3};
figure, imagesc(fgm_final);
它仍然会拾取图像侧面的边缘,但从这里开始,您将使用connectedbwconnectedcomponents
,您将获得长轴和短轴的长度,通过查看对象的比率,它将去除这些长度
祝你好运
编辑:
我稍微多玩了一下代码,并用新的结果更新了上面的代码。在一些情况下,当我能够消除侧面的“噪音”时,它也消除了侧面的粉笔。我想我应该把这两个都留在家里
我所做的:在大多数情况下,转换到HSV颜色空间是一种方法,但正如@rayryeng所示,这不是一种方法。当有一种颜色时,色调效果非常好——例如,如果所有的粉笔都是红色的话。(从逻辑上讲,你会认为使用颜色通道会更好,但事实并非如此。)然而,在这种情况下,所有粉笔的唯一共同点是相对形状。我的解决方案基本上使用了这个概念,将结构元素se
设置为粉笔的基本形状和比例,并执行形态学操作——正如您最初猜测的那样
有关更多详细信息,我建议您阅读有关这些特定函数的matlab文档
我会让你根据我给你的东西找出如何得到最后一支粉笔:)这也不是一个完整的解决方案,但希望它能为你或其他人提供一个起点 像迪玛一样,我注意到粉笔的颜色很鲜艳,而分割线几乎是灰色的。我想你可以试着分离出灰色像素(其中一个灰色像素表示红色=蓝色=绿色),然后从那里开始。我尝试应用过滤器和进行形态学操作,但没有找到令人满意的结果。不过,我希望这能有所帮助
mim=imread('http://i.stack.imgur.com/RWBDS.jpg');
%我们平均所有3个颜色通道(注意这并不完全等同于
%RGB2(灰色)
灰度=uint8(平均值(mim,3));
%现在我们说如果所有通道(r,g,b)都在彼此的某个阈值之内
%(可能有更好的方法)
my_gray_thresh=25;
灰度掩模=(绝对值(mim(:,:,1)-灰度)
你有没有尝试过分水岭算法?有13支粉笔。实际上我一直在尝试。。。我还没有设法用HSV和饱和分量来区分这些部分。这就是为什么我还没有写一个答案:(吹走粉笔灰可能会有帮助。)完全。事实上,在阈值化之后,图像的边界被弄乱了,因为它!非常感谢您的回答!这对我来说将是一个好的开始,我会努力配合它。但老实说,我在这个问题上不是很有能力,所以如果你能给我更完整的答案(当然,如果你有时间的话),我将非常感激。再次非常感谢你的帮助!你做了很多工作,帮了我很多忙。但我还有一个问题:这个函数RWBDS是什么意思?因为我在这部分有个错误。(很抱歉我不理解)哦,这只是stack overflow给你上传的图像起的名字。另外,我刚刚注意到代码中有一个轻微的错误,为了纠正这个错误,我进行了更新。另外,很高兴我能帮上忙-我需要的唯一感谢是一个被接受的答案:)如果你有更多的问题,请告诉我。也非常感谢你)这可能会对我有所帮助。