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

BCB 8bit灰階影像中值濾波的問題

尚未結案
Marcise
一般會員


發表:4
回覆:5
積分:1
註冊:2006-10-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-10-25 21:32:09 IP:59.114.xxx.xxx 未訂閱
   程式目的是要將 8bit灰階影像做中值濾波,但結果不是顏色亂掉就是有許多怪異的雜點

Graphics::TBitmap *bemd,*afmd; // GRAY為8bit灰階影像
Byte *ptr,*bptr,*uptr,*dptr;
bemd=GRAY;
int up,down,left,right,temp,x;


afmd=new Graphics::TBitmap();
afmd->Height=bemd->Height;
afmd->Width=bemd->Width;
afmd->PixelFormat=pf8bit;
afmd->Palette = bemd->Palette;
for(int i=0;iHeight;i )
{
up=i-1;
if(up<0)
up=bemd->Height-1;

down=i 1;
if(down==bemd->Height)
down=0;

ptr=(Byte*)bemd->ScanLine[i];
uptr=(Byte*)bemd->ScanLine[up];
dptr=(Byte*)bemd->ScanLine[down];
bptr=(Byte*)afmd->ScanLine[i];

x=0;
for(int j=0;jWidth;j )
{
left=j-1;
if(left<0)
left=bemd->Width-1;

right=j 1;
if(right==bemd->Width)
right=0;

int med[9]={0,0,0,0,0,0,0,0,0} ;
med[0]=(int)uptr[left];
med[1]=(int)uptr[i];
med[2]=(int)uptr[right];
med[3]=(int)ptr[left];
med[4]=(int)ptr[i];
med[5]=(int)ptr[right];
med[6]=(int)dptr[left];
med[7]=(int)dptr[i];
med[8]=(int)dptr[right];
for(int m=0;m<8;m )
{
for(int n=0;n<8;n )
{
if(med[n]>med[n 1])
{
temp=med[n];
med[n]=med[n 1];
med[n 1]=temp;
}
}
}
bptr[x]=(Byte)med[4]; //有大片污點產生
x =1;

}
}

Image1->Picture->Bitmap=GRAY;
Repaint();
Image2->Picture->Bitmap=afmd;
Repaint();

//---------------------------------------------------------
執行後的結果

為什麼會產生這麼多顏色錯誤的點呢


有試著不要用ScanLine的方式寫
把 bptr[x]=(Byte)med[4];
改成 afmd->Canvas->Pixels[j][i]=RGB(med[4],med[4],med[4]);
但錯的更離譜,結果如下


問題出在哪邊呢?
麻煩各位幫忙解惑一下
Marcise
一般會員


發表:4
回覆:5
積分:1
註冊:2006-10-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-10-26 12:18:26 IP:59.114.xxx.xxx 未訂閱
第一種ScanLine寫法已經知道問題出在哪裡了

可是第二種一個個填Pixel寫法
填色的方式是不是有誤
實在找不出錯誤在哪裡
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-10-26 21:47:58 IP:59.105.xxx.xxx 未訂閱
把這行拿掉看看
afmd->Palette = bemd->Palette;


另外查一下bemd->PixelFormat的值是多少
系統時間:2024-05-03 18:42:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!