如何增加圖片對比 |
尚未結案
|
qwedsa0861
一般會員 發表:3 回覆:1 積分:0 註冊:2009-04-07 發送簡訊給我 |
我們老師出了一個作業,要我們載入一張圖片,然後增強它的對比
他上課時有說了一個方法 1.先算出整張圖每個pixel的historgram 2.取得每個點的累積機率 3.除以最大的pixel數(這裡是256),算出來後4捨5入取整數 4.把算出來的值取代原本的值 我按照他的方法作,但是做不出來 以下是我的程式碼 (Image1讀原圖,Image2是轉換後的圖片) [code cpp] int i, j, sumR = 0, sumG = 0, sumB = 0;//sum用來存放累積機率 double R[256][3] = {0}, G[256][3] = {0}, B[256][3] = {0}; //[][0]放置 historgram [][1]放置累積機率 [][2]放置新的值 Image2 -> Height = Image1 -> Height; Image2 -> Width = Image1 -> Width; for(int i = 0; i < Image2 -> Width; i )//先取得機率分布 { for(int j = 0; j < Image2 -> Height; j ) { R[GetRValue(Image1 -> Canvas -> Pixels[i][j])][0] ; G[GetGValue(Image1 -> Canvas -> Pixels[i][j])][0] ; B[GetBValue(Image1 -> Canvas -> Pixels[i][j])][0] ; } } for(i = 0; i < 256; i )//取得累積機率 { sumR = R[i][0]; sumG = G[i][0]; sumB = B[i][0]; R[i][1] = sumR; G[i][1] = sumG; B[i][1] = sumB; } for(i = 0; i < 256; i )//除以256 並4捨5入 { R[i][2] = floor(R[i][1]/256 0.5); G[i][2] = floor(G[i][1]/256 0.5); B[i][2] = floor(B[i][1]/256 0.5); } for(int i = 0; i < Image2 -> Width; i )//放回原本的值 { for(int j = 0; j < Image2 -> Height; j ) { Image2 -> Canvas -> Pixels[i][j] = (TColor)RGB(R[GetRValue(Image1 -> Canvas -> Pixels[i][j])][2], G[GetGValue(Image1 -> Canvas -> Pixels[i][j])][2], B[GetBValue(Image1 -> Canvas -> Pixels[i][j])][2]); } } [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |