顯示具有 04360455 張力仁 標籤的文章。 顯示所有文章
顯示具有 04360455 張力仁 標籤的文章。 顯示所有文章

2018年1月11日 星期四

04360455 張力仁 HW05

這次我們介紹如何自製調色盤以及RGB與YUV的關係,首先調色盤可以用RG、RB、GB平面來實現,所謂的RG平面就是在B固定的情況下平面上有255*255大小的pixel,分別由RG(0, 0)、RG(0, 1) ... RG(1, 0)、RG(1, 1) ... RG(255, 255)組成,然後再透過設定B的值即可作為調色盤使用。
左圖為GB平面、中間為RB平面、右圖為RG平面
上圖我利用一個滑軸來讓使用者調整固定的該顏色值,調整後即可看到對應的平面,在平面上用滑鼠點擊後即可設定畫筆的顏色,這功能是不是跟我們常見的調色盤一樣呢?現在我們試著調整滑軸來看看對應的平面長什麼樣子吧。


同樣都是GB平面,透過調整滑軸原本R的值從0變成100再變成255,對應的平面如上圖,不管是哪張圖只要選擇了GB即可確定畫筆的顏色,接來嚇我們試著選擇顏色並看看畫筆的顏色是否真的如我們所想的顏色相同。


果真出現了我們所選的顏色,如此一來我們的調色盤就做好了。
接下來介紹YUV,YUV也是一種描述顏色的方法,Y代表著亮度,UV則代表顏色,這裡我們用沿用上面所講平面的方法,將Y當定值去畫出UV平面,我們來看看UV平面長什麼樣子。


上圖為3種UV平面,因為Y為亮度,當Y變大時明顯的我們的UV平面看起來更亮,接下來我們來討論一下如何在RGB和YUV之間做轉換。
Y的範圍在[0, 1],U的範圍在[-0.436, 0.436],V的範圍在[-0.615, 0.615],因為處理小數點的範圍比較麻煩,我們透過公式將他轉成[0, 255]
補充 : >>8 = / 2^8 = / 256

因為你在轉成RGB時有可能會算出超過255或小於0的素質,
clip代表著如果值超過255就設定為255,若小於0就設定為0
知道如何轉換後UV平面就是一樣UV(0, 0)、UV(0, 1) ... UV(255, 255),並且已知Y則可以算出該pixel對應的RGB,這樣一來就可以畫出UV平面囉。
如果想要用UV平面去調整圖片顏色的話首先將原本圖片轉成灰階後得到亮度值,然後當你點了UV值時依照上面的公式將對應的YUV轉成RGB並把該值設定為新的pixel的顏色,讓我們來看看會友什麼效果吧。



如此一來就可以透過點擊UV平面來將你的圖片改成你想要的顏色囉。


2018年1月8日 星期一

04360455 張力仁 HW04

這次要介紹的是空間濾波,在這之前要先介紹什麼是濾波器,相信各位在拍攝時多少會有手抖的情況而導致圖片拍攝模糊,或者是看電視時訊號不好會發現電視上有許多小白點,為了解決這些問題有了濾波器,顧名思義就是把我們不要的濾掉,把我們想要的留下來。

濾波器是一個正方形的結構,以每單位分成一小格,每小格都有一個數值稱為濾波器係數,在這個作業中我們是用九宮格形狀的濾波器。
c代表著濾波器的數值,每小格用座標點來表示,大家應該都知道一張圖片是由好幾個pixel組成,所以一張圖片都有對應的座標點,代表該pixel的顏色,而我在操作圖片時是由左往右再從上往下看,因此濾波器的對應座標也是由左往又在從上往下安排。

使用濾波器的方法相當簡單,中心點(0, 0)代表著我們要更動的顏色的,只要把鄰近九宮格的顏色乘上對應座標的濾波係數後再加起來並設定為新的中心點顏色,特別要注意的是每個pixelrgb三種顏色組成,在使用濾波器時要分開操作,例如更動某座標的r,則只要把相鄰座標的r與對應的濾波係數相乘後相加即可。
聰明的你一定會覺得有奇怪的地方,如果我們在處理邊界的pixel時會沒辦法用濾波器完全遮蓋,碰到這問題該怎麼辦呢?在這裡我們採用一種偷懶的方式就是最外層的pixel我們忽略不看,這樣一來每個pixel都會有一個對應的九宮格了。
介紹完濾波器後開始介紹空間濾波的第一種:平滑濾波器,平滑濾波器主要是在將圖片模糊化以減少雜訊,如果有一個pixel因為干擾變成白點則可以用周圍的顏色來彌補那個白點所造成的干擾,簡單來講就是中心點設為九宮格的平均值,也就代表濾波器的係數全部為1,如果覺得離自己越近的顏色參考比例要比較高,也可以自行調整濾波器的係數。
平均
靠近自己影響越大,比例越高
特別要注意的是記得當你算完總和後要除上所有濾波係數的總和,上圖的話要除9,下圖則要除16

