全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:989
推到 Plurk!
推到 Facebook!

再問一個中值濾波的處理時間問題

尚未結案
bio
一般會員


發表:42
回覆:36
積分:20
註冊:2003-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-15 21:29:32 IP:210.64.xxx.xxx 未訂閱
大家好  中值濾波相信大家都已做過不少 但我的中值濾波處理的時間大致上要花到1~2.5秒之間 我處理的圖檔為640*480pixels 不曉得大家花的時間大致都多少 我的程式碼在下面,請大家幫我看一下哪裡可以改進 謝謝 對了 我是對RGB作處理 記得阿泰版主是對灰階做中值, 不曉得這樣時間會有差別嗎?????    //--------------------------------------------------------------------------- int __fastcall TForm1:: MidFilterb(int i,int j) {  int t,num=9;  int P1[9];  int x,y;  P1[0]=pb[i  ][j];  P1[1]=pb[i+1][j];  P1[2]=pb[i+1][j+1];  P1[3]=pb[i][j+1];  P1[4]=pb[i-1][j+1];  P1[5]=pb[i-1][j];  P1[6]=pb[i-1][j-1];  P1[7]=pb[i][j-1];  P1[8]=pb[i+1][j-1];     for( x=num-2;x>=0;x--)  {   for( y=0;y<=x;y++)   {     if(P1[y]>P1[y+1])     {      t=P1[y];      P1[y]=P1[y+1];      P1[y+1]=t;     }   }  }  return (P1[4]); } //--------------------------------------------------------------------------- int __fastcall TForm1:: MidFilterg(int i,int j) {  int t,num=9;  int P1[9];  int x,y;  P1[0]=pg[i  ][j];  P1[1]=pg[i+1][j];  P1[2]=pg[i+1][j+1];  P1[3]=pg[i][j+1];  P1[4]=pg[i-1][j+1];  P1[5]=pg[i-1][j];  P1[6]=pg[i-1][j-1];  P1[7]=pg[i][j-1];  P1[8]=pg[i+1][j-1];     for( x=num-2;x>=0;x--)  {   for( y=0;y<=x;y++)   {     if(P1[y]>P1[y+1])     {      t=P1[y];      P1[y]=P1[y+1];      P1[y+1]=t;     }   }  }  return (P1[4]); } //--------------------------------------------------------------------------- int __fastcall TForm1:: MidFilterr(int i,int j) {  int t,num=9;  int P1[9];  int x,y;  P1[0]=pr[i  ][j];  P1[1]=pr[i+1][j];  P1[2]=pr[i+1][j+1];  P1[3]=pr[i][j+1];  P1[4]=pr[i-1][j+1];  P1[5]=pr[i-1][j];  P1[6]=pr[i-1][j-1];  P1[7]=pr[i][j-1];  P1[8]=pr[i+1][j-1];     for( x=num-2;x>=0;x--)  {   for( y=0;y<=x;y++)   {     if(P1[y]>P1[y+1])     {      t=P1[y];      P1[y]=P1[y+1];      P1[y+1]=t;     }   }  }  return (P1[4]); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) {  Graphics::TBitmap *Bmp = new Graphics::TBitmap();  if( OpenPictureDialog1->Execute())  {   Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);   Bmp->Assign(Image1->Picture);   Edit1->Text=OpenPictureDialog1->FileName.SubString   (OpenPictureDialog1->FileName.LastDelimiter("\\")+1,OpenPictureDialog1->FileName.Length());        Byte *ptr;     for (int i=0;iHeight;i ) { ptr=(Byte*)Bmp->ScanLine[i]; for (int j=0;jWidth; j ) { pb[j][i]=ptr[j*3]; pg[j][i]=ptr[j*3 1]; pr[j][i]=ptr[j*3 2]; } } for (int i=1;iHeight;i ) { ptr=(Byte*)Bmp->ScanLine[i]; for (int j=1;jWidth; j ) { ptr[j*3]=MidFilterb(j,i); ptr[j*3 1]=MidFilterg(j,i); ptr[j*3 2]=MidFilterr(j,i); } } Image1->Picture->Assign(Bmp); delete Bmp; } } //--------------------------------------------------------------------------- 謝謝大家
系統時間:2024-05-04 13:50:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!