检测物体上光反射的最可靠方法是什么

时间:2019-05-04 08:17:06

标签: opencv image-processing computer-vision

我正在执行的任务需要分析对象上的线灯反射。在某些情况下,(无意中)存在另一个光源,我只想掩盖灯的反射。

我试图通过以下方式掩盖线条:

cimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blurred = cv2.medianBlur(cimg, 5)
thresh = cv2.threshold(blurred, 210, 255, cv2.THRESH_BINARY)[1]

在某些情况下,这会创建一个好的蒙版,而在某些情况下会失败。 下面是两个示例:

期望结果的证明:

enter image description here enter image description here

不良结果示例:

enter image description here enter image description here

有人知道掩盖这种光反射的好方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

top-hat transform是将这些线条与背景渐变隔离开的最合适的工具。

高顶礼帽是“数学形态学”的过滤器。定义为图像与其开口之间的差异。

例如,从您的第二张图片中我得到:

isolated line

我使用了一个直径为10像素的圆盘的开口。您需要选择一个直径,该直径要大于要隔离的对象,但小于背景中的任何变化。在这种情况下,背景是简单的渐变,因此任何东西都小于它。

请注意,输入图像具有一些重要的JPEG压缩伪像,这些伪像会影响您在此处看到的结果。输出更好,输入图像质量更好。