【问题标题】:How to find the change in color of a background in image using MATLAB?如何使用 MATLAB 查找图像中背景颜色的变化?
【发布时间】:2012-02-17 06:35:38
【问题描述】:

我有一个视频,上半部分背景为白色,下半部分背景为灰色。随着视频的进行,烟雾弥漫,背景的能见度降低。有相机抖动,因此黑色背景变为白色的点不断变化(上下移动)。我的目标是通过跟踪黑色背景变为灰色的垂直位置来量化每一帧中的相机抖动。

我想跟踪背景从黑色变为灰色的垂直坐标 (Y)。对此,我有以下几个问题,

1) 如何识别颜色的变化?有什么方法可以在MATLAB中找到连续像素之间的颜色变化(渐变)?

2) 如何增加背景的可见度?是否有任何过滤器可以增强背景可见性?

【问题讨论】:

    标签: matlab image-processing computer-vision


    【解决方案1】:

    如果您的相机相当静止并且背景足够恒定,您可以减去后续图像。如果图像的烟雾部分和背景之间的差异足够大,那么前一帧中没有烟雾但在新帧中的区域将显示出比图像的其余部分大得多的差异。这将为您提供“新”烟雾的位置,您可以使用它来跟踪烟雾的进展情况。

    【讨论】:

    • 感谢您的回复。我之前的目标并不清楚。我已经修改了问题以包括我的目标。我必须通过跟踪一个静态对象来量化相机抖动,在这种情况下是背景。视频中的所有前景特征都在移动。
    • 您只想检测垂直抖动吗?水平抖动不是问题吗?您是否尝试过简单的光流算法 (en.wikipedia.org/wiki/Optical_flow) 来检测抖动?
    【解决方案2】:

    要清除您的图像,您可以使用:-

    im=imread('C:\Users\khaled\Documents\MATLAB\image.jpg');
    clear_image= histeq(im);
    

    要检测黑色和灰色的变化,请使用以下代码:-

    im=rgb2gray(image);
    BW = edge(I,'canny');
    [B,L] = bwboundaries(BW,'noholes');
    boundary = B{1}; 
    plot(boundary(:,2), boundary(:,1), 'r', 'LineWidth', 2);
    

    【讨论】:

      【解决方案3】:

      从计算机视觉系统工具箱尝试vision.ForegroundDetector

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-24
        • 2012-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-31
        • 2012-01-01
        • 2017-04-14
        相关资源
        最近更新 更多