顯示具有 95360352 施冠宇 標籤的文章。 顯示所有文章
顯示具有 95360352 施冠宇 標籤的文章。 顯示所有文章

2010年1月19日 星期二

HW8 - 課程期末心得回顧

在學這門課之前,我完全沒有碰過BCB語言,一開始很辛苦,連POJECT都不會開,然後方塊圖在哪也要找半天,在過了一兩個作業以後,漸漸的熟悉了BCB的編寫方式,他比C++簡單許多,但是在第2個作業開始,我遇到了一個嚴重的問題,數學公式轉換成程式碼,由於數學不是很好,所以在公式上面花了不少工夫,後來就漸漸的能上手了,BCB最方便的是你只要將程式的架構先建好,載來每個BUTTEN裡面編寫程式即可,不用把程式寫的一長串自己看還會搞混。

不過也學到了一個很重要的東西,就是變數的宣告,我一直以來很習慣直接宣告在最上面,但是這對於電腦而言是一種記憶體的浪費,相對於需要用變數的時候在宣告,會省很多記憶體空間。

老師從以前到現在就一直倡導使用部落格將自己的成果記錄下來,這個真的很不錯,大家都把學習過程記錄下來,將來需要用到時一翻就有,而且同學間遇到作業上的問難,還可以看看部落格上別人是如何講解,這些應該是我上所有課以來記錄最完整的。

HW7 - 邊緣偵測

這次作業是做將圖片的邊緣顯示出來,將圖片剃度變化的地方突顯出來,所以使用Sobel來運算剃度變化的近似值。Gx是利用圖像與X軸的Sobel運算,Gy則是圖像值與Y軸的Sobel運算。

Gx

Gy
彩色圖

彩色邊緣偵測

灰階圖
徽接邊緣偵測

2010年1月7日 星期四

HW6 - 空間濾波器。

這次作業是利用Spatial filter的技術,將圖片的每個像素點,與周圍的像素點做加權運算後平均,來獲得圖像可以均勻化的效果,在程式碼的方面,要將一個像素點的RBG都截取出來,與周圍的8個像素點的RBG分別做加權運算,然後平均值在給中間的那個點。

在程式碼方面,使用兩個FOR迴圈把整個圖片的像素點全部掃過一遍,然後使用[i-1][i][i+1]代表九宮格的高以及[j-1][j][j+1]來代表九宮格的寬,但是每個像素有RBG3個要計算,所以要將J乘以3來別計算RBG的數值,然後再將九宮格的RBG數值分別將其像素點的加權做相乘後在相加,然後再除以總加權數,再放入[i][j]的點。

加權1
加權1
加權提高
灰階

2010年1月6日 星期三

HW5 - 位元切平面

這個程式研究很久,一直搞不懂他該如何做運算,後來知道一個圖片中8個BIT,會有8種不同的切面,而作業是要將像素質跟切面值相同的就將他設為黑色,不同的就設為白色,所以在程式碼中,將像素質用ScanLine讀出來,跟切面值做AND運算,如果等於切面值,就將他的值設為255,如果不同將其值設為0。如此以來,像素值就會變成有此切面數值的,會變成黑色,沒有的會變成白色,然後彩色的圖讀進來後,卻變成黑白圖,所以將變術改成RGB三種分別去做運算,如此以來彩色的圖就可以顯示出彩色的像素。

彩色第六位元平面
第八位元平面

第七位元平面

第六位元平面

第五位元平面

第四位元平面
第三位元平面

第二位元平面

第一位元平面

2010年1月5日 星期二

HW4 Gamma correction

這次作業是將圖片載入後,利用Gamma轉換來做圖片的明暗度調整,其中Gamma的公式為s=c*r^y,,但是在做運算的時候,必須將公式變換,改成c=s/r^y,也就是將變數範圍255做成c=255/pow(255,gamma)的公式。

y=1.0


y=1.8

y=0.6
寫的過程中發現,當y值為0時,程式會Error,所以我使用 if(Edit2->Text!=0)才執行
來使他不會Error。

2009年12月17日 星期四

HW3


這個程式是要將圖片的色系比例程度顯示出來,由於有老師分享的範例,所以一些介面都能很快的弄出來,程式碼大致上是將整個畫面掃過一遍,然後將所查詢的色系擷取出來,然後顯是在直方圖上面,不過開檔錯誤以及某些色系無法讀取,是此程式尚要改進的地方。

HW-02,旋轉圖片(任意角度)。


此程式要將先前第一個程式所顯示的圖片,做旋轉的動作,將圖片要旋轉的角度除以360,在利用SIN與COS來做轉動圖片的技巧,然後將整張圖片重新掃過一次,但在旋轉的時候,發現圖片會被框架減掉,後來將將Autosize調整為true後,圖片的框架就可以移動,使得整張圖片都可以看的到而不會被減掉。

HW-01, 開啟一張圖片。


一開始接觸BCB,一打開看到一個框框,整個傻掉,完全不知如何下手,後來經由同學教導,知道他可以利用點選視窗並使用圖型戒面來設定而產生程式碼,這比一般VC++的視窗程式設計簡單許多。
本次作業使用到開啟並讀取一張圖片,並使用Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName)來開啟圖片,然後再將圖片顯示在設定好的框架上。