我正在执行的任务需要分析对象上的线灯反射。在某些情况下,(无意中)存在另一个光源,我只想掩盖灯的反射。
我试图通过以下方式掩盖线条:
cimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blurred = cv2.medianBlur(cimg, 5)
thresh = cv2.threshold(blurred, 210, 255, cv2.THRESH_BINARY)[1]
在某些情况下,这会创建一个好的蒙版,而在某些情况下会失败。 下面是两个示例:
期望结果的证明:
不良结果示例:
有人知道掩盖这种光反射的好方法吗?
谢谢!
答案 0 :(得分:1)
top-hat transform是将这些线条与背景渐变隔离开的最合适的工具。
高顶礼帽是“数学形态学”的过滤器。定义为图像与其开口之间的差异。
例如,从您的第二张图片中我得到:
我使用了一个直径为10像素的圆盘的开口。您需要选择一个直径,该直径要大于要隔离的对象,但小于背景中的任何变化。在这种情况下,背景是简单的渐变,因此任何东西都小于它。
请注意,输入图像具有一些重要的JPEG压缩伪像,这些伪像会影响您在此处看到的结果。输出更好,输入图像质量更好。