我有一些包含透明矩形叠加层的图像,类似于以下图像:Image1 Image2。我的目标是检测这些矩形框是否存在(位置无关紧要)。这些框将始终具有与图像侧面平行的边缘。
假设:
尝试的解决方案1:颜色检测
到目前为止,我已经尝试通过cv.threshold
进行颜色检测,以及在多个颜色空间(HSV,LUV,XYZ等)上对cv2.inRange()
使用带通滤波器。颜色检测的问题在于,我还捕获了太多的噪声,因此无法有效地仅调整透明区域的像素。我尝试使用cv2.bitwiseAnd
铺设口罩,但仍然无法将噪音调低到可以忽略的状态。我只尝试使用形态学转换来隔离大组像素,但这仍然失败。
尝试的解决方案2:边缘检测+边缘验证
我第二次尝试检测盒子的方法包括应用cv2.bilateralFilter
,然后通过cv2.Canny
,cv2.HoughLinesP
生成轮廓线。尽管我检测到大量与透明框相关的边缘,但我也得到了许多其他边缘。
要滤除虚假边缘,我将每个线段作为对象并检查左右两侧的一些样本像素。通过应用与我认为传递函数(cv2.addWeighted
)类似的东西,我检查了是否可以重现相似的值。不幸的是,这还不能很好地说明透明框的边缘与“真实边缘”之间的区别。 Result From Edge Detection
任何关于如何检测这些盒子的想法都将受到赞赏!