我在 OpenCV2.3.1 和 Visual C++ 中有一个汽车检测项目。
在前景分割中,由于照明存在反射。在背景被移除后,这(反射)成为前景的一部分。
我需要有关如何消除这种噪音的建议或想法。因为它会导致一些前景对象作为一个对象连接起来,就像使用 findContours 和 drawContours 函数时看到的那样。请参阅附加图像上以红色突出显示的图像部分。我认为这将简化斑点检测阶段。
*注意 - 我不允许在 OpenCV 中使用内置的 cvBlobLib
我在 OpenCV2.3.1 和 Visual C++ 中有一个汽车检测项目。
在前景分割中,由于照明存在反射。在背景被移除后,这(反射)成为前景的一部分。
我需要有关如何消除这种噪音的建议或想法。因为它会导致一些前景对象作为一个对象连接起来,就像使用 findContours 和 drawContours 函数时看到的那样。请参阅附加图像上以红色突出显示的图像部分。我认为这将简化斑点检测阶段。
*注意 - 我不允许在 OpenCV 中使用内置的 cvBlobLib
这里的问题是眩光的一部分可以是背景或相应的汽车。
这就是我要做的。
我相信通过二值化和阈值化或类似方式识别眩光部分不会有大问题。
一旦识别出所有眩光像素,我将用图像同一行中最近的非眩光像素替换每个眩光像素。这样,汽车和背景就会充满眩光。使用这种方法,您将能够毫无问题地检测汽车。
也许尝试将图像转换为 HSV 然后过滤高 V 量
IplImage imgHSV = cvCreateImage(cvGetSize(imgInput), 8, 3);
IplImage imgThreshold = cvCreateImage(cvGetSize(imgHSV), 8, 1);
cvInRangeS(imgHSV, cvScalar(0, 0, 90, 0), cvScalar(0, 0, 100, 0), imgThreshold);
..根据需要调整标量以消除眩光