顯示具有 95360981 林美君 標籤的文章。 顯示所有文章
顯示具有 95360981 林美君 標籤的文章。 顯示所有文章

2010年1月17日 星期日

2009hw8

期末心得:

一開始選這門課時,很擔心
因為上學期選了視訊程式
覺得BCB很難寫。

經過一個學期下來
寫了這七個作業
覺得對BCB更了解了
也很感謝同學的幫忙。

在影像處理讓我覺得最神奇的地方
是老師上課是邊用Photoshop輔助
以前想要修改照片時
都是隨便按一按
上了這堂課後
才知道每個功能是做什麼用的。
讓我回家以後忍不住下載photoshop來玩。

也了解了很多關於影像處理的概念
包括對比、柔化、銳利..這些平常常用到的功能。

這是我覺得這門課最有趣的地方。


這學期有幾堂課沒去上課
後果就是要自己看書看很久
還要一直問同學
因此覺得很不好意思
期許自已以後可以好好的準時上課。


作業繳交的方式
覺得很好
尤其是在寫心得時
考驗自己對這個作業了不了解
為了要寫出重點
也查了很多資料
所以在寫心得的時候
會幫助自已更了解概念。

2009hw7

這次的作業是Sobel運算子實作

原理:
梯度銳化最主要的目的就是要去強調邊緣值
影像色彩的差距變大。

用第六個作業去改
很快就完成了
主要是兩個遮罩的運算
GX:

GY:

會得到兩個值,帶入畢氏定理。

結果:
(執行結果)
(灰階)
(彩)

在寫程式時
不知道怎麼把自已寫的funtion加入
後來問過別人後
知道在程式碼的地方
按右鍵->open source->把
int_fastcall TForm1::GX(int i, intj):
貼到private就可以了

2009hw6

這次的作業是空間濾波器的實作

原理:
將遮罩中所有像素值加總後求其平均,然後寫入遮罩中間的對應
像素中。所以一次只處理一個像素的值。
先分成3x3的矩陣,然後用輸入的方式來決定中間的像素
會受到旁邊像素值影響的比例,最後輸出。
所以如果周圍的比例很低的話,會和原圖很像。
結果畫面:
執行的介面(彩)
(灰)
用判斷圖片為8bit或24bit來分別處理灰階和彩圖。
if(Image2->Picture->Bitmap->pixelformat==pf8bit)
if(Image2->Picture->Bitmap->pixelformat==fp24bit)
結果:
(原圖)
(濾波後)


出來的圖片像被柔化後的效果。
在對顏色取值時,一開始都怪怪的
後來翻書和google以後
才知道在取顏色時是用+3的方式
例如取藍色,先取i後再用i+3取下一個像素的值
rimageb[i]=oimageb[i-3]*f1+oimageb[i]*f2+oimage[i+3]*f3+.......;

2010年1月8日 星期五

2009hw5

這次的作業是關於位元平面程式的實作
將位元深度為8(2^8數值)的影像
分別取出位元深度為1(黑色與白色)來看

首先要先用photoshop把圖片改成灰階的圖片
程式方面是用ScanLine[i]分別讀出圖片的每個像素
第1個bit和00000001做and運算
第2個bit和00000010做and運算
......
以此類推
如果值為1的話就設為255(黑色)
其他就設為0(白色)
位元值的方面就照老師上課說的,做位移即可(<<)。
執行結果:
在寫程式的過程中
有出現全黑的畫面
後來查了一下,發現是在比對的時候
是記憶體位置寫錯
本來是用00000001後來改成0x01就好了

2010年1月7日 星期四

2009hw4

這次的作業是做gammar值的轉換
利用不同的gammar值調整對比明暗度
找出圖片色彩的最大值和最小值,經由調整過後,將值落在0~255之間。
藉由調整影像色彩來改變圖的對比。

公式為: 255/255^g=s/r^g
r為原本的色彩
s為調整後的色彩
g為gammar值

當gammar值等於1時,是原本的圖
當gammar值小於1時,亮度就會變亮
當gammar值大於1時,亮度就會變暗

