影像處理SNR程式的問題 |
尚未結案
|
hardaway0331
一般會員 發表:2 回覆:1 積分:0 註冊:2007-12-21 發送簡訊給我 |
最近要作一個影像處理程式
需顯示處理完跟原圖之SNR SNR = 10X log10( (原圖每個PIXEL值)^2 / (原圖每個PIXEL值 - 處理後每個PIXEL值)^2 ) 可是跑出來值不太對 有時為負數(不可能) 小弟程式如下 希望高手幫忙解決問題 謝謝 [code cpp] void __fastcall TImadeprocessing::SNR1Click(TObject *Sender) { typedef struct { Byte R1,R2; Byte G1,G2; Byte B1,B2; } PCOLOR; PCOLOR color1; float s1,s2,SNR; int i,j; byte grey1,grey2; s1=0,s2=0; for(i=0;i<=width;i ) { for(j=0;j<=depth;j ) { color1.B1=((int)(ColorToRGB(Image1->Canvas->Pixels[i][j])) & 0x00ff0000) >> 16; color1.G1=((int)(ColorToRGB(Image1->Canvas->Pixels[i][j])) & 0x0000ff00) >> 8; color1.R1=((int)(ColorToRGB(Image1->Canvas->Pixels[i][j])) & 0x000000ff) ; color1.B2=((int)(ColorToRGB(Image3->Canvas->Pixels[i][j])) & 0x00ff0000) >> 16; color1.G2=((int)(ColorToRGB(Image3->Canvas->Pixels[i][j])) & 0x0000ff00) >> 8; color1.R2=((int)(ColorToRGB(Image3->Canvas->Pixels[i][j])) & 0x000000ff) ; grey1=0.3*color1.R1 0.3*color1.G1 0.4*color1.B1; /原圖PIXEL灰階值 grey2=0.3*color1.R2 0.3*color1.G2 0.4*color1.B2; /處理後PIXEL灰階值 s1=s1 pow(grey1,2); /累加原圖每個PIXEL值)^2 s2=s2 pow((grey1-grey2),2); /累加原圖每個PIXEL值 - 處理後每個PIXEL值)^2 } } SNR=10*log10(s1/s2); StatusBar1->Panels->Items[6]->Text="SNR = " FloatToStr(SNR) " db"; } [/code] |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
hardaway0331
一般會員 發表:2 回覆:1 積分:0 註冊:2007-12-21 發送簡訊給我 |
|
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |