顯示具有 06360321 鄭子輿 標籤的文章。 顯示所有文章
顯示具有 06360321 鄭子輿 標籤的文章。 顯示所有文章

2020年1月12日 星期日

06360321 鄭子輿 HW5

YUV色彩模型與色彩轉換
YUV色彩模型:Y為亮度,U、V為彩度,因為人的眼睛對於亮度較為敏感,彩度較不敏感,因此可以減少對彩度的取樣,達到省空間的效果。

界面總攬
Y:使用者字定義UV平面亮度
Set new Y in YUV palette:用當前亮度值重新畫UV平面
Before conversion image:轉換前的影像
Origin image:最原始的影像


YUV palette

利用整數轉換公式將YUV palette的值轉換成RGB畫在圖片相對應的位置上
公式如下
clip是自己寫的函數,為了預防轉換公式後色彩值超出0~255的範圍,所以要將超出的色彩值定義在範圍內。

下面分別為亮度0、亮度128、亮度255的UV平面



色彩轉換:將原始影像RGB轉換成亮度+palette內點選的UV彩度=色彩轉換後的影像。

RGB轉亮度的公式
原始影像

各種色彩轉換後的影像



心得:測試過程中發現先使用其他功能調整完影像後再使用色彩轉換會將最原始的影像做轉換,而其他功能的效果就消失了,因此需判斷在進入色彩轉換頁面時複製當前圖片,進行色彩轉換時拷貝當前圖片再轉換,判斷方法如下
CopyImage()是自己寫的函數。


魔術棒有bug,所以無法po上來了QQ,以下是自己研究繪製簡單圖形的部分,不算加分,純分享。
Canvas繪圖
下圖為圓形+正13邊形+正13角星的圖形
在Canvas上繪製圓形+正N邊形+正N角星方法:

圓形參數式
X = A + R * cos( θ )
Y = B + R * sin( θ )

(A,B)為圓心偏移原點(0,0)位置
R為圓半徑
0 <= θ < 360

利用上面圓形參數式即可化出圓形
程式碼:


正N邊形+正N角星
作法:得出其中一條直線參數式之後再使用旋轉矩陣劃出每一個邊。

θ = 360 / N
假設O為圓心

上圖左邊公式為正N邊形其中一個邊的直線參數式
AB線段為正N邊形其中一條直線
OA線段與OB線段間角度為θ

上圖右邊公式為正N角星的其中一個邊的直線參數式
AC線段為正N角星其中一條直線
OA線段與OC線段間角度為2*θ

個別求出參數式之後再使用旋轉矩陣將其他直線畫出來
旋轉矩陣公式:
程式碼:

06360321 鄭子輿 HW4

濾波器與胡椒鹽雜訊
界面總攬

平滑濾波器:目的是模糊化影像及減少雜訊,利用周圍色彩值平均值取得模糊化影像的效果。
實作使用的兩個遮罩
九宮格中間為當前要修改的點(x,y)
將原始影像(x-1,y-1)、(x-1,y)、(x-1,y+1)、(x,y-1)、(x,y)、(x,y+1)、(x+1,y-1)、(x+1,y)、(x+1,y+1)乘上九宮格內相對應的係數後再取平均值,最後這個值就是當前(x,y)的值

平滑濾波器界面
Averaging filter(1/9):平均濾波器
Weighted average filter(1/16):權重均值濾波器

原始影像

平滑濾波器(1/9)

平滑濾波器(1/16)

胡椒鹽雜訊:將影像變成受雜訊干擾的影像。

胡椒鹽雜訊界面
Percent:胡椒鹽密度,6% = 3%白點 + 3%黑點
Pepper-and-salt noise:對影像灑胡椒

原始影像

胡椒鹽密度為6%的影像

排序統計濾波器
分為三種:
最大值濾波器:輸出周圍九宮格內的點排序後的最大值
中值濾波器:輸出周圍九宮格內的點排序後的中間值
最小值濾波器:輸出周圍九宮格內的點排序後的最小值

排序統計濾波器界面

利用中值濾波器來消除胡椒鹽影像的雜訊

原始影像

使用中值濾波器後影像

從結果可以看出雜訊已經被成功消除了,不過影像會變較為模糊。

若是使用最小值和最大值濾波器黑點和白點將會被放大
使用最小值濾波器後影像

使用最大值濾波器後影像

銳化濾波器:將影像的細節凸顯出來,使影像變清晰。
分為兩種:
沒考慮對角線的
遮罩如下

有考慮對角線的
遮罩如下

銳化濾波器界面

原始影像

沒考慮對角線的銳化影像

有考慮對角線的銳化影像

從字的清晰程度可以看出來有考慮對角線的銳化影像呈現的比較好

心得:銳化是我平常比較常使用到的功能,經過這次的作業讓我了解影像是如何銳化的,若是想要讓字有更加立體的效果,可以將銳化遮罩周圍的係數調小,增加銳化的效果。

06360321 鄭子輿 HW3

色階調整與曲線調整
色階調整:設定影像的色彩值最大值和最小值後將原本色彩值依比例放在新的位置。

公式如下
iInput:原始色階
iOutput:調整後色階

iInputMin:輸入下界
iInputMax:輸入上界

iOutputMin:輸出下界
iOutputMax :輸出上界

色階調整界面
Previous RGB:調整前影像RGB直方圖
Current RGB:當前影像RGB直方圖
Setting裡面則是給使用者設定的輸入輸出上下界
Reset:將影像回復到原始狀態
OK:進行色階調整

色階調整實際呈現
原始影像

輸入輸出上下界設定

調整後影像
可以看出整張影像呈現偏暗,因為我將輸出的上界調整至120,
已知色彩值255為最亮0為最暗,而原始影像本身有超過120以上的色彩值,所以調整後的影像看起來才會比原圖暗。

如果要將調整後的圖片變亮一點,可以調整輸出上下界的值
原始影像

輸入輸出上下界設定

調整後影像
這樣影像整體就變亮了,至於為什麼都是偏向紅色?那是因為我將輸入上下界也調整了,從下方直方圖可以明顯看出來輸入上下界的區域裡面(169~255),紅色色彩數量遠遠高於綠色和藍色,因此整張影像會偏向紅色。

原始圖片直方圖

曲線調整:色階調整是將函數圖形調整成直線,而曲線調整顧名思義就是可以將函數圖形調整成曲線。

公式如下
S:使用者自訂X座標
T:使用者自訂Y座標
x:曲線X座標
y:曲線Y座標

曲線調整界面
Curves:畫出調整後的曲線
X:使用者自訂X座標
Y:使用者自訂Y座標
Reset:將影像回復到原始狀態
OK:進行色階調整

曲線調整實際呈現
原始影像

通過的點設定

調整後影像

調整後曲線

心得:學到用新函數來調整影像,影像將會有更多的呈現方式,注意要將曲線函數f(x)值強制在0~255之間。