顯示具有 97360031 李挺宇 標籤的文章。 顯示所有文章
顯示具有 97360031 李挺宇 標籤的文章。 顯示所有文章

2011年12月24日 星期六

HW3



程式介面



載入一張.bmp的圖檔



將圖片轉成灰階只保留亮度(Y)



在左邊的YUV色彩模型中,隨機 取一種
顏色將U和V的色彩值替換 。




HSI色彩模型介面



I = 0.5







I = 1





擷取網路上網站的圖片

心得一:YUV TO RGB




做第一個作業時,一直以為是要將RGB轉換成YUV,再將YUV轉換成RGB,當我轉換完後,發現顏色並沒有改變,才想說為什麼要將RGB轉過去又轉回來,但如果只是要做YUV轉換成RGB時,除了亮度Y=128,那U和V的色彩值我應該給多少? 這個問題困擾我很久。



一直到禮拜五問完老師之後才知道U和V的色彩值,是用當你點到YUV色彩模型上面的座標(i,j)來當作U和V的值,到這邊U和V值的問題解決了,但後面又碰到一個問題就是亮度的Y=128到底要給R還是G還是B? 結果三個都做了,一次保留R的亮度,一次保留G的亮度,最後保留B的亮度,三個圖片做出來很明顯地會不一樣,想說這樣就完成了,但演算法並不是這樣。



問完老師後才知道是要將原圖轉乘灰階時的所保留的亮度,給Y然後配上新的U和V的值去轉換成RGB 後才是我們所要的YUV色彩模型。






心得二:HSI TO RAB



在做第二個程式遇到的困難不外乎就是角度的問題,第一象限保持atan(y/x),第二象限是atan(y/x)+pi,第三象限是atan(y/x)+pi,第四象限是atan(y/x)+(2*pi),但剛開始做的我卻把pi的直放到atan(y/x)裡面做運算導致所算出來弧度,一直介於(-pi/2~pi/2)之間,一直以為這樣就把角度的問題搞定了(事實上是搞定了),但我卻將(0 < H < 120)......直接將這一段寫到程式裡面去,沒有改成(0 < H && H< 120) ,導致圖片一直被後面的色彩直覆蓋掉,出來的圖就只有(240~360)那一區域的顏色,一直到老師幫我檢查時,才發現@@。而最後做出來的圖片中間看起來會有三個比較暗得圈圈,我試者把I的值條大,而黑色的圈也漸漸消失了,但是做出來得圖片還是沒有辦法像網路上的一樣,能夠使顏色與顏色之間的分隔很明顯,即使用了網路上所提供的公式來做還是沒有辦法。



H=0



R = I + 2IS



G = I - IS



B = I - IS.



If 0 < H < 120, then



R = I + IS*cos(H)/cos(60-H)



G = I + IS*[1 - cos(H)/cos(60-H)]



B = I - IS.If H = 120,



then the red, green, and blue values are



R = I - IS



G = I + 2IS



B = I - IS.



If 120 < H < 240, then



R = I - IS



G = I + IS*cos(H-120)/cos(180-H)



B = I + IS*[1 - cos(H-120)/cos(180-H)].



If H = 240 then



R = I - IS



G = I - IS



B = I + 2IS.



And if 240 < H < 360, we have



R = I + IS*[1 - cos(H-240)/cos(300-H)]



G = I - IS



B = I + IS*cos(H-240)/cos(300-H).



網站:http://www.had2know.com/technology/hsi-rgb-color-converter-equations.html




2011年11月7日 星期一

HW2

程式介面



原始圖片




平滑化



將3*3的數值加起來後除以9=新的色彩值




經過平滑畫的圖片看起來比較柔和,但也比較模糊



銳化(一)





[0,-1,0]




[-1,5,-1]




[0,-1,0]






將數值衣照比例相成以後相加後得新的色彩值





銳化(二)



[-1,-1,-1]



[-1, 9,-1]



[-1,-1,-1]




將數值衣照比例相成以後相加後得新的色彩值




但此圖與上圖比較後可發現此圖邊界更為凸顯








原始圖片



中值濾波器




經過濾波去濾過後,大部分的雜訊都已被濾掉,但還是會有一些殘餘的點沒辦法清除乾淨這次的作業只要將上次均化的程式,稍微做修改將取出來的色彩直乘上比例後相加及可完成,而銳化的演算法可能會出現負得值,所以要多寫一個if去判斷他是否為負值,如果維負數,則=0,如果超過255,則=255,而取中位數的部分也不會太難,用兩個回圈就可以完成。


for(int i=0;i<10;i++)


for(int j=0;j<10-1;j++)


if(


a[j]>a[j+1])


{b=a[j+1];


a[j]=a[j+1];


a[j]=b;


}



2011年10月22日 星期六

直方圖均化



介面




原始圖




均化後



色彩資料(補)



統計圖表


這次做的是直方圖均化,演算法的部分並不困難,只要載入一張彩色的圖片後,在*255 然後除以圖片的Pixel值(Height*Width),就可以得到新的圖表,然後再利用迴圈的方式將新的影像值放入新的Image裡面,均化就完成了。


而這次寫程式遇到最大的困難就是。無法將所載入的圖片的高與寬取得,反而是一直取到依些奇怪的數值,進而造成下面的程式都出現Scan line of range 的錯誤 ,一直無法解決,直到上課時,老師幫我檢查時才發現 Height 和 Width 的值不可以拿來存其他的值,因為很多元件的屬性都有Height 和 Width 的參數,電腦不知道要用哪一個值所以才會發生這樣的錯誤,而最後測試出來的數值則是 Form 的 Height 和 Width ,所以當視窗一設定成 AutoSize 或者是你將視窗拉大時 Height 和 Width的數值就會跟者改變,造成迴圈的條件與圖片大小不同而發生錯誤,解決這個問題後下面德程式部分就很簡單,除了如何將新的影像值轉換到一張的Image花了一點時間外,其他都很順利就完成了,謝謝老師花時間幫我Debug。


圖片色彩資料已經補上!!