红外弱小目标检测:new top-hat 算法论文精度及MATLAB复现

本文参考文献:

作者 年份 论文题目 期刊
Xiangzhi Bai 2010 《Analysis of new top-hat transformation and the application for infrared dim small target detection》

Pattern Recognition

白相志 2009

新型Top-hat变换及其在红外小目标检测中的应用

 

 

 

 

第一部分:论文精读

本文的贡献——

  • The definition of new top-hat transformation uses two different but correlated structuring elements to reorganize the classical top-hat transformation, and takes into account of the difference informtion between the target and surrounding regions.
  • The new top-hat transformation has three types of multi-scale operations.

传统的top-hat算法及其缺陷

一、  传统top-hat算法介绍

形态学操作:腐蚀erosion与膨胀dilation

膨胀:f \oplus B = max_{u,v}(f(x-u, y-v) + B(u,v)) 

         对于膨胀,由于取最大值操作,膨胀处理后的图像的灰度值大于原图灰度值,因此膨胀增大原图中的亮区域,填充原图暗区域。

腐蚀:f \ominus B = min_{u,v}(f(x-u,y-v)-B(u,v)),    其中f(x,y)表示待处理图像,B(u,v)表示结构元素.

         对于腐蚀,由于取最小值操作,腐蚀处理后的图像的灰度值小于原图灰度值,因此腐蚀增大原图中的暗区域,填充原图亮区域。

形态学操作:开运算opening 与闭运算closing

开运算:(f\circ B)(x,y)=(f\ominus B)\oplus B

          开运算先腐蚀后膨胀,对于尺寸小于结构元素的亮区域会被完全腐蚀,对于尺寸大于结构元素的亮区域,其边缘会被平滑。

红外弱小目标检测:new top-hat 算法论文精度及MATLAB复现_第1张图片

 

闭运算:(f\bullet B)(x,y)=(f\oplus B)\ominus B

         闭运算先膨胀后腐蚀,可以消除尺寸小于结构元素的暗的孔洞。

红外弱小目标检测:new top-hat 算法论文精度及MATLAB复现_第2张图片

top-hat算法:white top-hat transformation, WTH & black top-hat transformation, BTH

WTH(x,y)=f(x,y)-(f\circ B)(x,y), 得到亮区域 (面积小于结构元素的亮区域后被保留,因为这部分亮区域在开运算中被腐蚀了);

BTH(x,y)=(f\bullet B)(x,y)-f(x,y), 得到暗区域    (面积小于结构元素的暗区域被保留,因为这部分暗区域在闭运算的膨胀中被背景覆盖了);

因此,WTH可以检测亮目标,BTH可以检测暗目标。

红外弱小目标检测:new top-hat 算法论文精度及MATLAB复现_第3张图片红外弱小目标检测:new top-hat 算法论文精度及MATLAB复现_第4张图片

二、传统top-hat算法的缺陷

传统的top-hat算法的开/闭运算中,使用相同的结构元素对原图进行膨胀与腐蚀,存在以下问题:

  1. 噪声影响:如果待检测目标区域存在像素值偏低的噪声,会造成目标漏检;同时WTH也会将亮的噪声检测出来,增加了算法的虚警率;(Top-hat算法依赖于对目标尺寸的假设,Top-hat算法可以筛选出与目标尺寸差别较大的噪声,但与目标尺寸相近的噪声会提高算法的虚警率);
  2. 不能区分目标与背景杂波:当目标位于背景杂波中时,由于事先不知道目标的尺寸,为保证所有目标尽可能被检测出来,通常以目标的最大尺寸作为结构元素的尺寸(即对于大小不超过80pixels的弱小目标,通常选用9*9的结构元素),但是当目标偏小时,被结构元素覆盖的区域大部分为背景,这时,背景杂波会一并被计算,如果背景杂波的亮度值偏高,此时杂波相当于增大了目标的面积,使得在开运算中,尺寸较小的目标被保留,导致WTH操作后,真实的目标被淹没,反而将背景杂波输出。如下图所示,WTH计算结果输出了背景杂波而不是真实目标。(Top-hat算法依赖于被目标明、暗程度的假设,对于既有亮目标又有暗目标的图像,分别使用Top-hat,bottom-hat会增加虚警)

红外弱小目标检测:new top-hat 算法论文精度及MATLAB复现_第5张图片

新Top-hat算法

一、算法改进

1. 提出新的结构元素

红外弱小目标检测:new top-hat 算法论文精度及MATLAB复现_第6张图片

其中,\Delta B为环形结构,内环半径由B_i决定,外环半径由B_o决定;

            B_b为实心结构,半径位于B_iB_o之间。

2. 改变了膨胀、腐蚀的顺序

红外弱小目标检测:new top-hat 算法论文精度及MATLAB复现_第7张图片

与WTH相比,NWTH中先膨胀后腐蚀;与BTH相比,NBTH中先腐蚀后膨胀,且使用的结构元素不同。

二、算法特性

1. 当M(\Delta B)\neq 0时,新top-hat算法不满足

\Delta B用到了局部信息,引入不确定性,导致输入图像与输出图像的不确定关系,NMTH/NBTH会出现负值,因此引入新的计算:

红外弱小目标检测:new top-hat 算法论文精度及MATLAB复现_第8张图片

