⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcint.m

📁 图像相关校正方法 用三点做线性矫正 在matlab中实现
💻 M
字号:
%计算积分时间的相关系数
WIDTH_VIDEO = 320;
HIGHT_VIDEO = 256;
GAIN_ZOOM   = 2048;

strFile1 = 'low.y';
strFile2 = 'high.y';
strFile3 = 'mid.y';
strFileSlope = 'IntSlope.dat';
strFileOffset= 'IntOffset.y';

%读图像文件
fy = fopen(strFile1,'r');
echo off
aryPic1 = zeros(HIGHT_VIDEO,WIDTH_VIDEO);
b = zeros(WIDTH_VIDEO,1);
for y=1:256
   b = fread(fy,WIDTH_VIDEO,'int16');
   aryPic1(y,:,1) = b(:,1);
end
fclose(fy);
%读图像文件
fy = fopen(strFile2,'r');
echo off
aryPic2 = zeros(HIGHT_VIDEO,WIDTH_VIDEO);
b = zeros(WIDTH_VIDEO,1);
for y=1:256
   b = fread(fy,WIDTH_VIDEO,'int16');
   aryPic2(y,:,1) = b(:,1);
end
fclose(fy);
%读图像文件
fy = fopen(strFile3,'r');
echo off
aryPic3 = zeros(HIGHT_VIDEO,WIDTH_VIDEO);
b = zeros(WIDTH_VIDEO,1);
for y=1:256
   b = fread(fy,WIDTH_VIDEO,'int16');
   aryPic3(y,:,1) = b(:,1);
end
fclose(fy);

% master
wdMstPic1 = 10;
wdMstPic2 = 45;
wdMstPic3 = 90;
aryMaster = [wdMstPic1;
            wdMstPic2;
            wdMstPic3]; %每幅图像标准值得存放区
        
%Tx = wdMstPic1 + wdMstPic2 + wdMstPic3;
%Tx2 =wdMstPic1*wdMstPic1 + wdMstPic2*wdMstPic2 + wdMstPic3*wdMstPic3;

arySlope = zeros(HIGHT_VIDEO,WIDTH_VIDEO);
aryOffset= zeros(HIGHT_VIDEO,WIDTH_VIDEO);
%aryR     = zeros(HIGHT_VIDEO,WIDTH_VIDEO);

%计算每个点的相关系数
for n = 1:HIGHT_VIDEO
    for m= 1:WIDTH_VIDEO
        aryTemp(1,1) = aryPic1(n,m);
        aryTemp(2,1) = aryPic2(n,m);
        aryTemp(3,1) = aryPic3(n,m);
        aryPTemp     = polyfit(aryMaster,aryTemp,2);

%		Ty  =aryPic1(n,m) + aryPic2(n,m) + aryPic3(n,m);
%		Txy =aryPic1(n,m)*wdMstPic1 + aryPic2(n,m)*wdMstPic2 + aryPic3(n,m)*wdMstPic3;
		
%		numerator  = Txy-Tx*Ty/3;
%		denominator= Tx2-Tx*Tx/3;
%		S = numerator / denominator;
%		arySlope(n,m)  =S * GAIN_ZOOM;
%		B = (Ty - S*Tx)/3;
%		aryOffset(n,m) = B;



		%计算R2
		%numerator = (nMaster*Txy-Tx*Ty)*(nMaster*Txy-Tx*Ty);
		%denominator = (nMaster*Tx2-Tx*Tx)*(nMaster*Ty2-Ty*Ty);
		%pfArrayCorR[j] = numerator/denominator;
    end
end

%保存到文件中
fy = fopen(strFileSlope,'w');
nCount = fwrite(fy,arySlope,'int16');
nStatus= fclose(fy);

fy = fopen(strFileOffset,'w');
nCount = fwrite(fy,aryOffset,'int16');
nStatus= fclose(fy);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -