基于小波包变换和高阶统计量的高斯判别准则的红外小目标的分割程序V1.0-MATLAB版

本文介绍了一种基于小波包变换的红外图像分割方法。该方法首先读取图像并将其转换为灰度,然后通过小波包分解提取特征,并利用高斯性判断进行系数筛选,最后进行阈值分割得到结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  这是最初版本,还会继续修改。
function infradDepartion
tic;
f=imread('G:\20所项目\相关代码\usedForTests\9.jpg');
if ndims(f)>2
f=rgb2gray(f);
end; 
order=4;
depth=4;
f=double(f);
%f=medfilt2(f);
T=wpdec2(f,order,'db8')
firstIndex=(order^depth-1)/3    %   depo2ind(order,[depth,0]);
lastIndex=((order^(depth+1)-1)/3)-1   %depo2ind(order,[depth,order^depth])-1;
gaus=[];
for i=firstIndex:lastIndex
 cfs=wpcoef(T,i);
 cfs=cfs*1.5;
 igass=judgeGauss(cfs);
 gaus=[gaus,igass];
 if i==firstIndex
      cp=wpcoef(T,i);
      [h,w]=size(cp);
      y=zeros(h,w);
      T=write(T,'cfs',i,y);
 end;
 if igass==1
     m=i;
  cp=wpcoef(T,m);
  [h,w]=size(cp);
  y=zeros(h,w);
  T=write(T,'cfs',m,y);
 end;
 end;
 f1=wprec2(T);
 means=mean2(f1)
 stds=std2(f1);
 v=means+stds*3;
 [l1,l2]=size(f1);
 for i=1:l1
     for j=1:l2
         if f1(i,j)<v
             f1(i,j)=0;
         else
             f1(i,j)=1;
         end;
     end;
 end;
 figure(1);subplot(121);
 imagesc(f);
 title('原始红外图像');
 colormap('gray');
 subplot(122);
 imagesc(uint8(f1));
 title('分割后的结果');
 colormap('gray');
toc;
  
  
function isGauss=judgeGauss(wpacketcoef)
L=numel(wpacketcoef);
[row,col]=size(wpacketcoef);
sum1=0;
sum2=0;
Confidence=0.95;
for i=1:row
    for j=1:col
        temp1=wpacketcoef(i,j)^4;
        temp2=wpacketcoef(i,j)^2;
        sum1=sum1+temp1;
        sum2=sum2+temp2;
    end;
end;
k=L*(sum1/(sum2^2))-3;
if abs(k)<sqrt(24/(L*(1-Confidence)))
    isGauss=1;
else
    isGauss=0;
end;

 实验结果一


实验结果二

实验结果三



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值