2014年6月11日 星期三

Digital Image Processing Assignment 6

這次的作業是要我們在一張圖上加上一個可見浮水印,實作上其實不難,最簡單的方法是可以直接找兩張大小及通道數都一樣的圖,自己看情況給予兩張圖權重相加即完成,如下:



               










這兩張一樣大小的圖,透過乘以一個係數的相加(我是用1和0.3),就可以把兩張圖合併,將我的姓名學號以浮水印的方式印到lena上去了。

























雖然說是印上去了,但可以看出作為背景的lena整個蒼白了不少,記得老師在講解題目的時候有要求我們盡量能讓原圖保持原樣,對於原圖的破壞越小越好,所以我又弄了另外一張小的logo去做,只讓logo要印出的那個小區域產生變化。


















主要做法是用addWeighted這個函式對於想印上去的區域決定原圖和logo要給予的係數(跟上個方法類似,我是用1跟0.2)做運算,得到一張有浮水印的新圖。

























原圖被破壞得很明顯沒有上個方法大,只有矩形區域稍產生變化。


























用這個方法在圖上的任一點做浮水印結果都還算清楚。



2014年6月5日 星期四

Digital Image Processing Assignment 5


這次作業主要是對於一些全彩圖片顏色的操作,共分為兩個部分:

1.讀一張全彩圖,並將該圖的RGB空間轉為HSI空間各自輸出

2.偵測一張圖片的膚色區域


1.RGB轉HSI:

基本上這個部分的轉換還算單純,主要就是用現成的公式對彩圖的RGB進行運算,並將結果呈現在一張單通道的圖像上。

首先簡單的看一下轉換公式:

H = cos-1[ (R - ½G - ½B)/√R² + G² + B² - RG - RB - GB ]            if G ≥ B, or
H = 360 - cos-1[ (R - ½G - ½B)/√R² + G² + B² - RG - RB - GB ]    if B > G,


S = 1 - m/I    if I > 0, or
S = 0            if I = 0


I = (R + G + B)/3

接著就直接來看結果:



           (a)原圖


                                      
                                       (b)Hue


                                       
                                       (c)Saturation



                                       (d)Intensity




2.膚色偵測:

這次也做了一個簡單的膚色偵測,我並沒有轉到甚麼特殊的color space去判斷,而是直接以RGB的值去區分,結果如下所示,我大概只用了R以及B(濾掉背景)就可以將膚色區分出來,至於後方的建築物由於值和膚色相近,所以一起被偵測出來了。



        (a)原圖



                             (b)偵測後
                 












2014年5月12日 星期一

Digital Image Processing Assignment 4



這次作業主要是要實作傅立葉轉換與頻域濾波器,主要有分為幾個部分


首先按照慣例我們要先來一個Lena


接著我們要進行padding的工作,主要是要讓圖片長寬變成兩倍(補0)這時原圖在左上角


再來進行(-1)^x+y這個步驟,可看出稍有變化


進行傅立葉轉換,可以得到實部和虛部,需要存到不同陣列中以方便處理,由圖可以知道他的計算量是非常驚人的(  (a)為實部, (b)為虛部  )

                                                                        (a)

                                                                       (b)

最後再由得到的數字,算出頻譜大小(有經由log處理過)


第二部分是實行高斯頻域濾波器,結果如下所示:










2014年3月26日 星期三

Digital Image Processing Assignment 3

這次的作業主要分為兩個部分:Histogram Equalization and Edge Detection


1.Histogram Equalization (直方圖均化):

直方圖在影像處理是把一張圖裡各個顏色所占的個數或比例顯現成一張分布圖。
直方圖均化使用機率分佈, 將原先的亮度分佈重新均勻的等化到新的亮度值原來在直方圖分佈中 比較均化的影像例如 :低對比度的影像,透過直方圖等化的過程,其亮度灰階的分佈變成均勻分散,而成為高對比度的影像另外,對於影像偏暗的部分提高亮度,偏亮的部分則降低亮度, 使得細節呈現更為清晰,如下圖:

 可以發現經過均化後亮度看起來比較平均,對比也比較明顯,lenna顯得容光煥發。

 透過直方圖來表達則如上所示。



2.Edge Detection(邊緣偵測):

sobel operator是邊緣偵測方法中的其中一種 ,其原理是透過一個3x3的mask去計算每個點的垂直和水平梯度,透過梯度的變化去找出邊界,結果如下:










2014年3月13日 星期四

影像處理概論Assignment2-影像縮放與旋轉

(一)影像的縮放:總共分為三個部分:

 (a)Nearest-Neighbor Interpolation:

   NNI主要是將影像按照一定的比率縮放後,找尋一個最近的點,將其像  素直接填入,作法十分簡單,但想當然它的品質一定不會太好,下圖為  經過NNI放大後的lena,雖然因為圖小比較看不出來,但將他稍微放  大會發現圖片品質不佳,尤其鋸齒狀十分明顯。



 (b)Bilinear Interpolation:

  同樣是先按照一定的倍率去找他的對應座標,雙線性內插則是取了鄰   近的四個點,根據其權重給予適當的像素,如下圖所示,圖片經過放   大比較後會很明顯的發現影像的鋸齒沒那麼明顯,品質較NNI來的   好


 (c)Bicubic Interpolation:
  雙線性內插和有點像,他是用鄰近的16個點去做處理,效果又會更好,           但尚未實作成功。

(一)影像的旋轉:

 網路找到的影像旋轉的公式如下所示:

x=cos(α)  -sin(α)*u
ysin(α)   cos(α)v

透過旋轉角度的設定帶入公式運算,再透過即時秀出影像,即可得到一個旋轉中的lena.