2008年12月26日 星期五

HW 17

平時成績結算:

期中平時成績

平均:92

期末平時成績

     A B C
Week 12  6  6 3 => 75分

Week 13  8  1 4 => 78分

Week 14 11 2 0 => 97分

Week 15 14 0 1 => 100分

Week 16 13 3 0 => 96分
平均:89

自評報告與自評成績:

我給自己打9

  我平常上課都沒有遲到早退,上課的時候也都有在聽老師說話。老師上課教過的程式我回去也都有實作出來,平時作業也都有認真寫,沒有缺交。不過有時候上課的時候,我會不小心小打瞌睡一下下,因為下午第一節剛吃完飯,學校又沒有午休時間,不管是上什麼課我都會打瞌睡......

  我覺得我已經做得不錯了,不過應該還有進步的空間,所以我給我自己打9分。

期末心得:

  很快的這個學期就這樣過去了,感覺距離把BCB用到神乎其技的境界還有很長的一段距離,不過至少我有慢慢的在往那個方向前進了。我還記得我之所以會選這堂課的原因,去年因為和黃世育老師的"WEB程式設計"衝到,所以就沒有選這門課了。之後我就直接選下學期的"互動媒體處理專題",結果在BCB整個觀念(物件、屬性等等)都搞不清楚的情況下,我覺得學起來真的很累,最後期末的分數也是6X分過的。所以我就決定這學期要來把這門算是先修的科目補起來。

  確實還是從基礎的開始學比較好,有比較扎實的感覺。雖然老師在BCB部分教的內容並不算很多,但是基本上的概念是差不多都了解了。剩下的就要靠我們自己定一個目標,然後再從達到那個目標過程中,發現問題,進而學習更多的東西。我覺得這應該就是期末專案的目的吧,這樣學起來大家應該會比較有動力,因為畢竟是自己想要去解決的問題,就會比較想知道答案。期末專案自己定一個題目,然後去實作出來的這方法我覺得很不錯。

  還有我覺得下學期(明年)的"互動媒體處理專題"這門課開不起來真得很可惜,這樣會連3年級遊戲設計的那門課也不開了。 我覺得很多人選課的方式都只是看課程名稱,當然包括我有時候也會這樣。當看到2門課要做選擇的時候,會很直接的就去選課程名稱看起來比較有趣、比較簡單的。其實說真的,還是要先了解課程內容到底在教什麼,然後再做選擇會比較好。
C++ Builder 專案成果報告:

  好快就到了學期末,總覺得時間不夠用呀!因為還有其它科目也要做報告什麼的,1個月的時間感覺有點短呢。

一剛開始的期末專案

中間的Check Point

因為避免版面太長,一些之前在Check Point就有的功能,我就先不把每個功能都貼圖上來了。因為按鈕已經弄到1X個,如果每個按鈕都貼的話,我怕會弄得太長......

首先是程式的介面:


  這個是到目前我設計的樣子,我知道他真的......沒有很好,可能我真的沒有什麼創意吧。跟一剛開始的樣子差不多,不過我把底色換成了黑色,然後多加了一些按鈕而已。不過卻真的達到了我當初設計的樣子,我在計劃書裡面用小畫家畫出來的就出不多是這個樣子......

接下來是一個一個按鈕的介紹,先說明在Check Point裡面就有提到的功能好了。

互補色:老師在上課教的,就是用255分別去減去目前R、G、B的值,然後輸出的圖片就是互補色了。

轉灰階:也是老師在上課教的,將目前R、G、B的值加起來,然後除以3,再把算出來的值分別放回R、G、B的陣列裡面,輸出之後就是一張灰階的圖片了。

浮水印:還是老師在上課教的,簡單的概念是將2張的片的R、G、B值加起來除以2。不過我多加了浮水印圖片為白色的部分就不作處理,還有我設定原圖:浮水印圖片為4:1,這樣浮水印看起來就會比較淡。

上下、左右翻轉:從這邊開始都是我自己想出來的,我只是想說先從簡單的開始,所以這個功能主要在輸出圖片的迴圈上動手腳而已,把圖片的高度or寬度減掉目前的 i or j,就可以控制要怎麼翻轉了。

取出R、G、B的值:這個是我想到在輸出的時候,既然可以控制要輸出的R、G、B值,那如果我只輸出單一值,把另外2個顏色設為0的話...... 就變成我目前這個按鈕的效果了,圖片會只顯示單一種顏色的深淺,可以看出在一張圖裡面RGB 3種顏色用的是多少。