首先來試試沒干擾的圖片的平滑化處理,可以發現上圖跟下圖比較起來變得模糊很多。

接著嘗試將一張有干擾的圖片進行平滑化處理,發現小白點幾乎都不見了,但是圖片還是較為模糊。

接著介紹第二種空間濾波:中值濾波器,中值濾波器主要用來消除干擾所造成的白點或黑點,將九宮格的顏色依照色彩值進行排序,並取中間的值設定成新的中心點顏色,因為白點與黑點分別為2550,在排序後干擾的顏色會是最小或最大值,此時若取中值則可以排除干擾的白色與黑色。


由上圖可以發現中值濾波器一樣可以將干擾訊號排除,此時你是否有疑問,中值與平滑皆可以去除干擾,那到底差異在哪裡?
我們知道平滑是將其他顏色當作參考,取九宮格的平均值為新中心點,因此可以知道若雜訊多時,圖片會變得較模糊,而中值因為是利用黑白點排序後會在邊緣的方法來排除雜訊,在處理雜訊多時若雜訊很分散,則中值的效果會好很多。
中間為平滑後的結果,右圖為中值的結果  
接著介紹最後一種空間濾波: 銳化濾波器,顧名思義就是將原本模糊的照片變得清晰,而這個濾波器跟微分有關係。
假設影像為一個函數f(x),因為每個pixel之間最小差1,因此微分為
f’(x) = f(x+1) – f(x)
f’’(x) = f’(x+1) – f’(x) = f(x+2) – f(x+1) – (f(x+1) – f(x))
      = f(x+2) – 2f(x+1) + f(x)
將中心點調整變成
f’’(x) = f(x+1) – 2f(x) + f(x-1)
現在將影像假設為f(x, y),利用偏微分以及上面的公式可推得
f’’(x, y) = f(x+1, y) – 2f(x, y) + f(x-1, y) + f(x, y+1) – 2f(x, y) + f(x, y-1)
      = f(x+1, y) + f(x-1, y) + f(x, y+1) + f(x, y-1) – 4f(x, y)
將以上公式變成濾波器
 而銳化濾波器g(x, y) = f(x, y) – f’’(x, y)
 = f(x, y) – (f(x+1, y) + f(x-1, y) + f(x, y+1) + f(x, y-1) – 4f(x, y))
 =5f(x, y) - f(x+1, y) - f(x-1, y) - f(x, y+1) - f(x, y-1)
將以上公式變成濾波器
千辛萬苦求出濾波器係數後跟上面一樣直接對應座標後即可達到銳化效果。



可以發現下圖比上圖清晰了許多。


2017年11月23日 星期四

04360455_張力仁_HW03

今天要介紹色階,所謂的色階是表示圖片亮度強弱,也稱為色彩指數,調整色階可以使一張原本偏亮的圖變暗,也可以使原本偏暗的圖變亮,而所謂的色階圖就是統計RGB的直方圖,首先我們來看看Photoshop的色階圖。

範例



RGB色階圖

接著來解釋要如何調整一張圖片的色階呢?其實就是調整輸入色階的最大與最小的值以及調整輸出色階最大與最小的值,經過一些運算會把這張圖片的RGB依比例調整成介於輸出色階範圍內的值,InputMaxInputMin代表輸入色階的最大與最小值而OutputMaxOutputMin代表輸出色階的最大與最小值,InputOutput代表輸入與輸出值,現在已知InputMax=255InputMin=55OutputMax=255OutputMin=155,則原本80的值會被改成(80-55) * (255-155) / (255-55) + 155 = 168,可以發現調整後整個圖片的值會變大,也就代表你將圖片的亮度調高,圖片看起來也就變得比較亮,接著我們來推公式,主要是利用相似三角形的概念依照比例調整。



上圖是我們調整的最大與最小值,中間為範例圖片,下圖是依照公式調整過的圖片,因為我們將原本介於0~255的值調整成100~255的範圍,原本偏暗的顏色調整後變亮了,所以我們可以看見右圖變得比原圖還亮。




