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

請問大大如何繪制灰度分佈圖??

尚未結案
residue
中階會員


發表:90
回覆:153
積分:53
註冊:2003-07-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-09 19:35:32 IP:203.64.xxx.xxx 未訂閱
各問大大您好!! 小弟想利用灰度分佈圖配合FUZZY規則找到二值分劃之最佳閥值 ,請問灰度分佈圖應如何畫呢?? 謝謝
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-09 19:51:13 IP:140.135.xxx.xxx 未訂閱
residue您好:
引言: 請問灰度分佈圖應如何畫
因為現在手邊沒有BCB,所以我先說明流程您先參考看看 因為灰階指的是0~255,所以您就先宣告一矩陣D[256]; 然後統計整張圖的灰階分佈,程式大概如下所示
int D[256]={0};
Graphics::TBitmap* BMP = new Graphics::TBitmap();
BMP->LoadFromFile("灰階圖片.bmp");
Byte *ptr=NULL;  
for (int y=0;yHeight;y  )
{
 ptr = (Byte*)BMP->ScanLine[y];
 for (int x=0;xWidth;x  )
   D[ptr[x*3]]  ;   //統計0~255出現的次數,並存入D[]中
}
delete BMP;
之後就可以用TChart元件畫出來了
for (int x= 0; x < 256; x  )
 Series1->Add(D[x],x,TColor(clBlue));
順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~ 發表人 -
residue
中階會員


發表:90
回覆:153
積分:53
註冊:2003-07-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-14 20:42:01 IP:218.165.xxx.xxx 未訂閱
感謝大大努力指導!! 謝謝!!
danielkelly
初階會員


發表:36
回覆:108
積分:28
註冊:2003-05-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-15 17:40:52 IP:140.124.xxx.xxx 未訂閱
請問一下喔?? 為什麼這一行
 
 D[ptr[x*3]]  ;   //統計0~255出現的次數,並存入D[]中
要*3呢?? 他問的是灰階影像阿?? 不是彩色影像??
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-01-15 18:14:15 IP:140.135.xxx.xxx 未訂閱
danielkelly您好: 謝謝您的提醒,若Source為24bits灰階則要*3 若是8bits灰階則不用    順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
danielkelly
初階會員


發表:36
回覆:108
積分:28
註冊:2003-05-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-01-15 18:25:19 IP:140.124.xxx.xxx 未訂閱
不客氣喔~~ 那又再請問 我要顯示每張影像的灰階資料時 TChart上所顯式的資料 會清除上一次的資料 那要怎麼弄??
danielkelly
初階會員


發表:36
回覆:108
積分:28
註冊:2003-05-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-01-15 19:39:15 IP:140.124.xxx.xxx 未訂閱
還有耶 那我想要畫出正規化的灰階分布圖 就是將出現的次數 標準化成0~1 的機率形式 本來以為很簡單 計算總次數 就可以了 在每個相除就可以了 如下
 
int D[256]={0};
Graphics::TBitmap* BMP = new Graphics::TBitmap();
BMP->LoadFromFile("灰階圖片.bmp");
Byte *ptr=NULL;
int sum=0;  
for (int y=0;yHeight;y  )
{
 ptr = (Byte*)BMP->ScanLine[y];
 for (int x=0;xWidth;x  )
   D[ptr[x*3]]  ;   //統計0~255出現的次數,並存入D[]中
   sum  ;
}
delete BMP;
for (int x= 0; x < 256; x  ){
 D[x]=D[x]/sum;
 Series1->Add(D[x],x,TColor(clBlue));
}
可是畫面出不來也~~ 請問是我的相法有錯嗎??
系統時間:2024-05-13 9:21:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!