【问题标题】:How to detect and track shadows in videos如何检测和跟踪视频中的阴影
【发布时间】:2019-12-20 02:37:09
【问题描述】:

我正在处理眼科手术视频,其中同时出现了手术工具及其阴影;由于手术手电筒用于照亮手术区域,因此框架具有非常特殊的光线条件。 我正在尝试检测工具的阴影,以便能够从一帧到下一帧对其进行跟踪,但我没有成功。 检测阴影最有效和最常用的技术是什么?

我尝试使用阈值来隔离较暗的区域,使用 CLAHE 来增强对比度,我尝试使用不同的色彩空间来更好地划分强度和亮度。我也试过背景减法。

我想要一个阴影的二进制地图或位于阴影上的关键点列表,以便能够检测和跟踪它。 This is an example of the frames I'm working on - This is another frame - And another one

如您所见,阴影并不总是出现在画面中,有时也不是那么锐利。

This is a gif of a video I'm working on - 只关注光线条件和阴影,质量非常低,因为我将它压缩成GIF,真正的视频是FullHD。

以下是用于BackgrounSubtractMOG2的代码sn-p:

def run(video_src):
    cam = cv.VideoCapture(video_src)

    cam.set(cv.CAP_PROP_FPS, 10)

    subtractor = cv.createBackgroundSubtractorMOG2(detectShadows=True)
    frame_idx = 0
    l_edge, r_edge = 0, -1
    while True:
        _, frame = cam.read()

        if frame_idx == 0:
            l_edge, r_edge = crop(frame)
            frame_idx += 1
        frame = frame[:1000, l_edge:r_edge, :]

        fgMask = subtractor.apply(frame)

        cv.imshow('FG Mask', fgMask)
        cv.imshow('Frame', frame)

        cv.waitKey()

【问题讨论】:

    标签: python opencv image-processing scikit-image


    【解决方案1】:

    如果眼睛不动,可以使用BackgroundSubtractorMOG2

    【讨论】:

    • 我已经尝试过了,但没有结果:结果是完全灰色的图像或框架中黑色圆形区域的蒙版(即显微镜镜头)。我用的是OpenCV自带的,不知道有没有可以调的参数。
    • @Mattia,你能用它展示你的代码吗?另外,你能给我们看一些视频吗?也许使用 ffmpeg 将它们转换为 GIF 并上传到相同的 imgur。
    • 我刚刚按照您的建议添加了一个 GIF。写代码,真的很乱,因为它只是一堆尝试;此外,它只包含对 OpenCV 函数的标准调用,没有调整或预处理。
    • @zteffi 我解决了灰色图像的问题,现在我从 backgroundsSubtractorMOG2 获得了可行的输出;但是,质量不足以用于跟踪。我有相关的代码sn-p和结果。
    猜你喜欢
    • 1970-01-01
    • 2016-02-04
    • 2013-02-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    相关资源
    最近更新 更多