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

Histogram Equalization 的問題

尚未結案
williams8807
一般會員


發表:40
回覆:37
積分:15
註冊:2003-11-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-27 21:02:32 IP:163.28.xxx.xxx 未訂閱
我用一張320*240 8bit 灰階的影像作Histogram Equalization   為什麼會出現一條一條的直線呢?    
  float gray_ratio1;
  int gray_level=256;
  int **gray_value;
  Byte *ptr;
  int equalize [2][256];
  gray_ratio1 = (float)255/(gray_level-1)/2;
  for(int i=0; i<2; i  )
    for(int j=0; j<256; j  )
      equalize[i][j] = 0;
  Graphics::TBitmap *bmp4 = new Graphics::TBitmap();
  bmp4->Assign(Image2->Picture->Bitmap);
  for(int i=0; iHeight; i  )    
  {
    ptr = (Byte*)bmp4->ScanLine[i];
    for(int j=0; jWidth ; j  )
      equalize[0][ ptr[j*3] ]  ;
  }      for(int i=0; i<256; i  )               
  {
    equalize[1][i] = ( (float)equalize[0][i]/(bmp4->Height*bmp4->Width) )*255;
    if(i != 255)
      equalize[0][i 1]  = equalize[0][i];
  }      for(int i=0; iHeight; i  )
  {
    ptr = (Byte*)bmp4->ScanLine[i];
    for(int j=0; j<420; j  )
    {
      ptr[j*3] = equalize[1][ ptr[j*3] ];
      if(gray_level != 256)
      {
        gray_value[i][j] = ( ptr[j*3]/gray_ratio1   1 ) / 2;
        ptr[j*3] = gray_value[i][j] * 2 * gray_ratio1;
      }
    }
  Image2->Picture->Bitmap->Assign(bmp4);
  ptr = NULL;
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-27 23:28:07 IP:211.76.xxx.xxx 未訂閱
williams8807 您好:    測試您的上傳碼後有一個建議: 1.既然您已經假設為8bit灰階,也就是PixelFormat=pf8bit,那所有ptr[j*3]都應改成ptr[j]才對。 我試著在程式執行前加上,Image2->Picture->Bitmap->PixelFormat = pf8bit;就不會出現一條一條的直線了。
系統時間:2024-05-20 22:48:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!