圖片增亮:這是當時只做一半的功能,還有變暗還沒做。不過現在我做出2種方式變亮,2種方式變暗,在下面有比較詳細的解釋我用得方法。

  首先在Check Point之後較大的突破,就是我可以開一個新的視窗,用來顯示原本的圖片和處理過後的圖片,新的視窗大小我設定最大可以到1027*768,如果超過的話也是會出現捲軸,要用拉的方式來顯示整張圖。

  上面就是就是用新的Form來顯示原始圖片的貼圖,不過可能這張圖片本來就不大,所以感覺不出差異性。如果是大張一點圖片的話,像是800*600,那在原本程式上就要用捲軸拉來拉去的看,不過點下這個按鈕之後,就可以在比較大的新視窗看了。
  這是使用圖片增亮1和2處理過後的對照圖,圖片增亮1的做法是,我把圖片上RGB的值全部都加上50,超過255的就直接設為255,這種做法好像也會讓圖片的對比有稍微降低的感覺。圖片增亮2則是把全部的RGB值都直接乘以2,超過255也是設為255。這兩種作法運算出來的圖片,感覺上有很明顯的差異。

圖片變暗的按鈕也是有1和2,處理的方式和圖片增亮是差不多。1的方法是將圖片上RGB的值全部減去50,2的方法則是除以2。輸出的圖片也可以看得出是有不一樣的。
另一個新增的功能是馬賽克,這個靈感來源是......三年級的"影像處理"那門課。因為課本在前面有介紹到類似的影像處理,所以我就想說要用BCB來寫寫看,真的很成功地寫出來了!
  我的方法是在輸出的函數那邊動了一些手腳,我把要輸出的陣列位置改變。RMatrix[i/9*9][j/9*9],這是在紅色值輸出的程式碼片段(綠色和藍色也是一樣的方法),我利用Int的特性,0~8除以9都還是0,並不會有小數點產生。所以(0,0)~(8,8)的位置再經過運算之後,都還是會顯示(0,0)那個位置的值,看起來就會是一個9x9單一顏色的小格子。

另一個按鈕的靈感也是我在影像處理那門課想到的,就是模糊化。我把一個點和周圍的點加起來取平均,我的程式裡面是將一個點的RGB值,和它周圍的624個點加起來,然後除以625。每個點都運算過一次再輸出,就會有模糊化(朦朧美)的效果了。


上面那張圖片就是按下模糊化處理之後的結果喔!

  再來的按鈕則是抄襲別人的XD,其實只是功能上抄襲啦!程式還是我自己打得,因為和翻轉的功能相似,所以很快就做出來了。這個按鈕就是180度的旋轉,只要把輸出時設定成從原本圖片的最尾巴開始印,就可以有180度旋轉的效果了。



但是在90度的旋轉上會出現長寬不同而再造成的錯誤,這部份我有想了蠻多的方法,不過目前還沒有做出來......

最後則是想不到要做什麼,所以我做了跳出警告視窗的功能。按下"請勿觸摸"的按鈕後會跳出一個......"施工中"的警告視窗。


以上就是我程式的所有功能了,但是在計劃書裡面還有很多功能都還沒有做出來。

˙圖片向上下或是左右延伸。
˙自由調整浮水印的位置。
˙減少或是增加對比效果。
˙剪刀石頭布那種小遊戲.......
˙Debug
  我發現圖片的延伸或是縮小其實沒有那麼容易,如果要從迴圈和每個像素來下手寫程式的話,倍數的延伸或縮小我還想的到,但是當不是倍數的時候就很難處理了。不知道BCB裡面有沒有可以直接改變圖片大小的函數或類似的功能。

  自由調整浮水印的位置本來是想要學老師,用滑鼠來指定位置,不過後來因為在玩開新視窗的功能,這部分就來不及把它做出來了。

  後面那些對比、小遊戲等等,也都是因為時間上的關係.......。不過Debug卻是有做很多的,但是好像永遠也Debug不完。目前我還有一個地方不知道怎麼修正,就是當我讀取一張圖片然後按下任何一個影像處理的按鈕之後,再開啟第2張大小不同的圖片,再做一次影像處理的動作,就會發現輸出的影像大小是有問題的。目前我還找不到這個問題要怎麼來解決......

最後附上我的程式下載點,我放在ss24上面:


最後跟大家說:新年快樂呀~

沒有留言:

張貼留言