1.绪论
红外图像中的弱小目标的目标属性包涵“弱"和“小’’两个方面:“弱’’是指目标在红外波长上所表现出来的强度,具体反映到所拍摄的红外图像上,就是指目标的灰度值;而“小’’是指目标的尺寸大小,也就是前面所述的成像面积很小,反映到红外图像上就是指目标所占的像素数目很少。
SPIE国际光学工程学会(Societyof Photo一0ptical Instrumentation Engineers,简记为SPIE)从1989年开始,几乎每年都会举办有关弱小目标检测技术的国际会议,研讨弱小目标检测技术的最新研究成果。根据SPIE的定义,成像尺寸小于整个成像区域0.12%的目标均可称为弱小目标(即当成像尺寸为256×256时,弱小目标应不超过81个像素,其目标尺寸在9*9以内)。
2. 顶帽变换(Top_hat)算法
顶帽变换是一种图像形态学处理方法,可用于校正不均匀光照的影响。图像形态学处理的基本操作是膨胀与腐蚀,再衍生出开运算和闭运算,图像相减与开操作和闭操作相结合,会产生Top-hat(顶帽)变换和bottom-hat(底帽)变换。灰度级图像的顶帽变换定义为灰度图像减去其开运算。
开运算带来的结果是放大裂缝或者局部低亮度的区域,因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域,且这一操作和选择的核的大小相关。
应用:顶帽运算往往用来分离比邻近点亮一些的斑块。当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage, dstImage,TopImage; //源图像,输出图像
//---------【1】读取源图像并检查图像是否读取成功---------
srcImage = imread("./src\\69.bmp", 0);
if (!srcImage.data)
{
cout << "读取图片错误,请重新输入正确路径!\n";
system("pause");
return-1;
}
imshow("【源图像】", srcImage);
//---------【2】获取自定义核---------
Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));
//---------【3】进行开运算操作---------
morphologyEx(srcImage, dstImage, MORPH_OPEN, element);
//---------【4】显示效果图---------
imshow("【效果图--开运算操作】", dstImage);
//---------【5】TopHAT变换,并显示效果图---------
TopImage = srcImage - dstImage;
imshow("【效果图--TopHat操作】", TopImage);
waitKey(0);
return 0;
}
4. 小结
顶帽变换作为一种非线性滤波的处理方法,在相对简单的背景中处理效果确实不错,但在复杂多变的背景中,想要保持较好的背景抑制效果,还是需要做更多更精细化的处理,比如设计一种自适应场景的顶帽变换方法,或许是一个不错的优化方向,本次将其应用在复杂背景下弱小目标的背景抑制中,后续看能否经过优化设计,得到更好的背景抑制效果,后续再进行详细介绍。