可視浮水印做法有許多種。
較簡單的方法就是將兩張圖片,重疊的部分的RGB都相加除以二。
這樣可以保留兩張圖片平均的RGB,所產生的落差看起來就會有浮水印的效果。
實驗結果:
影像處理作業平台
2014年6月10日 星期二
2014年6月2日 星期一
RGB to HSI & Skin color detection
Converting color from RGB to HSI
HSI Color Model是一種將RGB色彩模型中的點在圓柱座標系中的表示法。
HSI分別為: Hue(色相)、Saturation(飽和度)、Intensity(亮度)。
而在HSI Color Model下可以對影像做許多處理。
Skin color detection
針對影像的Hue與Saturation做限制,可以初步取出膚色區域。
Hue範圍約為 0 ~ 50
Saturation範圍約為 0.23 ~ 0.68
但對某些圖片而言,針對HSI調整而得到的偵測膚色的效果沒有那麼好。
如果進一步轉成YCbCr,再找出膚色範圍,可以得到比較好的效果。
轉換公式:
HSI Color Model是一種將RGB色彩模型中的點在圓柱座標系中的表示法。
HSI分別為: Hue(色相)、Saturation(飽和度)、Intensity(亮度)。
而在HSI Color Model下可以對影像做許多處理。
RGB to HSI的核心轉換公式為
以lena圖來做RGB to HSI實驗
原圖
取Intensity之結果
取Saturation之結果
取Hue之結果
Skin color detection
針對影像的Hue與Saturation做限制,可以初步取出膚色區域。
Hue範圍約為 0 ~ 50
Saturation範圍約為 0.23 ~ 0.68
實驗結果
但對某些圖片而言,針對HSI調整而得到的偵測膚色的效果沒有那麼好。
如果進一步轉成YCbCr,再找出膚色範圍,可以得到比較好的效果。
轉換公式:
膚色範圍大約是 98<Cb<142 133<Cr<177
結果
2014年5月5日 星期一
DFT & Gaussian low pass filter
此次實做對圖片的DFT與IDFT
並分別在frequency domain 與 spatial domain上實做Gaussian low pass filter
流程為:
1. 輸入一張M*N的圖 f(x,y)
2. 對該圖做zero-padding,pad成 2M*2N 大小的圖 fp(u,v) (原圖保持在左上方)
3. 為了頻譜可以置中,將fp(u,v)奇數點乘上(-1)
4. 對fp(u,v)做DFT得到F(u,v),
以spectrum方式表達: sqrt ( | R * R + I * I | ),R為實部、I為虛部。
以phase angle方式表達: arctan( I / R ) ,R為實部、I為虛部。
5. 計算D(u,v)與H(u,v)
P=2M , Q=2N (中心點)
D0可設定
6. 計算 F(u,v) * H(u,v) 然後對結果做IDFT 所得即為Gaussian low pass filter在頻域作用後的結果。
7. 針對spatial domain 的 Gaussian low pass filter 先以下列公式做出Gaussian mask
之後再以此mask對原圖做Convolution
以 128*128 的lena做實驗
照上述流程,做DFT後的結果。
以phase angle表示
以frequency spectrum表示 ( 有經過log處理,使圖片明亮。公式 : log ( 1+ sqrt ( | R * R + I * I | ) ) )
對頻域做gaussian filter
原圖 D0 = 50 D0=20
對空間域做gaussian filter
原圖 mask大小:3*3 mask大小:5*5
σx,σy都為1.414 σx,σy都為3
2014年3月26日 星期三
Histogram equalization and Sobel Operators
1.
Histogram
equalization
影像增強技術,是為了讓顏色過度集中於某一亮度範圍而導致不清楚的圖片能變得更清晰,把每個像素的顏色重新分配到平均的亮度範圍上。
為了達成影像增強的效果,可以利用Histogram equalization的統計方法來實現。
核心公式:
此一公式是將原本的分佈重新分配到一個uniform distribution來達到平均分配的效果。
範例:
(a)原圖 (b)H.E.過後的圖
(c)原圖彩度分佈 (d)H.E.過後圖的彩度分佈
2.
Sobel
Operators
應用在邊緣偵測上的filter有許多種,而Sobel Operators就是普遍的其中一種。
Sobel filter:
(e)水平方向 (f)垂直方向
核心公式:
水平(gx)與垂直(gy)必須分開計算,更精細的結果應該是(gx+gy)^(1/2),但此一過程較為複雜,所以用接近的 | gx | + | gy | 代替。
範例:
(g)原圖 (h)透過Sobel Operators後的圖
2014年3月13日 星期四
影像縮放 與 影像旋轉
影像縮放有三種常用的方法,分別為
(1) Nearest
Neighbor
(2) Bilinear
(3) Bicubic
影像旋轉則是運用一些三角函數概念便可實作
(4) Rotation
1.
Nearest Neighbor
Nearest Neighbor的作法是將想要輸出的圖像中的每個像素的座標乘上一個比例(原圖大小/輸出圖大小),可得一對應到原圖上的座標。
i
* (w1/w2) = m’ (對應到原圖上的x座標)
j
* (h1/h2) = n’ (對應到原圖上的y座標)
然後將所對應到的座標上的顏色assign到輸出圖的座標上,由於所得的m’ 與 n’ 有可能不是整數,因此找離m’與n’最接近的整數m與n。所以要將原圖( m, n )這點的顏色assign到輸出圖的( I, j )上。
將每個點經過上述過程處理之後,就可得到一縮放後的結果,此作法較簡單但輸出圖會較粗糙
2. Bilinear
此種方法先是將輸出圖的每個像素的座標,依比例對應到原圖的座標上。
i
* (w1/w2) = m’ (m’對應到原圖上的x座標)
j
* (h1/h2) = n’ (n’對應到原圖上的y座標)
與Nearest Neighbor不同,m’與n’不是找最接近的整數值,而是找相鄰的四個點並依照下列公式內插出一個相對平滑的顏色assign到輸出圖的(i,j)當中。
color(a,b) * (1-alpha) * (1-beta)
+
color(a+1,b) * (alpha) * (1-beta)
+
color(a,b+1) * (1-alpha) * (beta)
+
color(a+1,b+1) * (alpha) * (beta)
此一公式的核心原理就是原圖中離(m’,n’)較近的四個像素中,距離越近的影響力越大。
這一個方法相較於Nearest Neighbor之下,較為平滑。
3. Bicubic
此方法將輸出圖的座標對應到原圖後,使用微分的方法推出一多項式,將對應座標與鄰近的16個像素以該多項式內插,便能得到比前兩者更為平滑的影像,缺點是必須耗費更多的運算資源,較花時間。
三種方法將512*512的lena圖放大到1024*1024的比較
Nearest Neighbor
Bilinear
Bicubic
觀察眼睛的部分,Nearest Neighbor產生明顯的方格狀。Bilinear與Bicubic較為平滑,Bilinear略顯模糊,Bicubic最為平滑。
4. Rotation
影像旋轉的核心公式是
sin(A+B) =
sin(A)cos(B)+sin(B)cos(A)
cos(A+B) =
cos(A)cos(B)-sin(A)sin(B)
以每張圖的中心點當作轉軸,若想要轉N度,將輸出圖的每一點以上列公式推出逆轉N度後的位置,若有對應到原圖上,就將原圖的顏色assign到輸出圖上,這樣就可以完成影像旋轉。
影像旋轉結果
訂閱:
文章 (Atom)