資源簡介
利用遙感的K均值分類方法進行bmp圖像的分類.

代碼片段和文件信息
#include?
#include??
#include?
#include?
#include?
#include?
#include?
#include?
#define?NUM?2000000
unsigned?char?*pBmpBuf;//讀入圖像數據的指針
unsigned?char?*pBmpbiao;//讀入顏色表的指針
class?RGB
{
public:
int?R;
int?G;
int?B;
int?f;
};
class?BIAO
{
public:
int?R;
int?G;
int?B;
int?f;
};
int?bmpWidth;//圖像的寬
int?bmpHeight;//圖像的高
RGBQUAD?*pColorTable;//顏色表指針
int?biBitCount;//圖像類型,每像素位數
//-------------------------------------------------------------------------------------------
//讀圖像的位圖數據、寬、高、顏色表及每像素位數等數據進內存,存放在相應的全局變量中
bool?readBmp(char?*bmpName)?
{
????FILE?*fp=fopen(bmpName“rb“);//二進制讀方式打開指定的圖像文件
????if(fp==0)?return?0;
????//跳過位圖文件頭結構BITMAPFILEHEADER
????fseek(fp?sizeof(BITMAPFILEHEADER)0);
????//定義位圖信息頭結構變量,讀取位圖信息頭進內存,存放在變量head中
????BITMAPINFOHEADER?head;??
????fread(&head?sizeof(BITMAPINFOHEADER)?1fp);?//獲取圖像寬、高、每像素所占位數等信息
????bmpWidth?=?head.biWidth;
????bmpHeight?=?head.biHeight;
????biBitCount?=?head.biBitCount;//定義變量,計算圖像每行像素所占的字節數(必須是4的倍數)
????int?lineByte=(bmpWidth?*?biBitCount/8+3)/4*4;
if(biBitCount==8)
{
?????pBmpbiao=new?unsigned?char[1024];
?????fread(pBmpbiao11024fp);
}
????//申請位圖數據所需要的空間,讀位圖數據進內存
????pBmpBuf=new?unsigned?char[lineByte?*?bmpHeight];
????fread(pBmpBuf1lineByte?*?bmpHeightfp);
????fclose(fp);//關閉文件
????return?1;//讀取文件成功
}
int?findmin(double?a[]int?length)
{
????int?t=0;
????int?q;
????double?min=0;
????min?=?a[0];
????for?(q=0;q {
???????if?(min?>?a[q])
???{
??????????min?=?a[q];
??????????t=q;
???}
}
??????return?t;
}
//----------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------
//給定一個圖像位圖數據、寬、高、顏色表指針及每像素信息進行分類,將其寫到指定文件中
void?main()
{
????//讀入指定BMP文件進內存
????RGB?rgb[2500000];
????RGB?center[50];
????RGB?other[50];
BIAO?biao[256];
int?dian[50];
int?hei[2500000];
int?num[50];
int?jiunum[50];
int?h;
int?dei;
double?yu;
int?jump;
int?cishu=0;
double?abc[50];
????char?readPath[]=“nv.BMP“;
????readBmp(readPath);
????//輸出圖像的信息
????cout<<“width=“< ????
????//每行字節數
????int?lineByte=(bmpWidth*biBitCount/8+3)/4*4;
????int?nlineByte=(bmpWidth*3+3)/4*4;
????int?m=0n=0ge=0;
?????????if(biBitCount==8)
?{//圖像
????????????for(int?ca=0;ca<256;ca++)
{?
biao[ge].R=*(pBmpbiao+ca*4);
biao[ge].G=*(pBmpbiao+ca*4+1);
biao[ge].B=*(pBmpbiao+ca*4+2);
biao[ge].f=*(pBmpbiao+ca*4+3);
ge++;
}
????????for(int?ii=0;ii {
????????????for(int?jj=0;jj {?
hei[n]=*(pBmpBuf+ii*lineByte+jj);
????????????????????n++;
}
?????????}
????????for(int?shu=0;shu {
rgb[shu].R=biao[hei
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????10267??2011-03-05?19:04??K均值分類\遙感K均值分類\bmp123.cpp
?????文件???????3447??2011-05-15?22:34??K均值分類\遙感K均值分類\bmp123.dsp
?????文件????????537??2011-05-15?22:33??K均值分類\遙感K均值分類\bmp123.dsw
?????文件??????41984??2011-05-15?22:34??K均值分類\遙感K均值分類\bmp123.ncb
?????文件??????53760??2011-05-15?22:34??K均值分類\遙感K均值分類\bmp123.opt
?????文件????????246??2011-05-15?22:34??K均值分類\遙感K均值分類\bmp123.plg
?????文件?????258160??2011-05-15?22:32??K均值分類\遙感K均值分類\Debug\bmp123.exe
?????文件?????296060??2011-05-15?22:32??K均值分類\遙感K均值分類\Debug\bmp123.ilk
?????文件??????28331??2011-05-15?22:32??K均值分類\遙感K均值分類\Debug\bmp123.obj
????I.A....???3698368??2011-05-15?22:32??K均值分類\遙感K均值分類\Debug\bmp123.pch
?????文件?????517120??2011-05-15?22:32??K均值分類\遙感K均值分類\Debug\bmp123.pdb
?????文件?????164864??2011-05-15?22:34??K均值分類\遙感K均值分類\Debug\vc60.idb
?????文件??????94208??2011-05-15?22:32??K均值分類\遙感K均值分類\Debug\vc60.pdb
?????文件?????768054??2011-01-09?09:13??K均值分類\遙感K均值分類\nv.bmp
?????文件?????110592??2011-05-15?22:37??K均值分類\遙感K均值分類\程序說明.doc
?????目錄??????????0??2011-05-15?22:32??K均值分類\遙感K均值分類\Debug
?????目錄??????????0??2011-05-15?22:38??K均值分類\遙感K均值分類
?????目錄??????????0??2011-05-15?22:32??K均值分類
-----------?---------??----------?-----??----
??????????????6045998????????????????????18
評論
共有 條評論