線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1524
推到 Plurk!
推到 Facebook!

灰階值出現的機率

答題得分者是:ikk
913028
一般會員


發表:30
回覆:41
積分:19
註冊:2008-06-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-05-01 15:03:35 IP:220.130.xxx.xxx 訂閱
各位大大好:
以下是我的程式碼,主要是在一列上有40*40的區塊總共有13個,要在這每區塊裡計算0~255灰階值出現的機率,但是,所下的斷點去看,都是0的值,不知是哪寫錯了?
麻煩大大
感謝


[code cpp]
int X=(M1 540)-(M1 20);
int Y=(up2 40)-up2;
int x_Get = 40;
int y_Get = 40;
int X_loop = X/x_Get;
int Y_loop = Y/y_Get;
int Left_Start =M1 20 ;
int Top_Start =up2;
BYTE r;
int k,N,n[256];
float P[256];//計算每個灰階值的出現機率
N = x_Get*y_Get;//總像素點
for(k = 0; k < 256 ; k )
n[k] = 0;
for(int j=0;j for(int i=0;i {
for(int iy=(Top_Start j * y_Get);iy<(Top_Start (j 1) * y_Get);iy )
for(int ix=(Left_Start i * x_Get);ix<(Left_Start (i 1) * x_Get);ix )
{
r = GetRValue(Image2->Canvas->Pixels[ix][iy]);
n[r] ;
}
for(k = 0; k < 256; k )
P[k] = n[k] / N;
}
[/code]
------
新手報到
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-05-04 09:07:38 IP:163.28.xxx.xxx 訂閱
P[k] = (float)n[k] / N;
------
FPGA驗證, FPGA開發平台, http://smims.com
913028
一般會員


發表:30
回覆:41
積分:19
註冊:2008-06-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-05-04 14:20:36 IP:163.23.xxx.xxx 訂閱

===================引 用 ikk 文 章===================
P[k] = (float)n[k] / N;
=================================================
感謝 終於可以了。

最後我要將這個套用到下列程式碼的運算式,結果會出現以下的問題視窗,主要是對每個區塊的0~255灰階的機率後,在將它們各自乘上自己Log2的數值函式,從0~255相加。



[code cpp]
int X=(M1 540)-(M1 20);
int Y=(up2 40)-up2;
int x_Get = 40;
int y_Get = 40;
int X_loop = X/x_Get;
int Y_loop = Y/y_Get;
int Left_Start =M1 20 ;
int Top_Start =up2;
BYTE r;
int N = x_Get*y_Get;//總像素點
float n[256],P[256];
int k;
float tt;

for(int j=0;j for(int i=0;i {
for (k=0;k<256;k )
{
n[k]=0;
}
tt=0;
for(int iy=(Top_Start j * y_Get);iy<(Top_Start (j 1) * y_Get);iy )
for(int ix=(Left_Start i * x_Get);ix<(Left_Start (i 1) * x_Get);ix )
{
r = GetRValue(Image2->Canvas->Pixels[ix][iy]);
n[r] ;
}
for(k=0;k<256;k )
{
P[k] = (float) n[k]/N;//計算每個灰階值在影像中出現之機率
}
tt=-(((float)P[k]*(float)Log2(P[k])) tt);//=>我的運算式
Memo2->Lines->Add(tt);//顯示數值
}

[/code]

感謝

------
新手報到
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-05-04 14:28:19 IP:163.28.xxx.xxx 訂閱
Log2(x)

x 不能 <= 0
------
FPGA驗證, FPGA開發平台, http://smims.com
913028
一般會員


發表:30
回覆:41
積分:19
註冊:2008-06-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-05-04 14:42:09 IP:163.23.xxx.xxx 訂閱

===================引 用 ikk 文 章===================
Log2(x)

x 不能 <= 0
================================================
ikk大大你好:
這個意思是說,因為我的P[k]這些值算出來不是0就是0點多,而將這些帶入到Log2是沒辦法使用的嗎?
感謝
------
新手報到
編輯記錄
913028 重新編輯於 2009-05-04 14:42:47, 註解 無‧
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-05-04 14:46:01 IP:163.28.xxx.xxx 訂閱
Log2(0) 必須先排除
------
FPGA驗證, FPGA開發平台, http://smims.com
913028
一般會員


發表:30
回覆:41
積分:19
註冊:2008-06-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-05-04 14:55:21 IP:163.23.xxx.xxx 訂閱

===================引 用 ikk 文 章===================
Log2(0) 必須先排除
=================================================
終於用好了

感謝ikk大大的 提示
果然Log2(0) =>先排除0才是關鍵

感謝
------
新手報到
編輯記錄
913028 重新編輯於 2009-05-05 10:26:28, 註解 無‧
913028 重新編輯於 2009-05-05 14:49:49, 註解 無‧
系統時間:2024-04-27 10:46:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!