📄 kltransdlg.cpp
字号:
for(i=0;i<heightTM1;i++)
{
for(j=0;j<widthTM1;j++)
{
lpsr1=(unsigned char*)(pTM1Bits+LineBytesTM*i+3*j);
lpsr2=(unsigned char*)(pTM2Bits+LineBytesTM*i+3*j);
lpsr3=(unsigned char*)(pTM3Bits+LineBytesTM*i+3*j);
lpsr4=(unsigned char*)(pTM4Bits+LineBytesTM*i+3*j);
lpsr5=(unsigned char*)(pTM5Bits+LineBytesTM*i+3*j);
lpsr6=(unsigned char*)(pTM7Bits+LineBytesTM*i+3*j);
temp=a[0][1]*(*lpsr1)+a[1][1]*(*lpsr2)+a[2][1]*(*lpsr3)
+a[3][1]*(*lpsr4)+a[4][1]*(*lpsr5)+a[5][1]*(*lpsr6);
*(m_pBitsField+OutLineBytes*i+j)=(int)(temp+0.5);
}
}
m_pBitsField+=14;
fileFen2.Write(m_pBitsField,widthTM1*heightTM1);
}
if(m_n[2]==1)
{
fileFen3.Open(m_strFenliang3,
CFile::modeCreate|CFile::modeWrite|CFile::shareExclusive,NULL);
BITMAPFILEHEADER bmfhdr;
BITMAPINFOHEADER bmphdr;
RGBQUAD rgb[256];
bmfhdr.bfType='MB';
bmfhdr.bfReserved1=0;
bmfhdr.bfReserved2=0;
bmphdr.biSize=40;
bmphdr.biWidth=widthTM1;
bmphdr.biHeight=heightTM2;
bmphdr.biPlanes=1;
bmphdr.biCompression=BI_RGB;
bmphdr.biXPelsPerMeter=0;
bmphdr.biYPelsPerMeter=0;
bmphdr.biClrUsed=0;
bmphdr.biClrImportant=0;
bmphdr.biBitCount=8;
bmfhdr.bfOffBits=1078;
bmphdr.biSizeImage=(((widthTM1*8)+31)/32*4)*heightTM1;
bmfhdr.bfSize=bmfhdr.bfOffBits+bmphdr.biSizeImage;
for(int i=0;i<256;i++)
{
rgb[i].rgbBlue=i;
rgb[i].rgbGreen=i;
rgb[i].rgbRed=i;
rgb[i].rgbReserved=0;
}
fileFen3.Write(&bmfhdr,sizeof(bmfhdr));
fileFen3.Write(&bmphdr,sizeof(bmphdr));
fileFen3.Write(rgb,sizeof(RGBQUAD)*256);
long size;
unsigned char *m_pBitsField;
size=widthTM1*heightTM1;
m_pBitsField=(unsigned char*)malloc(size*sizeof(int));
unsigned char * lpsr1,*lpsr2,*lpsr3,*lpsr4,*lpsr5,*lpsr6;
double temp;
for(i=0;i<heightTM1;i++)
{
for(j=0;j<widthTM1;j++)
{
lpsr1=(unsigned char*)(pTM1Bits+LineBytesTM*i+3*j);
lpsr2=(unsigned char*)(pTM2Bits+LineBytesTM*i+3*j);
lpsr3=(unsigned char*)(pTM3Bits+LineBytesTM*i+3*j);
lpsr4=(unsigned char*)(pTM4Bits+LineBytesTM*i+3*j);
lpsr5=(unsigned char*)(pTM5Bits+LineBytesTM*i+3*j);
lpsr6=(unsigned char*)(pTM7Bits+LineBytesTM*i+3*j);
temp=a[0][2]*(*lpsr1)+a[1][2]*(*lpsr2)+a[2][2]*(*lpsr3)
+a[3][2]*(*lpsr4)+a[4][2]*(*lpsr5)+a[5][2]*(*lpsr6);
temp=(-temp);
*(m_pBitsField+OutLineBytes*i+j)=(int)(temp+0.5);
}
}
m_pBitsField+=14;
fileFen3.Write(m_pBitsField,widthTM1*heightTM1);
}
if(m_n[3]==1)
{
fileFen4.Open(m_strFenliang4,
CFile::modeCreate|CFile::modeWrite|CFile::shareExclusive,NULL);
BITMAPFILEHEADER bmfhdr;
BITMAPINFOHEADER bmphdr;
RGBQUAD rgb[256];
bmfhdr.bfType='MB';
bmfhdr.bfReserved1=0;
bmfhdr.bfReserved2=0;
bmphdr.biSize=40;
bmphdr.biWidth=widthTM1;
bmphdr.biHeight=heightTM2;
bmphdr.biPlanes=1;
bmphdr.biCompression=BI_RGB;
bmphdr.biXPelsPerMeter=0;
bmphdr.biYPelsPerMeter=0;
bmphdr.biClrUsed=0;
bmphdr.biClrImportant=0;
bmphdr.biBitCount=8;
bmfhdr.bfOffBits=1078;
bmphdr.biSizeImage=(((widthTM1*8)+31)/32*4)*heightTM1;
bmfhdr.bfSize=bmfhdr.bfOffBits+bmphdr.biSizeImage;
for(int i=0;i<256;i++)
{
rgb[i].rgbBlue=i;
rgb[i].rgbGreen=i;
rgb[i].rgbRed=i;
rgb[i].rgbReserved=0;
}
fileFen4.Write(&bmfhdr,sizeof(bmfhdr));
fileFen4.Write(&bmphdr,sizeof(bmphdr));
fileFen4.Write(rgb,sizeof(RGBQUAD)*256);
long size;
unsigned char *m_pBitsField;
size=widthTM1*heightTM1;
m_pBitsField=(unsigned char*)malloc(size*sizeof(int));
unsigned char * lpsr1,*lpsr2,*lpsr3,*lpsr4,*lpsr5,*lpsr6;
double temp;
for(i=0;i<heightTM1;i++)
{
for(j=0;j<widthTM1;j++)
{
lpsr1=(unsigned char*)(pTM1Bits+LineBytesTM*i+3*j);
lpsr2=(unsigned char*)(pTM2Bits+LineBytesTM*i+3*j);
lpsr3=(unsigned char*)(pTM3Bits+LineBytesTM*i+3*j);
lpsr4=(unsigned char*)(pTM4Bits+LineBytesTM*i+3*j);
lpsr5=(unsigned char*)(pTM5Bits+LineBytesTM*i+3*j);
lpsr6=(unsigned char*)(pTM7Bits+LineBytesTM*i+3*j);
temp=a[0][3]*(*lpsr1)+a[1][3]*(*lpsr2)+a[2][3]*(*lpsr3)
+a[3][3]*(*lpsr4)+a[4][3]*(*lpsr5)+a[5][3]*(*lpsr6);
temp=(-temp);
*(m_pBitsField+OutLineBytes*i+j)=(int)(temp+0.5);
}
}
m_pBitsField+=14;
fileFen4.Write(m_pBitsField,widthTM1*heightTM1);
}
if(m_n[4]==1)
{
fileFen5.Open(m_strFenliang5,
CFile::modeCreate|CFile::modeWrite|CFile::shareExclusive,NULL);
BITMAPFILEHEADER bmfhdr;
BITMAPINFOHEADER bmphdr;
RGBQUAD rgb[256];
bmfhdr.bfType='MB';
bmfhdr.bfReserved1=0;
bmfhdr.bfReserved2=0;
bmphdr.biSize=40;
bmphdr.biWidth=widthTM1;
bmphdr.biHeight=heightTM2;
bmphdr.biPlanes=1;
bmphdr.biCompression=BI_RGB;
bmphdr.biXPelsPerMeter=0;
bmphdr.biYPelsPerMeter=0;
bmphdr.biClrUsed=0;
bmphdr.biClrImportant=0;
bmphdr.biBitCount=8;
bmfhdr.bfOffBits=1078;
bmphdr.biSizeImage=(((widthTM1*8)+31)/32*4)*heightTM1;
bmfhdr.bfSize=bmfhdr.bfOffBits+bmphdr.biSizeImage;
for(int i=0;i<256;i++)
{
rgb[i].rgbBlue=i;
rgb[i].rgbGreen=i;
rgb[i].rgbRed=i;
rgb[i].rgbReserved=0;
}
fileFen5.Write(&bmfhdr,sizeof(bmfhdr));
fileFen5.Write(&bmphdr,sizeof(bmphdr));
fileFen5.Write(rgb,sizeof(RGBQUAD)*256);
long size;
unsigned char *m_pBitsField;
size=widthTM1*heightTM1;
m_pBitsField=(unsigned char*)malloc(size*sizeof(int));
unsigned char * lpsr1,*lpsr2,*lpsr3,*lpsr4,*lpsr5,*lpsr6;
double temp;
for(i=0;i<heightTM1;i++)
{
for(j=0;j<widthTM1;j++)
{
lpsr1=(unsigned char*)(pTM1Bits+LineBytesTM*i+3*j);
lpsr2=(unsigned char*)(pTM2Bits+LineBytesTM*i+3*j);
lpsr3=(unsigned char*)(pTM3Bits+LineBytesTM*i+3*j);
lpsr4=(unsigned char*)(pTM4Bits+LineBytesTM*i+3*j);
lpsr5=(unsigned char*)(pTM5Bits+LineBytesTM*i+3*j);
lpsr6=(unsigned char*)(pTM7Bits+LineBytesTM*i+3*j);
temp=a[0][4]*(*lpsr1)+a[1][4]*(*lpsr2)+a[2][4]*(*lpsr3)
+a[3][4]*(*lpsr4)+a[4][4]*(*lpsr5)+a[5][4]*(*lpsr6);
temp=(-temp);
*(m_pBitsField+OutLineBytes*i+j)=(int)(temp+0.5);
}
}
m_pBitsField+=14;
fileFen5.Write(m_pBitsField,widthTM1*heightTM1);
}
if(m_n[5]==1)
{
fileFen6.Open(m_strFenliang6,
CFile::modeCreate|CFile::modeWrite|CFile::shareExclusive,NULL);
BITMAPFILEHEADER bmfhdr;
BITMAPINFOHEADER bmphdr;
RGBQUAD rgb[256];
bmfhdr.bfType='MB';
bmfhdr.bfReserved1=0;
bmfhdr.bfReserved2=0;
bmphdr.biSize=40;
bmphdr.biWidth=widthTM1;
bmphdr.biHeight=heightTM2;
bmphdr.biPlanes=1;
bmphdr.biCompression=BI_RGB;
bmphdr.biXPelsPerMeter=0;
bmphdr.biYPelsPerMeter=0;
bmphdr.biClrUsed=0;
bmphdr.biClrImportant=0;
bmphdr.biBitCount=8;
bmfhdr.bfOffBits=1078;
bmphdr.biSizeImage=(((widthTM1*8)+31)/32*4)*heightTM1;
bmfhdr.bfSize=bmfhdr.bfOffBits+bmphdr.biSizeImage;
for(int i=0;i<256;i++)
{
rgb[i].rgbBlue=i;
rgb[i].rgbGreen=i;
rgb[i].rgbRed=i;
rgb[i].rgbReserved=0;
}
fileFen6.Write(&bmfhdr,sizeof(bmfhdr));
fileFen6.Write(&bmphdr,sizeof(bmphdr));
fileFen6.Write(rgb,sizeof(RGBQUAD)*256);
long size;
unsigned char *m_pBitsField;
size=widthTM1*heightTM1;
m_pBitsField=(unsigned char*)malloc(size*sizeof(int));
unsigned char * lpsr1,*lpsr2,*lpsr3,*lpsr4,*lpsr5,*lpsr6;
double temp;
for(i=0;i<heightTM1;i++)
{
for(j=0;j<widthTM1;j++)
{
lpsr1=(unsigned char*)(pTM1Bits+LineBytesTM*i+3*j);
lpsr2=(unsigned char*)(pTM2Bits+LineBytesTM*i+3*j);
lpsr3=(unsigned char*)(pTM3Bits+LineBytesTM*i+3*j);
lpsr4=(unsigned char*)(pTM4Bits+LineBytesTM*i+3*j);
lpsr5=(unsigned char*)(pTM5Bits+LineBytesTM*i+3*j);
lpsr6=(unsigned char*)(pTM7Bits+LineBytesTM*i+3*j);
temp=a[0][5]*(*lpsr1)+a[1][5]*(*lpsr2)+a[2][5]*(*lpsr3)
+a[3][5]*(*lpsr4)+a[4][5]*(*lpsr5)+a[5][5]*(*lpsr6);
*(m_pBitsField+OutLineBytes*i+j)=(int)(temp+0.5);
}
}
m_pBitsField+=14;
fileFen6.Write(m_pBitsField,widthTM1*heightTM1);
}
if(m_n[6]==1)
{
int l1=120;
double a1[3][3];
double var1[3][3];
double eps1=0.0000001;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
var1[i][j]=varTM[i][j];
}
}
k=eejcb(var1[0],3,a1[0],eps1,l1);
if(k<=0)
{
AfxMessageBox("选择的TM影象不对!");
return ;
}
for(i=0;i<2;i++)
{
for(j=0;j<3-i-1;j++)
{
if(var1[j][j]<var1[j+1][j+1])
{
for(s=0;s<3;s++)
{
temp=a1[s][j];
a1[s][j]=a1[s][j+1];
a1[s][j+1]=temp;
}
}
}
}
int l2=120;
double a2[2][2];
double var2[2][2];
double eps2=0.0000001;
for(i=5;i<7;i++)
{
for(j=5;j<7;j++)
{
var2[i-5][j-5]=varTM[i][j];
}
}
k=eejcb(var2[0],2,a2[0],eps2,l2);
if(k<=0)
{
AfxMessageBox("选择的TM影象不对!");
return ;
}
if(var2[0][0]<var2[1][1])
{
for(s=0;s<2;s++)
{
temp=a2[s][j];
a2[s][j]=a2[s][j+1];
a2[s][j+1]=temp;
}
}
fileFen7.Open(m_strFenliang7,
CFile::modeCreate|CFile::modeWrite|CFile::shareExclusive,NULL);
BITMAPFILEHEADER bmfhdr;
BITMAPINFOHEADER bmphdr;
bmfhdr.bfType='MB';
bmfhdr.bfReserved1=0;
bmfhdr.bfReserved2=0;
bmphdr.biSize=40;
bmphdr.biWidth=widthTM1;
bmphdr.biHeight=heightTM1;
bmphdr.biPlanes=1;
bmphdr.biCompression=BI_RGB;
bmphdr.biXPelsPerMeter=0;
bmphdr.biYPelsPerMeter=0;
bmphdr.biClrUsed=0;
bmphdr.biClrImportant=0;
bmphdr.biBitCount=24;
bmfhdr.bfOffBits=54;
bmphdr.biSizeImage=(((widthTM1*24)+31)/32*4)*heightTM1;
bmfhdr.bfSize=bmfhdr.bfOffBits+bmphdr.biSizeImage;
fileFen7.Write(&bmfhdr,sizeof(bmfhdr));
fileFen7.Write(&bmphdr,sizeof(bmphdr));
long size;
size=3*widthTM1*heightTM1;
unsigned char *m_pBitsField;
m_pBitsField=(unsigned char*)malloc(size*sizeof(unsigned char));
unsigned char * lpsr1,*lpsr2,*lpsr3,*lpsr4,*lpsr5,*lpsr6;
double temp1,temp2,temp3;
for(i=0;i<heightTM1;i++)
{
for(j=0;j<widthTM1;j++)
{
lpsr1=(unsigned char*)(pTM1Bits+LineBytesTM*i+3*j);
lpsr2=(unsigned char*)(pTM2Bits+LineBytesTM*i+3*j);
lpsr3=(unsigned char*)(pTM3Bits+LineBytesTM*i+3*j);
lpsr4=(unsigned char*)(pTM4Bits+LineBytesTM*i+3*j);
lpsr5=(unsigned char*)(pTM5Bits+LineBytesTM*i+3*j);
lpsr6=(unsigned char*)(pTM7Bits+LineBytesTM*i+3*j);
temp1=a1[0][0]*(*lpsr1)+a1[1][0]*(*lpsr2)+a1[2][0]*(*lpsr3);
*(m_pBitsField+LineBytesTM*i+3*j+1)=(unsigned char)(temp1+0.5);
temp2=(*lpsr4);
*(m_pBitsField+LineBytesTM*i+3*j+2)=(unsigned char)(temp2+0.5);
temp3=a2[0][0]*(*lpsr5)+a2[1][0]*(*lpsr6);
*(m_pBitsField+LineBytesTM*i+3*j)=(unsigned char)(temp3+0.5);
/* temp1=0.4569*(*lpsr1)+0.3064*(*lpsr2)+0.8351*(*lpsr3);
if(temp1>255) temp1=255;
// temp1=(*lpsr1);
*(m_pBitsField+LineBytesTM*i+3*j)=(unsigned char)(temp1+0.5);
temp2=(*lpsr4);
// temp2=(*lpsr2);
*(m_pBitsField+LineBytesTM*i+3*j+1)=(unsigned char)(temp2+0.5);
temp3=0.8966*(*lpsr5)+0.4428*(*lpsr6);
// temp3=(*lpsr3);
*(m_pBitsField+LineBytesTM*i+3*j+2)=(unsigned char)(temp3+0.5);*///MATLAB结果
}
}
m_pBitsField+=41;
fileFen7.Write(m_pBitsField,3*widthTM1*heightTM1);
}
CString str="TM影象统计结果.txt";
FILE *fpt;
fpt=fopen(str,"w+");
fprintf(fpt," %40s\n","TM影象统计结果");
fprintf(fpt,"%s\n","----------------------------------------------------------------------");
fprintf(fpt,"%s\n"," TM1 TM2 TM3 TM4 TM5 TM7");
fprintf(fpt,"%s%8.3f %8.3f %8.3f %8.3f %8.3f %8.3f\n","灰度均值: ",
averTM1,averTM2,averTM3,averTM4,averTM5,averTM7);
fprintf(fpt,"%s%8.3f %8.3f %8.3f %8.3f %8.3f %8.3f\n","标准偏差: ",
sqrt(mvarTM[0][0]),sqrt(mvarTM[1][1]),sqrt(mvarTM[2][2]),
sqrt(mvarTM[3][3]),sqrt(mvarTM[4][4]),sqrt(mvarTM[5][5]));
fprintf(fpt,"%s%8.3f %8.3f %8.3f %8.3f %8.3f %8.3f\n","特征值:",
varTM[0][0],varTM[1][1],varTM[2][2],varTM[3][3],varTM[4][4],varTM[5][5]);
fprintf(fpt,"%s\n","-------------------------------协方差矩阵-------------------------------");
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -