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)偵測後