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

如何增加圖片對比

尚未結案
qwedsa0861
一般會員


發表:3
回覆:1
積分:0
註冊:2009-04-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-09 14:06:44 IP:220.133.xxx.xxx 訂閱
我們老師出了一個作業,要我們載入一張圖片,然後增強它的對比
他上課時有說了一個方法

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]
系統時間:2024-04-26 8:06:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!