C 如何检测具有相同背景的图像的边缘?

C 如何检测具有相同背景的图像的边缘?,c,opencv,C,Opencv,我正在尝试使用 cvFindContours(灰色、存储和轮廓、尺寸(CvContour)、CV_RETR_列表、CV_链近似、cvPoint(0,0)); 而且很精明,但我无法察觉。 有什么方法可以检测到它吗?(所有的处理都是用c语言完成的)首先均衡图像以获得更好的对比度。它也会增加噪音和其他纹理,但物体会非常明显 现在,找到梯度,它将避开大部分渐变颜色和噪声以及一些纹理 现在您可以尝试一些阈值,它将提供良好的边缘和阴影和对象周围的区域 为了去除噪声和纹理,可以对整个图像进行大核的中值模糊,然

我正在尝试使用 cvFindContours(灰色、存储和轮廓、尺寸(CvContour)、CV_RETR_列表、CV_链近似、cvPoint(0,0)); 而且很精明,但我无法察觉。
有什么方法可以检测到它吗?(所有的处理都是用c语言完成的)

首先均衡图像以获得更好的对比度。它也会增加噪音和其他纹理,但物体会非常明显

现在,找到梯度,它将避开大部分渐变颜色和噪声以及一些纹理

现在您可以尝试一些阈值,它将提供良好的边缘和阴影和对象周围的区域

为了去除噪声和纹理,可以对整个图像进行大核的中值模糊,然后对其进行阈值化,得到感兴趣的区域掩模


您也可以尝试上述方法的多次迭代。它不需要很多精度,尝试模糊纹理。

我想我会在拍照前改变我的物体所在的背景,或者改变拍摄对象的照明!!!你的机会是背景中有阴影(如果图像质量保持不变)。因此,您可以尝试从阴影开始,并尝试从那里提取非常低的阈值边缘。不幸的是,您可能无法轻松区分阴影和对象,因此提取的对象可能包含阴影瑕疵。