我正在做一些低层次的图像处理项目,我需要定位一个物体的位置。在这种情况下,它是一颗彗星。我玩了一下阈值,得到了一个非常接近二进制的图像,但我下一步需要的是在一大组白色像素的中间定位一个固定点,这样它就可以被跟踪了。你知道该怎么做吗?这是我得到的屏幕截图。

Link to the photo
有没有办法过滤掉图片上所有的白点?是不是有一种函数可以给所有的小群体赋值"0"?提前感谢!
发布于 2014-04-11 19:12:20
也许你在找这个-
代码
%%// Read in image and convert to binary
img = imread(IMAGE_FILEPATH);
BW = im2bw(img);
%%// Get only the comet blob, which is the biggest blob
[L, num] = bwlabel(BW);
counts = sum(bsxfun(@eq,L(:),1:num));
[~,ind] = max(counts);
BW = (L==ind);
%%// Find the centroid of the comet blob
stats = regionprops(BW, 'Centroid');
center_point = stats.Centroid输出
center_point =
56.7471 131.9373

注意:还有另一个问题-- ,它与这个案例有关。
发布于 2014-04-11 19:10:30
MATLAB regionprops是你的朋友,你的形象对于你想做的事情来说是足够好的。
regionprops做的正是你需要的(你得到了重心的X,Y)。由于它还提供了面积,因此您可以过滤结果并仅保留图像中最大的对象。
发布于 2014-04-11 19:12:35
你的问题似乎已经用regionprops解决了,就像其他人已经提出的那样,但是如果你对消除图像中的小白色伪像感兴趣的话:
您可以对您的二进制图像应用一个或多个步骤的erosion,从而消除小白点(但也减小了您的彗星的大小!)。
https://stackoverflow.com/questions/23010576
复制相似问题