2014年10月22日 星期三

資工三乙 01360602 朱祐震 HW02,

HW02
PDF(probability density function) &CDF(cumulative distribution function)
圖引:海綿寶寶(600*402)


PDF
CDF

統計方面
以bPtrImageRow = (Byte *)Image1->Picture->Bitmap->ScanLine[j];
配合FOR迴圈來索取每個像素中的RGB值
在BMP(24位元深度)下的資料擺放方式
BGR|BGR|BGR|BGR|BGR|BGR
BGR|BGR|BGR|BGR|BGR|BGR
BGR|BGR|BGR|BGR|BGR|BGR
BGR|BGR|BGR|BGR|BGR|BGR
所以在統計時用
iHB[bPtrImageRow[3*i+0]]++;
iHG[bPtrImageRow[3*i+1]]++;
iHR[bPtrImageRow[3*i+2]]++;
分別統計每一格像素點的RGB使用量的統計
然後使用
Image1->Canvas->MoveTo(X軸,Y軸)
Image4->Canvas->LineTo(X軸,Y軸)
來畫PDF

CDF方面我是另外增加
for(j=1; j<256; j++)
{
iHB[j]+=iHB[j-1];
iHG[j]+=iHG[j-1];
iHR[j]+=iHR[j-1];
}
來計算我各個累加值
畫圖大致上沒有很大的差別

統計寫好了
要畫的也畫好了
然後你就會發現你的直方圖
常常很阿莎力地給你衝去

就像這樣一路向北...
最後研究出來的計算就是
PDF的高度
255-iHB[j]*255/iHBMax
CDF的高度
255-iHB[j]*255/iHB[255]
P.S:綠色是我畫布的大小
iHB[j]為顏色的色度
iHBMax為紅/綠/藍色中的使用最多的色度的使用量
iHB[255]則是因為在CDF中最後一個一定是最大值,故直接使用它

做完這個作業後,對於BMP的格式變得很熟悉(其他的應該也差不多)
同時也大概熟悉了XE2的介面
對我來說
最大收穫就是算比例大小縮放
那邊讓我花了不少時間在弄他....="=
它似乎是沒有特別要求它要別的型態的話
就會把它當成整數來看




沒有留言:

張貼留言