影像處理函式的原理 ( Darker & Lighter )?? |
答題得分者是:richtop
|
peipei
一般會員 發表:3 回覆:5 積分:1 註冊:2004-09-16 發送簡訊給我 |
各位先進大家好~
我初次來此發問問題尋求指導!
希望有熟影像處理程式方面的大哥&大姐
能與我解惑~~ 以下是兩個處理函數
功能將是用來調整影像的亮度
//--------------------------------------------
void Image::bmp_darker() //影像變暗
{
int i;
for(i=0;i< width * height ; i )
{
if( *(img i) < 150 )
*(img i) = *(img i)*0.8;
else
*(img i) = ((*(img i)-150)*1.28) 120;
}
}
//--------------------------------------------
void Image::bmp_lighter() //影像變亮
{
int i;
for(i=0;i< width * height ; i )
{
if( *(img i) < 150 )
*(img i) = *(img i)*1.2;
else
*(img i) = ((*(img i)-150)*0.71) 180;
}
}
//------------------------------------------------------------------ 我不太明瞭為何影像變暗與變亮兩者
所運用的計算方式或是原理??
有誰可以理解嗎?? 方可給我指點迷津嚕~~
謝謝!!
|
hauhan
一般會員 發表:11 回覆:9 積分:4 註冊:2004-07-14 發送簡訊給我 |
小弟以前作遊戲的所以略知一二,我說說我的認知給你參考一下
一個圖像是由許多的Pixel所組成
例如一張圖的大小是128x256則代表 寬X高=全部的點(Pixel)數量
128x256=32768(Pixel)
所以你下方的程式 for(i=0;i< width * height ; i++)
就是針對每一個Pixel作處理的動作。
若是格式為RGB則每個Pixel大小為3Bytes 若是RGBA則每
個Pixel大小為4Bytes。 實際圖的大小=Pixel的總數*每個Pixel的大小+圖檔的檔頭資訊。 每個顏色的亮度
Red=0-255(越大越亮)
Green=0-255(越大越亮)
Blue=0-255(越大越亮)
Alpha=0-255(越大越不透明)
不過我比較不懂得是照理說每一個Pixel應該包含RedGreenBlue(Alpha)的顏色
(不過也不一定還是要看圖的格式決定是不是有,灰階就有可能沒有)
而你的程式看起來只有對第一個Byte(每個Pixel也好像只有一個Byte)作動作
大概你的圖是0-255的灰階圖吧... if( *(img+i) < 150 ) <==這裡好像怪怪的應該是 *(img+i) > XXX 才對吧。
*( >
|
peipei
一般會員 發表:3 回覆:5 積分:1 註冊:2004-09-16 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
|
peipei
一般會員 發表:3 回覆:5 積分:1 註冊:2004-09-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |