顯示具有 95360254 王靖升 標籤的文章。 顯示所有文章
顯示具有 95360254 王靖升 標籤的文章。 顯示所有文章

2010年1月18日 星期一

HW05

這次的作業位元平面切片,怎麼看都沒感覺....也有上網去找資料,可是我怎麼找,
就只有這張圖↓,都沒有更深入的內容









這張圖就是在講位元平面切片,Bit 0~Bit 7的意義,Bit 1的意義最少,Bit 8的意義最多
我在猜Bit 數越大,就代表它和原圖越接近;Bit 數越小,就代表它和原圖差越多
位元平面切片似乎還牽扯到資訊隱藏的部分,好像是利用Bit 數小的來做資訊隱藏,並且不會破壞原圖

8bit的像素點顏色和
0000 0001
0000 0010
0000 0100
0000 1000
0001 0000
0010 0000
0100 0000
1000 0000
分別做"&"運算就可以做到位元平面切片
當然程式的部分要轉成16進制才能執行囉
以下是實作

↓我是原圖









↓1-Bit








↓2-Bit








↓3-Bit








↓4-Bit








↓5-Bit








↓6-Bit








↓7-Bit








↓8-Bit










最後要老實說,這次的作業是借用同學的程式碼來研讀的
程式碼看完就大概知道切平面的做法,切平面的數學公式並不難理解
但是切完之後,為什麼1-Bit和8-Bit的差異這麼大
照最上面那張圖片給我的感覺,應該是把像素點色彩值平均切成8份
結果上網查了之後,發現有所謂的重要程度,我想這就是8-Bit這麼接近原圖的原因吧

2010年1月17日 星期日

hw07










↑這是在網路上找到的圖片,也就是濾波器的示意圖,原本應該放在hw6裡面,不過懶的去重新編輯,就把它放到這裡來囉





↑這是這次做梯度銳化的公式,其實梯度銳化就只是要去強調"邊界"的部分,藉由算出Gx水平差異和Gy垂直差異後,將其個別取絕對值後相加→G=|Gx| + |Gy| 後就可以得到我們要的結果。
在這之中,Gx和Gy的公式很容易搞錯......Gx是要算水平差異,所以0應該擺垂直的,這樣才能算出"左右"的差別,而不是把0擺水平......(應該是這樣子吧)。實際上寫程式的時候,因為公式的關係,最後兩個結果還是要相加,搞錯了也不會影響結果阿~~~囧

↓這是我的實作圖














其實這張圖還是有一點彩度,所以很多細節的地方看起來會很亂......
所以我就大概歸類了一下
當G >250 則 G=255
當25< G <100 則 G=50
當100< G <250 則 G=150
其他G=0之後
↓圖片就會簡單許多,看起來也比較不會覺得很雜亂




其實這次的梯度運算公式只知道個大概,反正把水平or垂直變化大的地方特別顯示出來,就可以達到銳化的效果了吧!

HW08

期末心得:

  不知不覺一個學期就過了,老實說這次的課自己很常缺席(揍爛),BCB一開始用的真的很不習慣,要先拉一堆Button、Panel等等的東西,然後很奇妙的指來指去的程式寫法讓我頭很大。也還好,習慣成自然,久了BCB不再陌生,一些常見簡單的指令,也大概知道它的作用是什麼,果然程式這種東西還是要常寫才會強。解決了入門的階段之後,就要面臨噁心的理論轉成程式的部分,而這個部分到現在我還沒辦法獨力完成,都是借同學的程式碼來看,了解一下為什麼要這麼做之後,自己再寫一次。這部分花了我大部分的時間,但是有自己寫,印象就會很深刻,利用Scanline來取得RGB值的原理、濾波器的設定運用等等。印象最深刻的一次作業,就是在搞濾波器的判斷,由於bPtrOriginalImage是byte,為了把色彩值收斂再0~255之間,設了一個int i來做if判斷,就變成得要做int轉byte和byte轉int的動作,結果我很傻很天真的只有做byte轉int,沒有轉回來,花了我2個多小時找問題(= ="),真覺得自己蠢爆了。但是成功之後的成就感,真的是什麼都比不上,蘇湖啦!
  
  對於老師的評分標準,我是覺得有好有壞,寫心得這個動作是為了讓老師能夠理解你學到哪,比起看程式碼,我覺得好太多了,畢竟程式碼能抄,學到多少可是抄不了。不過每個人的表達能力不一樣,或許學習寫blog學習表達能力也是老師的目的吧!而且老師看到的東西會比較主觀,像第四次作業我其實沒遇到什麼問題,心得的部分內容就會少很多,老師看了看可能就會覺得還好,分數自然就會低了一點。也許我寫的心得太淺吧!anyway~我還是很推崇老師的評分標準的。

   沒有設定作業上傳期限這點真的是太深得我心了,對於外務很多的我來說,三不五時台北桃園跑來跑去,作業遲交的問題就常常落在我身上.....雖然我還是會拖欠作業。但我想老師應該是希望我們能在這門課裡盡量去學些東西,而不是去訂定一堆沒意思的規定吧。在老師這樣子的教學模式下,BCB從不懂到略懂,以及和同學討論,原本懶惰只想抄襲作業的心態都變得很上進(無誤),雖然作業沒辦法每次都拿一百分。

  最後還是要謝謝老師這學期的指導,真的學了不少:)

2010年1月16日 星期六

HW06





















這次的作業講到了柔化和銳利化的功能第一個想到的就是朋友拍的這張照片105MM 柔焦鏡 因為是長焦段鏡頭,會產生景深和壓縮感所以很容易產生立體感 我猜~如果數位相機要做到這個功能也不過就只是把相機"對焦區"以外的範圍柔化而已吧!不過這種功能,對於強調"人像"到還滿好用的!原本只是路人阿罵,拍起來也有專業的model感覺了呢

切回正題柔化的功能,我們可以利用濾波器的技術來做一個遮罩





如↑圖以(x, y)為中心把自己*權重*1/9 加上 周圍八個點個別*權重*1/9相加後除去權重總合
就可以做到柔化的效果,但要注意,這9個權重的值總和不能=0,否則"任何數/0"是會爆掉的

↓我是原圖



















↓把值全部設成1,就會出現朦朧美的柔化效果:)



















↓把中間的值設為-10,其他為1時



















這是我在玩銳利化的效果時,不小心發生的問題......
出現了溢位,就只好把>255的變成255,<0的變成0

↓即使打上-50也可以很漂亮:P



















↓中間值=50,其他為1時



















如果固定周圍八個點為1,中間的值如果越大
就會越接近原圖的樣貌,畢竟周圍的點影響中心點的能力太小了



再來是銳利化的效果
其實跟前面的差不多,只是遮罩的這9個權重的值總和要=0
把9個點個別*權重相加之後的結果再加上原本的色彩值,就可以達到銳利化的效果
但要記得,色彩值必須轉換成int,畢竟輸入的值有負數...
這裡也很容易溢位的情形,所以一樣要把值固定在0~255之間

把9個點個別*權重相加之後的結果↓
如果為正,數值變大顏色會變深
如果為負,數值變小顏色會變淺
所謂銳利化的感覺大概是這樣

↓當中間值=-8,其他為1時



















↓當中間值=-4,中間值的上下左右=1,其他=0時









雖然效果沒有上一張圖來的明顯
但是自然多了:)

2010年1月7日 星期四

HW4

這次的作業,就類似於明暗度、對比的調整
其實就只是把圖片的RGB值套入
s=c*r^gamma 這個公式中,
其中c=255.0/255^gamma
  r=原本的色彩
  s=調整後的色彩
所以當gamma=1時,所得到的結果是不會變的
gamma>1 (調暗);gamma<1(調淺)
利用c=255.0/255^gamma公式,
可以把調整後的色彩控制在0~255之間

當gamma>1時  gamma=2

這裡可以發現,原本不是很清楚的睫毛,因為對比增加了之後,睫毛就變成清晰可見

當gamma<1時  gamma=0.5

感覺像是被打了spa light...喬巴也可以有粉嫩的肌膚(誤)

2009年12月18日 星期五

HW03













這次程式真的不容易
主要是參考範例程式和巴著同學狂問這樣...
利用imHistogram->Canvas->Pen->Color畫直方圖都還OK
之後嘗試寫mouse move ,會出現floating point division by zero的錯誤
搞了很久還沒想到要怎麼處理這個問題......就先把這個功能註解掉了:P

HW02















原本以為是套套公式就能解決的作業,沒想到卻是困難重重
沒有設定中心點,圖片就會亂跑
還有圖片旋轉後會被切掉的情形還沒解決就是了......

2009年12月17日 星期四

HW01


















雖然不是第一次使用BCB
對於習慣寫VC的我來說,還是覺得用不習慣
一開始簡單的開圖
利用Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName)就能輕鬆做到

雖然簡單......我承認我懶惰,拖到最後才交作業