Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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 Recognition_Edge Detection_Centroid - Fatal编程技术网

Matlab 将边的端点与直线合并

Matlab 将边的端点与直线合并,matlab,image-recognition,edge-detection,centroid,Matlab,Image Recognition,Edge Detection,Centroid,我正试图用k-NN分类器制作一个物体识别程序。我有一堆图像用于分类器的训练部分,还有一堆图像要识别。这些图像是灰度的,每个图像都有一个对象(只有其边缘)。我需要计算它们的重心,所以我使用 img=im2bw(img) 然后是regionprops(img,'centroid') 问题是其中一些边没有闭合,因此regionprops无法工作。我试着腐蚀图像(边缘是黑色,白色背景),但这些边缘的端点彼此之间距离太远。我试着使用bwmorph函数来实现这一点,但仍然无法实现 有什么想法吗 编辑 我正在

我正试图用k-NN分类器制作一个物体识别程序。我有一堆图像用于分类器的训练部分,还有一堆图像要识别。这些图像是灰度的,每个图像都有一个对象(只有其边缘)。我需要计算它们的重心,所以我使用
img=im2bw(img)
然后是
regionprops(img,'centroid')

问题是其中一些边没有闭合,因此regionprops无法工作。我试着腐蚀图像(边缘是黑色,白色背景),但这些边缘的端点彼此之间距离太远。我试着使用
bwmorph
函数来实现这一点,但仍然无法实现

有什么想法吗

编辑

我正在添加一些图像,以防有人想尝试:

使用形态学运算 使用关闭操作填充结构

1.作为第一步,准备您的图像数据

2.使用简单的块形结构元素 结构要素的定义如下:

strel=ones(3,3);
您可以使用圆盘形元件或任何能给您带来最佳效果的元件

3.多次应用结构化元素 使用侵蚀操作符对原始图像应用strel几次,以关闭您的体形:

for i=1:20
  im1 = imerode(im1,strel);
end

4.放大图像以恢复原始形状 下一步是放大图像以恢复原始外部形状:

for i=1:20
  im1 = imdilate(im1,strel);
end
最终结果 最终结果应适用于获得足够精确的中心或重心


是否解决了您的问题?不,当我使用
imgc=bwconvhull(img)
imgc=bwconvhull(img,'objects')
imgc=bwconvhull(img,'union')时,边缘消失了。
for i=1:20
  im1 = imdilate(im1,strel);
end