Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
Opencv 斑点的像素高度和宽度_Opencv - Fatal编程技术网

Opencv 斑点的像素高度和宽度

Opencv 斑点的像素高度和宽度,opencv,Opencv,我有一些斑点的图像。有些是一个像素点,有些不是。当我使用cvBlobsLibs查找一个像素点的高度和宽度时,它显示的值等于零。这是正确的吗?我试图用轮廓来填充一个点像素,但似乎也失败了。有没有其他方法可以去除一点像素,甚至去除等于零的高度或宽度?我不知道为什么单个像素元素的面积为零。(我的想法是应该是这样的)。查看文档以了解更多信息。上面说,面积是用绿色公式计算的,所以面积和像素数可能不同 其次,要消除这种干扰,可以使用medianFilter。下面我使用Python展示了它 输入图像: 现在

我有一些斑点的图像。有些是一个像素点,有些不是。当我使用cvBlobsLibs查找一个像素点的高度和宽度时,它显示的值等于零。这是正确的吗?我试图用轮廓来填充一个点像素,但似乎也失败了。有没有其他方法可以去除一点像素,甚至去除等于零的高度或宽度?

我不知道为什么单个像素元素的面积为零。(我的想法是应该是这样的)。查看文档以了解更多信息。上面说,面积是用绿色公式计算的,所以面积和像素数可能不同

其次,要消除这种干扰,可以使用medianFilter。下面我使用Python展示了它

输入图像:

现在代码:

>>> img2 = cv2.imread('D:\Abid_Rahman_K\work_space\mask.png',0)

>>> contours,hierarchy = cv2.findContours(img,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
非零像素数:

>>> cv2.countNonZero(img2)
121
>>> blur = cv2.medianBlur(img2,5)
>>> cv2.countNonZero(blur)
0
现在应用medianFilter并再次检查非零像素数:

>>> cv2.countNonZero(img2)
121
>>> blur = cv2.medianBlur(img2,5)
>>> cv2.countNonZero(blur)
0
输出图像:

编辑

如果图像有对象,则模糊不会对其产生太大影响

输入图像:

输出图像:

在此答案的第二条评论后编辑。

正如Mizuki所评论的,在中值滤波后,紧密放置的对象有可能相互连接。为了理解这一点,我在这里给出了一张维基百科页面上的图片。使用大半径中值滤波器后,检查由黑线分隔的黄色对象如何连接

这是因为,中值滤波器使用一个窗口来计算该窗口中所有值的中值,并用该中值替换中心元素。随着窗口大小的增加,将使用更多的元素来计算中值。这样就消除了狭窄的间隙

维基百科的文章很好:

另请参见此链接以获取简单解释:

为了避免这种情况,还有另一种方法叫做腐蚀和膨胀(都是在OpenCV中实现的)。简单地说,侵蚀减小了白色物体的大小,膨胀增大了白色物体的大小

所以侵蚀会去除小的白色像素,但也会缩小物体的大小。所以我们用扩张来恢复它的大小。因为,由于腐蚀,所有白噪声都已被去除,所以它们不会以膨胀的形式回来


这是一个很好的消除噪音的步骤。

感谢您的回复和回答。中值滤波器可以去除一个像素点和那些“h和w等于零”的斑点。但有一点是,这些斑点也连接在一起,这不是我想要的。不管怎样,我想我也可以用它。谢谢你,阿比德。如果您有时间,不妨尝试一下cvBlobsLib。你会看到,如果它是一个像素点,那么宽度和高度都是零。是的,OpenCV本身就是零。(cvBlobsLib也是如此)。我忘了还有一件事要提,那就是这些斑点之间的联系。我有一个主意。我会尽快编辑它的工作。