這是我第一次修與數位媒體相關的課程,除了在大一的計算機概論之後就幾乎沒碰過。言歸正傳,第一次的影像處理作業在我看來有棘手,雖然我上課都有在聽,可是都會聽得霧煞煞。因此寫作業之前我在網路上找了很多資料,卻一點感覺也沒有,最大的問題在於我對理論並不是很熟,所以我無從下手。之後我便向班上幾位同學討教,研究之後對程式碼比較有些概念,加上網路上的範例程式碼(非完整)很多可以參考,再慢慢對照著之前寫到一半的程式碼了解他是在做什麼功用。
例如調色盤的部分,一開始我完全不懂,自己查過之後又在奶昔的噗浪上看到李彥頡的提醒,慢慢的開始有些進展。星期五一開始上課老師就說要開放時間給大家討論作業,又看了作業部落格上的作業,加上老師又解釋了兩種寫作方式,第一種是針對調色盤去改變它的色素,第二種則是針對索引值去做改變。起初,我想從調色盤這邊下手,想了想實在是沒什麼頭緒,因此我轉變方向,我從索引值去做變化,剛好我在網路上查到一個也是針對索引值去改變的一段程式碼,我先從二階的下手,我將索引值分為變成0跟255,如此一來就完成了灰階二色的變化。依此類推的方式我依序完成了灰階4色以及灰階8色,到灰階16色的時候因為判斷式要有16組,我便開始動腦想看有沒有辦法簡化,因為如果真的去寫到16組甚至32、64.....組不是個聰明的做法,在寫作業的同時偶爾會聽到同學說用迴圈來寫的談話內容,於是我開始思考用迴圈要怎麼做,加上參考已經交的作業是以變數項來控制每個階段的數值。
寫到一半的時候,老師開始講解"四行程式碼"的作業範例,而我竟然要用到好幾十行甚至百行才有辦法解決,程式功力真的還不太行...。
回到家後我開始動工作業,一開始4色的用老師講解的程式碼成功了,但是後來灰階16色就出了點狀況變成(如圖-下中位置)。後來檢查程式碼後發現少了一個迴圈把調色盤的顏色變成8個色素,經過修改後也陸續完成了其他色階,如圖(依序為原圖>2色>4色>8色>16色>32色>64色>128色>256色)。
在上方提到我發現了錯誤為什麼會在16色的時候出錯而不是8色呢?(作業寫到這邊我才發現原來我4色的也寫錯了,因此我將上述解決的方式用在4色的程式碼裡完成下圖。)因為我想原始的想法保留起來,為什麼那麼長篇幅的程式碼可以縮短為簡單幾行,其實說簡單也沒有那麼容易,對於任何一個簡短的程式碼都要經過許多觀念、概念及多方面的思考才可以變得這麼簡潔有力。對於你想要寫甚麼程式想要做甚麼事情,都要有相當程度的理解,在這次作業上就是不夠了解才會毫無頭緒,當對要做的事情理解之後在寫程式上所花的時間真的快了許多。
沒有留言:
張貼留言