2. 固定\Delta BS(B_b)越大,算法平滑噪声的性能越好;

3. 若B_b \neq B_o,原图的尺寸会被改变;

4. 若B_b=B_o,算法平滑噪声的性能最好,且图像的尺寸不会被改变;

5. 固定B_bM(\Delta B)越大,利用的冗余像素越多,算法平滑噪声的性能越差;

6. 若B_b=B_o,且M(\Delta B)取最大值,则结构元素相同,算法演变为传统的top-hat算法。

三、多尺度操作

共有3种多尺度操作:

1. 改变B_b的尺寸,\Delta B的尺寸不改变

这种方法下,B_o,B_i均固定不变,B_b的一定被B_o包含,所以,改变B_b的尺度,只能提取被B_o覆盖的局部区域的特征。

2. 改变\Delta B的尺寸,B_b的尺寸相对不改变

B_b的尺寸相对不变是指:\Delta B的尺寸改变多少,B_b的尺寸也同样改变多少

3. 同时改变B_b\Delta B的尺寸

B_b的尺寸随\Delta B改变的同时,可以在B_o,B_i范围内自由增减。

四、实验结论及参数设置

文中,分别就多尺度、new top-hat算法在弱小目标检测的应用、图像噪声抑制效果随B_b\Delta B的尺寸变化作了相应的实验。

多尺度实验

选取morphological alternating sequential filters(ASFs)作为对照算法,对比二者对椒盐噪声的抑制效果。

对比之下,本文的算法不仅可以抑制噪声,而且保留更多的图像细节。

小目标检测

与classic top-hat算法相比,new top-hat算法对背景和噪声的抑制效果能好。

对于亮目标区域,NWTH算法首先使用环状结构膨胀,即以目标邻域像素值覆盖目标区域像素值,然后使用实心结构腐蚀,即取目标邻域的最小值取代目标区域,使用原图与膨胀腐蚀后的图像相减抑制背景与噪声。

在此过程中,膨胀相当于邻域取最大值,腐蚀相当于取被覆盖目标区域的最小值,膨胀选取的半径越大,计算的邻域像素数量越多,引入噪声的风险越大;腐蚀选取的半径越大,对高亮点噪声的平滑能力越强,因此膨胀腐蚀操作后的目标区域像素值被拉低,继而图像相减后,目标得到增强而背景、噪声得到抑制。

(其实原理有点像 取目标区域的最小值/其邻域的最大值,以此增大目标与背景的对比度)

尺寸的变化对图像噪声抑制的影响

结论1:随着B_b的增大,LSBR减小

          实验结论显示B_b尺寸越小,目标检测率越高;但由于目标的尺寸有最低限(至少肉眼可分辨),其考虑算法的特性3,4,本文选择S(B_b)=S(B_o) =S(\Delta B),既能保持图像大小不变,又能最大化腐蚀对平滑噪声的效果。

结论2:随着\Delta B的增大,LSBR增大

       实验中令S(B_b)=21,实验显示\Delta B越大,目标检测率越高;但在实际检测中,须保证S(B_i)大于目标尺寸,本文令M(\Delta B)=5.

第二部分:算法复现

1. 构造矩形环状结构元素

function [SE] = newRingStrel(R_o,R_i)
% 构造矩形环状结构元素
%   R_o : the radius of out
%   R_i : the radius of inner
%   delta_R = R_o - R_i
    d = 2 * R_o + 1;
    SE = ones(d);
    start_index = R_o + 1 - R_i;
    end_index = R_o +1 + R_i;
    SE(start_index:end_index, start_index:end_index) = 0;
end

2. 复现new top-hat 中的MNWTH

function [out] = MNWTH(img, delta_B, B_b)
% MNWTH算法,检测亮目标
%   img: 待检测图像
%   delta_B, B_b: 结构元素
    
    if(size(img, 3) > 1)
        img = rgb2gray(img);
    end
    
    %% 先膨胀
    img_d = imdilate(img, delta_B);
    
    %% 后腐蚀
    img_e = imerode(img_d, B_b);
    
    %% 图像相减
    out = img - img_e;
    out(find(out<0)) = 0;
    out = mat2gray(out);
end

3. 绘制图像3D灰度图

function [out] = Draw3DGrayGraph(img, isShowLine)
%绘制三维灰度图
%   img:输入图像
%   isShowLine: 是否显示网格
    if (size(img, 3) > 1)
        img = rgb2gray(img);
    end
    [y, x] = size(img);
    [X, Y] = meshgrid(1:x, 1:y);
    surf(X, Y, img);
%     title('3D gray distribution of the whole image')
    if ~isShowLine
        shading interp;
    end
    out = 0;
end

4. 实验测试

clc;clear;close all
addpath('../');
img = imread('test.bmp');
R_o = 9;
R_i = 4;
delta_B = newRingStrel(R_o, R_i);
B_b = ones(R_i);
img_MNWTH = MNWTH(img, delta_B, B_b);
subplot(221)
imshow(img);title('orignal image')
subplot(223)
Draw3DGrayGraph(img, 0);
subplot(222)
imshow(img_MNWTH);title('MNWTH result')
subplot(224)
Draw3DGrayGraph(img_MNWTH, 0);

红外弱小目标检测:new top-hat 算法论文精度及MATLAB复现_第9张图片

 

你可能感兴趣的:(红外弱小目标检测)