程式方面流程是先轉換值後,原本的圖再根據值來輸出後來的圖片。

結果:
gammar=1,原本的圖
gammar=0.5,顏色變淡變亮
gammar=2,顏色變深變暗
寫作業時
本來都會直接複製老師的程式
想要看看結果是什麼
可是因為都不是完全的程式
所以都會有地方要改
後來覺得要自已了解程式的意思才能寫出來
都要一直請教同學
很不好意思但也很謝謝他們。

---------------------------------------
在寫程式時
有一個錯誤的訊息是
E2034 Cannot convert'AnsiString' to 'float'
後來加上StrToFloat這個函數就好了
之後寫程式時也常遇到這個訊息= =

---------------------------------------
記得在寫公式的時候
寫了GA[i]=(i^g)*255/255^g;
程式是之前寫的
錯誤訊息沒有留住
大概是說illegal之類的
後來問同學才知道程式不是用"^"的方式
要用pow函式
所以要寫成GA[i]=(pow(i,g)*255/pow(255,g));
這樣才會過

2009年12月17日 星期四

2009hw3

一開始要做時
不知道要用什麼元件
查了一下網路
才知道可以用image畫出直方圖
image1->Canvas->Pen->Color

再來是寫抓圖片的色彩值
用int iHistogram[3][256]來存

最後再畫出來


一開始在設定radiogroup時
一直找不到在裡面加入RBG選項的方法
後來才知道是在items的地方加入
很簡單的方法可是也可以搞很久。


結果:




MoveTo和LineTo

imHistogram->Canvas->Move(i*2+1,300);
是設定起始位置
i*2+1是每隔以個單位做為起點
t=int((float(iHis[rgHisCha->ItemIndex][i]*fHisSc)+0.5);
t是色彩值的個數*某個比例取四捨五入
因為怕他過多
所以*比例讓他縮小


寫這個程式時
一開始在課堂上聽時
覺得計算顏色聽起來一點都不難
應該可以很快寫出來
就拖了很久
後來要開始寫時
發現在畫圖的地方很不會寫
還要一直參考老師的程式
在寫程式時很多的小細節就算沒完成
結果還是不能出來的
所以要知道很多函式才行

2009hw2

旋轉前:

旋轉後:


在寫程式時,一開始遇到的問題是按了按鈕後都沒反應
後來研究了一下後
發現是沒把寬和高放進程式裡
加了
iImageHeight=Image1->Picture->Height;
iImageWidth=Image1->Picture->Width;
就可以動了。

再來是中心點的問題
一開始程式沒有寫中心點
就會跑來跑去
參考了一下老師的程式
就順利的寫出來了。

最後請教了一下同學
了解scrollbox元件怎麼使用
才可以動態的變大。

感想:
有成功的寫出程式,成就感很好,也比較有動力繼續寫,心情很好:)。

2009年10月1日 星期四

2009hw1

本課程第一個作業是: 開啟並讀取一張影像到二維陣列中。

流程是:
先讀取一張圖片,然後宣告三個二維陣列來儲存這些色彩資料。

遇到的問題:
一開始最先遇到的問題,是不太懂bcb的語言,像是把值用label顯示出來。
後來查了一些資料後,就比較會寫。

結果:
(開啟時)

(開啟後)


OpenPictureDialog1->Execute();
是選定希望開啟的影像
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
將影像顯示到Image1這個影像物件中

IMatrixR[i][j]=GetRValue(Image1->Canvas->Pixels[j][i]);
將每個像素的值讀出
存入二維陣列中


這次作業因為在課堂上老師有一步一步的示範怎麼做
所以在課堂上跟著做就做出來了
也介紹了一下一些按鈕
才知道怎麼用


後來寫心得時看到很多人的心得上面有秀出RBG值
本來想說第一個作業是只有開啟影像和讀取影像到陣列
以為是自已搞錯了
就上課問了老師
意外學會了用OnMouseMove的用法
是在Event的地方
點二下就進去了
下面是滑鼠移到哪裡就秀出RBG值: