2018年12月23日 星期日

04362782 柯岱佑 HW05

色彩模型
這邊是介紹RGB 跟YUV
RGB就是三原色然後把圖給畫出來。
YUV,彼此有重疊。「Y」表示明亮度(Luminance、Luma),「U」和「V」則是色度濃度(Chrominance、Chroma)。



左上(藍色象素可變動)
右上(紅色象素可變動)
左下(綠色象素可變動)
右下(Y值可變動)



他們之間的公式轉會為



這個應該是程式碼最少的作業了,我們把圖片先轉成灰階,就是(R+G+B) / 3,我們把得到的這個值轉成YUV,我們要的只有Y值而已,UV填上你在YUV模型上選的顏色U是X值Y是V值,然後再把它們轉回RGB,更新畫面就完成了,主要就是當我們要更改一個影像的基底風格時,用YUV去更改會是一個很方便的做法。

04362782 柯岱佑 HW04

空間濾波
現在美肌APP,或是一些濾鏡基本上用到的都是空間濾波的概念,人工智慧裡CNN也是透過類似的概念去抓取影像中的特徵點來做運算,以下會介紹最基本的三種濾波。

原理是我們透過一個基數的方陣3*3、5*5之類的將你要修改的象素點放在中間位置,你就會獲得這個點的色彩值與他周圍象素的色彩值在根據這些值去做修改。

Smoothing Filter(平滑濾波器)
我們給九個點對應的權重,再把他們相加,最後平均這樣它的色彩值就會更趨近於鄰近的色彩值,當色彩值相近就會使色差減少形成一個柔化的效果。


 胡椒鹽與中值濾波器(Median Filter and Pepper-and-salt Noise)
以前的相機當你把ISO值調太高的時候很容易就會有雜訊跑出來,一點一點的跟胡椒鹽一樣,所以我們把它稱為胡椒鹽雜訊,而中值濾波器可以幫助我們把胡椒鹽雜訊消除掉,那他要做的方法是把極端的值給排除掉,那他會把抓到的九個點逕行排列然後取中位數,基本上極端的都會出現在兩側所以可以透過這樣把它個替換掉,但這樣也出現了一點柔化的效果,因為她也不是原本的值他只是找了一個相近的值來替換他而已。

胡椒鹽雜訊
經過中值濾波器處裡後
銳化濾波器(sharp filter)
當我們照相時些微的顫抖照成了照片有點模糊時,銳化濾波器可以幫我們呈現一個較清晰的影像,那他會用到一些微積分,拉普拉斯轉換我也看不太懂為甚麼要這樣做,但最後減化出來的公式,大概了解到我們給予中間點即高的權重,讓他減去周圍的點,剩下的值一定比原來的值高或低,與周圍個治的差也會變大,因此加強了色差,形成了較強的對比度讓畫面更佳的顆粒。

原圖

寫這份作業遇到的問題是imageRowInitialPosition = (unsigned char *)Image1->Picture->Bitmap->ScanLine[i];這個東西一次只抓一列得色彩值要處理這個要嘛一次抓三列,但感覺很麻煩所以我創了3個陣列把RGB各至丟進去,再創3個陣列去裝銳化後的值因為,只用一組的化再改動時會改到原來的值,這樣下一個值就不是依原圖來做銳化處裡了,所以總共6個陣列,但當圖太大時C++ Builder會說 Stack Overflow 所以你必須用動態宣告他把空間創在heap,然後再做銳化得時候得到的值有可能小於0或大於255要記得處裡一下不然圖片會出現奇怪象素點。


04362782 柯岱佑 HW03

色階與曲線調整
原圖

這是我們用色階把Outputmax 的部分調低,可以看到整張照片跟著變暗
因為(255,255,255)是白色,當我Outputmax 限制200時他最量其實就只是個灰色。

曲線調整與色階調整不同的地方是你可以把暗部或亮部更加凸顯出來但不影響原本的最暗或最亮的部分,不會整體變暗或變亮。
色階公式

曲線公式(二次曲線要通過的那個點的X值為S、Y值為T原點分別是(0,0)與(255,255))


寫這個作業跟上一個作業一樣都是對數值做轉換,色階是依比例轉換,曲線是一個二次曲線,把公式寫進去把值丟進去,就結束了,我們可以透過建表用一個hashmap[256]來存放轉換出來的值,這樣我們就不需要每次都做運算我們可以第一次就把所有的值算出來放到雜湊表裡,剩下的就只是查表作業。

碰到最難的問題是在畫曲線的部分,因為畫圖的方式是從左下到右上但左下的點是(0,255)不是(0,0)所以要做一些處理你的輸出值要用255去減,這樣在畫得時候才會反過來。



2018年12月6日 星期四

05360623 張克承 HW3

首先先做level並插入圖片
再輸入想要的InputMin,OutPutMin,InputMax,OutputMax
經過運算後可得到某點色彩值經過調整後得到的新值並更新圖片
醜爆可以按原圖即可恢復原本想要的圖片並重新調整

Level做完後現在做Curve
點擊想要的(x,y)可得到新的曲線並調整圖片亮度
如果點擊處位於直線上方圖片變亮
相反的點擊下方圖片變暗