顯示具有 97360234 吳思賢 標籤的文章。 顯示所有文章
顯示具有 97360234 吳思賢 標籤的文章。 顯示所有文章

2011年1月7日 星期五

HW3

這份作業主要是要達到影像的平滑(模糊)化、銳利化、以及雜訊的消除,

下面為原圖:



這三種的作法大略相同,首先建立三個BYTE化的二維陣列,
運用指標的方式將他們分別指向欲取得值前三行之標頭,接著運用兩個FOR迴圈舉得以這三行
為起點的3*3像素點格子,平滑化是將取得的這9個像素點合併給與
另一個BYTE化的2維陣列存放,並將其除上9使其影像周為顏色混合以達到影像模糊的效果,
而在我實際設計過後發現,假使FOR迴圈已J遞增值僅輸出三個二維陣列分別為 J-1、J 、J+1的情況下 ,由於前面的表示方法為灰階形式,使得程式判定輸出的為灰階影像,
會產生出的模糊化會形成類似灰階影像的模糊影像,
加上有些值或許判斷不到,因此會形成影像有一部分沒有值的狀況,
在詢問了同學之後,得知了必須將遞增值乘上3,
這麼做使得程式能夠取得除了黑白以外的三原色的像素值,
即J*3-1,J*3,J*3+1,在使用上述的平滑化處理方法即可取得平滑化的影像,
或許這對別人而言是在合理不過的原理,
但對我而言能從程式裡發現一些之前都沒留意到的事,是一種很珍貴的回憶
下圖即為平滑化的結果:




至於尖銳化則是運用平滑化的處理方式,一樣是將鄰近的9個像素值合併,不同的是此9個像素點的中心顏色值必須放大,以中心為準的上下左右顏色值則需要縮小,其餘的4個值則無需顧慮,
如此便能強烈凸顯該中心值在影像上呈現的效果,使得影像展現出強烈的硬式線條感,值得注意的是由於合成過後的像素值並無像上述平滑化一般合併完後均分的現象,因此有可能因為得出的
像素值超過255而造成顏色亂跑的現象,因此必須運用IF來做調整,假使該值超過255則以255計,當小於0則以0計,其餘的則照正常輸出,如此便可以避免色素值溢位的狀況

下面即為銳利化的效果:



而雜訊的消除做法上雷同,同樣需利用到鄰近的9個像素點,
有趣的是利用到了排序將這九個像素值從大到小去排列,
再取得其中的位中數直接當作該新像素點的數值,

下面為原圖:

下面即為消除雜訊後的影像:
很清楚的發現消除雜訊之後的影像顯得較為清楚,
那是由於在取中位數當心像素值的情況下的情況下,大部分像素值較極端的像素點,
便會被較柔和的中位數取代,這樣即能達到去除雜訊的效果,
當然假設雜訊過於密集的話還是無法完全的消除所有雜訊,
不過此種作法依然能作到處理大部分雜訊的效果,
這三個對影像進行的處理做起來都不會太難,大抵是在合成像素值時多加留意即可完成

HW2

這次的作業是要將一張圖片的所有像素點作數據化的統計,再分別對RGB三原色的出現頻率加以統整做成統計圖,首先須利用個2維陣列將RGB三個顏色的數值,從0~255分別做計數的動作,
因所有掃過的像素點都均為此三原色不同數值的搭配,將這些像素點的三原色直切割出來分別存放,再利用另一個2維陣列用來計數三原色的像素值0~255分別的出現次數,如此再分別除上總像素點值即可求出三原色的出現頻率, 一開始我本來僅是想單純的將所有掃到的點像素值存起來,再用個陣列計數最後在除上總像素點值,但這樣無法將像素點中的RGB三色做分割,雖然仍有方法可以做分割,但這樣的做法會使得陣列過大在執行的時候會過慢,畢竟一張圖的總像素點數量是非常龐大的,所以這時候老師提供的方法就顯得方便許多,程式碼也更加的簡潔,
再來便是均化了,在均化上倒是沒甚麼特別的大問題,大抵上一個公式即可搞定,值得注意的是調整顏色的地方是在寫長條圖的時候便以儲存下來,在均化的程式碼中就僅僅是將其值顯現出來罷了,一開始在做的時候不管怎麼修改均化後結果總是黑色,後來問同學才發現原來我將像素點均化的程式根本就沒有寫上去,所以理所當然甚麼東西都不會出現,在修改過後果然也跑出我想要的結果,不過在均化上的表現卻有些不盡理想,怎麼說呢?當我在嘗試使用顏色較為鮮豔的影像時,我發現均化後的顏色非常容易跑掉,感覺出來的圖就變得有些詭異,或許是使用的像素解析度過高的關係,在他判斷每個像素值的大小時去特意凸顯顏色較深的數值,但是由於影像中不同大小的色素點過於集中在一個範圍,因此他在各自顯像的時候影像就會變得有些奇怪,不過我認為依然有得到均化的效果,畢竟均化即是凸顯顏色較深的數值,只能說為了達到均化的目標所以影像上就不能太奢求甚麼了,因此在挑照片上盡量選擇單一色系較多的圖片顯像出來會比較好看。
影像的直方圖以及均化後的結果



