Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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
用MatLab计算图像上的目标个数_Matlab_Image Processing_Object Recognition - Fatal编程技术网

用MatLab计算图像上的目标个数

用MatLab计算图像上的目标个数,matlab,image-processing,object-recognition,Matlab,Image Processing,Object Recognition,我需要用MatLab计算图像上的粉笔数。我尝试将图像转换为灰度图像,然后分配边框。我还尝试将我的图像转换为二值图像,并对其进行不同的形态学操作,但没有得到理想的结果。可能是我做错了什么。请帮帮我 我的形象: 你可以利用粉笔是彩色的,隔板是灰色的这一事实。使用rgb2hsv将图像转换为HSV颜色空间,并获取饱和度分量。设置阈值,然后尝试使用形态学来分离粉笔碎片。好的,所以我花了一点时间在这方面-但不幸的是,我今天没有时间,我为不完整的答案道歉,但这可能会让你开始-(如果你需要更多帮助,我会在周末编

我需要用MatLab计算图像上的粉笔数。我尝试将图像转换为灰度图像,然后分配边框。我还尝试将我的图像转换为二值图像,并对其进行不同的形态学操作,但没有得到理想的结果。可能是我做错了什么。请帮帮我

我的形象:


你可以利用粉笔是彩色的,隔板是灰色的这一事实。使用
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); 

它仍然会拾取图像侧面的边缘,但从这里开始,您将使用connected
bwconnectedcomponents
,您将获得长轴和短轴的长度,通过查看对象的比率,它将去除这些长度

祝你好运

编辑: 我稍微多玩了一下代码,并用新的结果更新了上面的代码。在一些情况下,当我能够消除侧面的“噪音”时,它也消除了侧面的粉笔。我想我应该把这两个都留在家里

我所做的:在大多数情况下,转换到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给你上传的图像起的名字。另外,我刚刚注意到代码中有一个轻微的错误,为了纠正这个错误,我进行了更新。另外,很高兴我能帮上忙-我需要的唯一感谢是一个被接受的答案:)如果你有更多的问题,请告诉我。也非常感谢你)这可能会对我有所帮助。