看板 Knuckles
作者 標題 Re: DIP作業二
時間 2007年11月10日 Sat. PM 10:15:32
關於 Local Histogram Equalization
我的作法是
先設一個Window Size(例如設為9x9)
然後對圖上的每個點(x,y)
求四週9x9範圍內的Histgram存進hist陣列
然後只對(x,y)那個點做Histogram Equalization
例如那個點的灰階值為100
255 100
則 s = ── x Σ hist[j]
9x9 j=0
將求得的結果s存進新的圖的(x,y)位置
參考程式碼:
CImage img1_LHE;
img1_LHE.Create(width,height,8);
int w = 9; //window size
for(y=0; y<height; y++)
for(x=0; x<width; x++){
//計算Local Histogram
for(i=0;i<256;i++)
hist[i] = 0;
for(y2=y-(w-1)/2; y2<=y+(w-1)/2; y2++)
for(x2=x-(w-1)/2; x2<=x+(w-1)/2; x2++){
if(y2<0 || y2>=height || x2<0 || x2>=width)
continue;
hist[img1.GetGrayPixel(x2,y2)]++;
}
//Local Histogram Equalization
k = img1.GetGrayPixel(x,y);
s = 0;
for(j=0; j<k; j++)
s += hist[j];
s = s*255/(w*w);
img1_LHE.SetGrayPixel(x,y,s);
}
img1_LHE.SaveBmpFile("LHE.bmp");
printf("已建立Local Histogram Equalization,檔名為LHE.bmp\n");Window size = 9
Window size = 100
--
※ 來源: 台大電信 DISP 實驗室 (http://disp.twbbs.org)
※ 作者: Knuckles 來自: 140.112.175.130 時間: 2007-11-10 22:15:32
※ 編輯: Knuckles 來自: 140.112.175.130 時間: 2007-11-10 22:15:56
※ 編輯: Knuckles 來自: 140.112.175.130 時間: 2007-11-10 22:29:16
推 bookie: 好短 >>140.112.19.209 11-10 23:45
推 pose: s = s*255/(w*w); <== w*w需要做修改否則邊緣會較暗 >>140.112.19.232 11-11 01:01
推 Knuckles: 有道理耶 那我自己的再改一改 謝啦 >>140.112.175.130 11-11 01:31
推 keanos: 纯推不下 >>61.216.7.245 11-11 23:22
※ 編輯: Knuckles 來自: 140.112.175.128 時間: 2008-10-13 04:16:42
※ 編輯: Knuckles 來自: 140.112.175.128 時間: 2008-10-13 04:17:14
※ 編輯: Knuckles 來自: 140.112.175.130 時間: 2009-05-31 15:17:09
※ 編輯: Knuckles 時間: 2010-10-23 04:40:33 來自: 111-248-0-184.dynamic.hinet.net
※ 看板: KnucklesNote 文章推薦值: 4 目前人氣: 0 累積人氣: 4167
回列表(←)
分享