2014年6月13日 星期五

[HW5] Watermark

數位浮水印,是指將特定的資訊嵌入數位訊號中,數位訊號可能是音訊、圖片或是視訊等。若要拷貝有數位浮水印的訊號,所嵌入的資訊也會一併被拷貝。數位浮水印可分為浮現式和隱藏式兩種,前者是可被看見的浮水印(visible watermarking),其所包含的資訊可在觀看圖片或視訊時同時被看見。一般來說,浮現式的浮水印通常包含版權擁有者的名稱或標誌。

實作方式:    
  • Replacing a specific color in a bitmap to achieve transparency
  • Changing the opacity of an image through a 5x5 ColorMatrix

float[][] colorMatrixElements = { 
   new float[] {1.0f,  0.0f,  0.0f,  0.0f, 0.0f},
   new float[] {0.0f,  1.0f,  0.0f,  0.0f, 0.0f},
   new float[] {0.0f,  0.0f,  1.0f,  0.0f, 0.0f},
   new float[] {0.0f,  0.0f,  0.0f,  0.3f, 0.0f},
   new float[] {0.0f,  0.0f,  0.0f,  0.0f, 1.0f}
};
改變其中 3rd row 3rd column 的 0.3f 即可得到不同的透明度

Origin Picture


Logo

 Result



Reference :
http://www.codeproject.com/Articles/2927/Creating-a-Watermarked-Photograph-with-GDI-for-NET

2014年6月6日 星期五

[HW4] Skin Detection with HSV

The R,G,B values are divided by 255 to change the range from 0..255 to 0..1:

R' = R/255
G' = G/255
B' = B/255
Cmax = max(R', G', B')
Cmin = min(R', G', B')
Δ = Cmax - Cmin

Hue calculation:

Saturation calculation:

Value calculation:
V = Cmax

The skin in channel H is characterized by values between 0 and 50, in the channel S from 0.23 to 0.68 for Asian and Caucasian ethnics.
Origin Picture

Skin Detection

[HW4] Color Space RGB to HSI

Hue(色相)
    是色彩的基本屬性。

Saturation(飽和度)
    是指色彩的純度,越高色彩越純,低則逐漸變灰,取0-100%的數值。

Intensity(亮度)
    為亮暗程度,取0-100%。

並利用以下公式轉換:
The R,G,B values are divided by 255 to change the range from 0..255 to 0..1:
R' = R/255
G' = G/255
B' = B/255


Origin Picture

Hue(色相)

Saturation(飽和度)

Intensity(亮度)



2014年5月11日 星期日

[HW4] Frequency Filtering

分別在空間域與頻域實作 Gaussian 平滑濾波器,必須可調整濾波器的標準差參數與濾波器大小
(Filter Size 3x5, 5x5 等)。

首先根據以下公式,產生一個 Gaussian mask
而後直接套用於原圖上即可

原圖

空間域處理
Sigma = 1.5, filter 3 x 3



而Gaussian smooth filter在頻域上,以下方公式產生一個Gaussian smooth filter



Mask圖片

D0 = 20.0

再將filter乘上做完離散傅立葉轉換後的每個點,再利用公式做反傅立葉轉換

頻域處理

[HW4] Discrete Fourier Transform

計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度以灰階 256 色圖像方式呈現。

先將圖片各點利用傅立葉公式進行計算
各點會得到複數
再利用以下公式運算,即可得到各點頻譜大小

原始圖片

離散傅立葉轉換

離散傅立葉轉換 + Log加強

離散傅立葉轉換的相位角 



2014年3月26日 星期三

[HW3] Sobel Edge Detection

Edge Detection (邊緣偵測) 有許多不同方法。

Sobel 的方法就是算出影像的垂直梯度(gradient)與水平梯度
兩者取絕對值相加即可。

運用影像摺積(convolution)運算的原理,它的兩個核心(kernel)或稱加權函數(weighting function) g1與g2分別為

將影像 f 與 g1 g2 進行影像摺積運算得 

然而 Sobel 運算出的結果即是


 簡化為

 故假設

經過以上運算得



實作結果

Before Edge Detection

After Edge Detection


[HW3] Histogram Equalization

Histogram Equalization (直方圖均衡化) 圖像處理領域中利用圖像直方圖對比度進行調整的方法。












這種方法通常用來增加許多圖像的全局對比度,尤其是當圖像的有用數據的對比度相當接近的時候。通過這種方法,亮度可以更好地在直方圖上分布。這樣就可以用於增強局部的對比度而不影響整體的對比度,直方圖均衡化通過有效地擴展常用的亮度來實現這種功能。


實作結果


Before Histogram Equalization

After Histogram Equalization



2014年3月13日 星期四

[03/13/14][HW2] Image Rotation


(1) nx , ny 先平移 (-ox,-oy),得到 nx2, ny2 
    nx2 = nx - ox , ny2 = ny - oy

(2) nx2, ny2 經由旋轉矩陣,旋轉 theta 度,得到對應的 x, y
     x = nx2 * cos(theta) + ny2 * sin(theta) + ox

(3) 再將 x, y 平移 (ox, oy)
    y = -nx2 * sin(theta) + ny2 * cos(theta) + oy

Code Implement




參考資料來源:

[03/13/14][HW2] Bilinear Interpolation


a, b, c, d 四個點的灰度值分別為 f(a), f(b), f(c), f(d),現在要來求 f(p)
假設 p 至 a 的水平距離為 alpha
假設 p 至 a 的垂直距離為 beta
由於abcd四點都是相鄰間距為1單位的格子點上
所以 p 至b 的水平距離為 (1-alpha)
所以 p 至c 的垂直距離為 (1-beta)
其它依此類推...

Bilinear 的精神就是影響力與距離成反比所以
f(p) = (1-alpha)*(1-beta)*f(a)
         + alpha*(1-beta)*f(b)
         + (1-alpha)*beta*f(c)
         + alpha*beta*f(d)

Code Implement

附圖為 實際操作圖



[03/13/14][HW2] Nearest Neighbor Interpolation

找離 (x , y) 最近的整數點 (xout , yout),以 f(xout , yout) 代替未知的 f(x , y)
而 f(x , y) 就是縮放後的 g(u , v)的值。

假設
XRatio = NewWidth / OldWidth;
YRatio = NewHeight / OldHeight;

故將 u* XRatio + 0.5 取整數即為最靠近點之座標

Code Implement

附圖為 實際操作圖


參考資料來源:
朱式幸福