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

影像處理SNR程式的問題

尚未結案
hardaway0331
一般會員


發表:2
回覆:1
積分:0
註冊:2007-12-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-21 13:58:16 IP:218.175.xxx.xxx 訂閱
最近要作一個影像處理程式
需顯示處理完跟原圖之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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-12-21 14:47:27 IP:122.124.xxx.xxx 訂閱
站上有SNR的範例,可以參考看看 ^_^
hardaway0331
一般會員


發表:2
回覆:1
積分:0
註冊:2007-12-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-12-24 02:20:49 IP:218.175.xxx.xxx 訂閱
我已爬文參考過, 但寫出來還是怪怪的@@

===================引 用 taishyang 文 章===================
站上有SNR的範例,可以參考看看 ^_^
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-01-13 00:58:41 IP:61.62.xxx.xxx 訂閱
試試把grey1,grey2宣告成double
系統時間:2024-05-20 1:14:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!