因為我們將原本介於0~255的值調整成0~200的範圍,原本偏亮的顏色調整後變暗了,所以我們可以看見右圖變得比原圖還暗。

        接下來介紹曲線,這裡只介紹到一個座標點的二元曲線,首先初始的曲線就是一條y=x的函式,輸入值等於輸出值,也就代表圖片沒有任何調整,讓我們來看一下初始曲線圖。


        使用曲線調整其實很簡單,就在該曲線上用滑鼠點一點後透過這點座標會計算出一個二次曲線方程式,然後圖片的每個輸入值更改成對應的輸出值就完成調整了,如果你的座標比原本曲線還要高就代表你調整後的輸出值會比原先的值大,也就是整張圖會比原圖還亮,讓我們嘗試看看。


是不是明顯比原圖看起來還亮了呢。


        接著如果你想把圖片調暗那就把座標調整到比原本曲線還低,這樣一來因為調整後的輸出值會比原先的小,所以整張圖也會變得比原圖暗。

是不是變得比原圖還暗了呢。
最後在知道怎麼調整後也要知道他是怎麼計算出二次方程式的,以下進行公式的推導。

已知二次方程式的通式為y = ax2+bx+c,因為此曲線必經過(0, 0)(255, 255)
我們將此兩點代入通式中代入(0, 0) 可得到 0 = c
代入(255, 255)可得到 255 = a*2552 + b*255
稍微整理一下後可得到 b = 1 – 255a,因此通式變成y = ax2+(1-255a)x
當我們點了一點後可得某座標點(S, T),代入通式得到

剩下的就只是依照上面公式將已知的點代入即可,這樣一來大家應該會更加了解曲線怎麼運作的,其他多次曲線有興趣的人也可以自己推導看看喔。








04360455_張力仁_HW02

首先要知道一張圖片是由許多的Pixel所組成,而Pixel是由RGB所組成,以下範例圖片皆使用24位元深度,也就是224種不同的顏色來表達一張圖片,而RGB各用28來表示,也表示每個PixelRGB的值皆介於0~255之間,RGB(0,0,0)代表黑色,RGB(255,255,255)代表白色。

為了讓大家更了解圖片的構成首先介紹如何將一個圖片反向,所謂的反向也就是說原本白色的部分會變成黑色,較亮的顏色會變成較暗的顏色,我們已經知道RGB是一個介於0~255的值,所謂的反向原理很簡單,就是將原本的值與255相減即可,例如原本RGB(120, 55, 200)的顏色會變成RGB(255-120, 255-55, 255-200) = RGB(135,200,55)

原圖                                       反向後的圖

可以明顯看出來原本較暗的樹木變得非常白,而原本白色的瀑布變成黑色的。

        接著我們在介紹一下何謂灰階圖片,所謂的灰階圖片的顏色是由不同深淺的灰色組成,也就代表RGB的值皆相同,例如RGB(120, 120, 120),知道這個概念後大家應該可以猜到要將一個圖片轉成灰階最簡單的方式就是將原本RGB的值相加後平均並當成新的RGB值,例如RGB(50,100,30)因為平均為(50+100+30)/3=60會變成RGB(60, 60, 60)

原圖                                    灰階後的圖

       
稍微知道Pixel後我們來介紹何謂直方圖,所謂的直方圖就是統計中的PDF,講的簡單點就是各別統計RGB的值所出現的次數,這對我們來說並不算難,以下為範例的RGB直方圖。




而所謂的累積直方圖就是統計中的CDF,簡單來講就是每個值的次數為小於等於該值的次數總和,既然已經有各別的統計資料了,我相信這對我們也不是難事,以下為範例的累積直方圖。




        為什麼要介紹PDFCDF?其實是因為我們要講直方圖均化,所以必須要先了解CDF是什麼,所謂的直方圖均化是針對圖片的對比度進行調整,例如原本整張圖片的顏色都偏暗導致看不清楚,利用直方圖均化後可以讓你的圖片看起來更清楚,而直方圖均化的方法是將原本值轉變成的該值的CDF*255,例如原本R=32R_CDF[32] = 52%,則顏色調整為R = 255*52% = 133,記得上面的CDF是次數,這裡要將CDF轉成百分比進行調整,以下為均化前後的差別。


可以很明顯感覺得出來均化後的圖片變得相當清晰,直方圖均化的方法不算太難,因此如果有想自己寫程式自己修圖的朋友這個方法滿推薦剛入門的你嘗試。