资源简介

基于一点、两点定标的红外图像非均匀校正。 % 0,1,2分别代表三幅图:高温,低温,手型图 % A代表原图;B代表数据类型转换或者校正后的图;D代表一点校正系数 % C代表高温图和低温图的灰度值差矩阵;G代表两点校正斜率系数矩阵;

资源截图

代码片段和文件信息

   
%   012分别代表三幅图:高温,低温,手型图
%   A代表原图;B代表数据类型转换或者校正后的图;D代表一点校正系数
%   C代表高温图和低温图的灰度值差矩阵;G代表两点校正斜率系数矩阵;

    f = fopen(‘highdat_151.dat‘);
    A0 = fread(f[200200]);    %double
    B0 = uint8(A0);
    
    f1 = fopen(‘lowdat_151.dat‘);
    A1 = fread(f1[200200]);   %double
    B1 = uint8(A1);
    
    f2 = fopen(‘handdat_50.dat‘);
    A2 = fread(f2[200200]);   %double
    B2 = uint8(A2);
    
    %求校正系数
    B0_Average = (sum(A0(:))/(200*200))* ones(200200); %double
    B1_Average = (sum(A1(:))/(200*200))* ones(200200); %double
    D0_H = A0 - B0_Average;   %double型的高温校正系数
    D0_L = A1 - B1_Average;   %double型的低温校正系数
    
    %高温一点校正
    B0_One_P_H = uint8(A0 - D0_H); %uint8型的一点高温校正后的数据
    B1_One_P_H = uint8(A1 - D0_H);  %uint8型的一点高温校正后的数据
    B2_One_P_H = uint8(A2 - D0_H);  %uint8型的一点高温校正后的数据
    
    %低温一点校正
    B0_One_P_L = uint8(A0 - D0_L);  %uint8型的一点低温校正后的数据
    B1_One_P_L = uint8(A1 - D0_L); %uint8型的一点低温校正后的数据
    B2_One_P_L = uint8(A2 - D0_L);  %uint8型的一点低温校正后的数据
    
    %两点校正
    SUM_Two_H = zeros(200200);
    SUM_Two_L = zeros(200200);
    SUM_Two_Hand = zeros(200200);
    B0_Two_H = zeros(200200);
    B1_Two_L = zeros(200200);
    B2_Two_Hand = zeros(200200);
    G = zeros(200200);
    C = A0 - A1;    %double
    for i = 1:200
        for j = 1:200
            if C(ij) == 0          %盲元检测
                for a = (i-4):(i+4)
                    for b = (j-4):(j+4)
                        SUM_Two_H(ij) = A0(ab) + SUM_Two_H(ij);
                        SUM_Two_L(ij) = A1(ab) + SUM_Two_L(ij);
                        SUM_Two_Hand(ij) = A2(ab) + SUM_Two_Hand(ij);
                    end
                end
                B0_Two_H(ij) = (SUM_Two_H(ij) - A0(ij))/80;
                B1_Two_L(ij) = (SUM_Two_L(ij) - A1(ij))/80;
                B2_Two_Hand(ij) = (SUM_Two_Hand(ij) - A2(ij))/80;
                else
                G(ij) = (B0_Average(ij) - B1_Average(ij)) ./ C(ij);
                B0_Two_H(ij) = G(ij).*A0(ij) + B1_Average(ij) - G(ij).*A1(ij);
                B1_Two_L(ij) = G(ij).*A1(ij) + B1_Average(ij) - G(ij).*A1(ij);
                B2_Two_Hand(ij) = G(ij).*A2(ij) + B1_Average(ij) - G(ij).*A1(ij);
        

评论

共有 条评论