2011年1月3日 星期一

2010 3D心得

很久以前...,我參加了3D影像展〈很抱歉現在才上傳,請原諒我...〉,



如各位所見,這是3D展雄偉的門口,看起來一副「這裡是3D展入口」的感覺,
很有氣勢,
在還沒參觀前我們被強迫觀看一部非常酷的3D影片以及3個正到炸掉的解說員,



看看我們笑得多麼燦爛啊!左邊那位有鬍子充滿霸氣的就是我了,

看完3D影片後我們進入了展覽會場,雖然是3D展,不過最先吸引我的卻是這個,



有機會真想要買一台這麼酷的好車,雖然不知道能不能在台灣路上開...,
不好意思離題了,

看完酷車之後理所當然就要逛起3D展來了,



很有真實感的賽車用3D的效果顯示玩起來有種說不出的暢快感,只是那邊的人跟我們說不能拍
Show girl害我有點難過...,




既然實感賽車玩的那麼爛,那玩牆壁上總不會很爛了吧?瞧我玩的多開心啊!



現在全球很夯的綠化環保3D展也沒有少,整個就很愛地球啊!


最後還是忍不住再照了這張車一次,你看看我有多渴望這台車啊!
看完這場3D展後真的讓我深深體會到現今科技發展之迅速,
以往只有在電影或小說中出現的事物,都逐漸的成為現實,
這次展覽中也頗有強調未來的影像趨勢走向3D化的味道,
除了提供觀賞者更多的視覺享受之外,對於研發者而言更是個能大展拳腳的好時機,
想想總覺得非常令人期待呢!

2010年11月5日 星期五

HomeWork1

首先先載入一張圖,並將其轉換成灰階影像,利用FOR迴圈將其三原色RGB顏色(亮度)數值調成一致,再藉由轉換成灰階的公式,產生有明顯亮度變化的灰階影像,如下圖所示:

接著利用上述用來將顏色(亮度)值轉化成一致的FOR迴圈,藉由切割範圍的方式來產生二位元影像,亦即將256中顏色(亮度)值分割成0~127、128~255兩等份,並分別將其轉換成0與255兩個數值,即當搜尋影像顏色(亮度)數值是介於0~127,則將其值改成0,介於127~255之間,則將值改成255,因此當輸出時即會產生黑白壁壘分名的二位元影像,如下圖所示:

四位元、八位元、十六位元、三十二位元、六十四位元、一百二十八位元,均依照上述的方法執行,即將256種顏色(亮度)值切割成四、八、十六、三十二、六十四、一百二十八種範圍,再分別將範圍中的所有顏色(亮度)數值,給定至單一深淺不一的顏色,如此即可產生許多顏色(亮度)漸層不一的數位影像,如下圖所示:
四位元影像:

八位元影像:
十六位元影像:

三十二位元影像:

六十四位元影像:

一百二十八位元影像:

在進行程式撰寫時,最麻煩的莫過於判斷顏色(亮度)數值分布的範圍,本想單純的利用多個IF去進行多次的判斷藉以達到效果,但是使用下來卻極不方便,像一百二十八位元的影像就得有一百二十八種判斷,寫起來相當費時費力,因此後來在FOR迴圈裡去進行更動的方法,便顯得非常簡潔有力,將FOR迴圈中用來累加的正整數I分別做不同大小的累加:I+=127、I+=63、I+=31、I+=15、I+=7、I+=3、I++,透過這些方式便能較方便的制定範圍,在利用一個FOR迴圈內的累加數值J,將RGB三數值合併的程式碼包覆,並從原本的灰階將I值給1改由將I+J值給1,再藉由產生灰階的公式去進行輸出,如此一來便能產生我們所需要的範圍,並能將這些範圍內的數值轉變成各自單一的數值,產生我們所需要的各式影像,藉由這次的作業讓我能夠掌握到影像數位化的基本手法,藉由一些判斷去影響數值的輸出,使得影像能有許多種不同的變化,令我非常印象深刻