小蜗牛 爬呀爬

预测未来最好的方式就是实现未来

红外图像帧间降噪

红外图像帧间降噪

Blog: https://blog.csdn.net/AnimateX

Email: semi_xiaobai@qq.com

这里写图片描述

1 为什么要进行帧间降噪

1.1 红外图像噪声分类

1 时域噪声
2 空域噪声
先谈时间噪声。顾名思义,随着时间变化也会发生变化的噪声即时域噪声。也就是随着图像的帧数的增加,图像中的目标可能会产生模糊或者拖影的情况,如何滤除这个拖尾和模糊的情况也就是我们要如何去除时域噪声。

1.2 去除时域噪声的优点

如前所述,要滤除时域上的噪声我们就需要做运动检测,检测运动物体,最典型、最简单的做法就是使用帧间差分去实现。帧间差分的思想:“如果场景(帧)内没有运动目标,则连续帧的变化很微弱,如果存在运动目标,则连续的帧和帧之间会有明显地变化”。帧间差分比较典型的又有两帧差分或者三帧差分。这里先考虑两帧差分。
如图1所示,为帧间差分的流程。

这里写图片描述

图1 帧间差分流程

2 帧间差分理论

如图1所示,第n+1帧图像和第n帧图像,分别表示为前帧和后帧图像。这里用f表示图像矩阵,f(i,j)表示位置在(i,j)的像素点。主要计算公式如公式1和公式2所示。

Diff(i,j)=∣fn+1(i,j)fn(i,j)(1)

R(i,j)={fn+1(i,j),Diff(i,j)>Threldfn+1(i,j)+fn(i,j)2,others(2)

通过公式(1)和公式(2)计算运动点,并作出相应的处理。如果针对可见光,则直接判定‘移动’后做二值化处理,再做连通性分析,最后再进行判定。

2 总结

FPGA上对图像进行时域滤波,需要实现的是无拖尾,图像不模糊。这需要很高的阈值作为基础。但是这就会造成弱目标(移动缓慢、像素值变化不大)的像素点移动无法识别。如果考虑弱目标的移动,降低阈值,则会导致拖影现象。总体来讲,在时域上有一定的滤波作用。

Code

function imgOut = MFNR( imgIn )
    [M, N, num] = size( imgIn );
    flag = XX;
    imgOut = zeros(M, N, num);

    imgOut(:, :, 1) = imgIn(:, :, 1);
    for i = 2 : num
        temp   = zeros(M, N);
        bFrame = imgIn(:, :, i - 1);
        aFrame = imgIn(:, :, i);
        differ = abs( aFrame - bFrame );

        sp = find(differ < XX);
        mp = find(differ >= XX);
        temp(sp) = (aFrame(sp) + bFrame(sp)) / 2;
        temp(mp) = aFrame(mp);
        imgOut(:, :, i) = temp;
    end
end
阅读更多
上一篇红外图像去坏点总结
下一篇图像边缘Canny算子提取
想对作者说点什么? 我来说一句

红外图像去噪及分割处理的研究

2011年06月03日 1.71MB 下载

没有更多推荐了,返回首页

关闭
关闭