顯示具有 96360244 葉亭女勻 標籤的文章。 顯示所有文章
顯示具有 96360244 葉亭女勻 標籤的文章。 顯示所有文章

2010年1月20日 星期三

HW06_new

濾波器(spatial filtering) :濾波器可以柔化圖片也可以使圖片更加的清晰
濾波器的原理:
先設定一個大小遮罩後,經過運算的到新的像素結果,將像素分成固定階乘的方行矩陣(square matrix),然後再以輸入的方式來決定主要顯示像素會受到旁邊像素影響的比例多少,然後再將處理完的影像輸出,這次我以3*3(一般3*3濾波器遮罩)來做,這9個座標內的色彩值相加除以9,再把值傳回去,因此最中心的像素會受到周圍8宮格像素的影響,數值會被周圍色彩值影響變化成較為平滑得樣子.再影像中任一位置(x,y)處的平均值是以(x,y)為中心之3*3鄰域中9個強度的和在除以9,要小心,9個權重的值總和不等於0,否則"任何數/0"是會有錯誤.
銳利化->9個點個別*權重相加之後的結果,如果=正,數值變大顏色會變深,如果=負,數值變小顏色會變淺





今天我把濾波器課本內容及作業重新理解了一次,可能因為把前面作業全部都重新理解過的關係,所以理解起來很快就懂了!雖然不是很完美,可是我有進步了一些,希望老師看的到我的努力,可以加點分數,謝謝老師...

HW05_new

位元平面切片


位元平面切片原理介紹:
顏色是由8個位元儲存.所以我們可將其影像分成8個區塊重疊,這次的作業就是要分別顯現出這8張圖像,例如:假使我這一個像素點的顏色是0101 0010 (binary) ,我們可以分成8個像素點的組合而成.








  0000 0000   (第1張的像素點值)
   0000 0010   (第2張的像素點值)
   0000 0000   (第3張的像素點值)
   0000 0000       "
   0001 0000       "
   0000 0000       "
   0100 0000   








   0000 0000   (第8張的像素點值)
再*255來分辨是黑色還是白色如果值為"1"那就設為黑色如果不是"1"的話就設為白色








第1位元切面圖
















第2位元切面圖
















第3位元切面圖
















第4位元切面圖
















第5位元切面圖
















第6位元切面圖
















第7位元切面圖
















第8位元切面圖

















心得:
 一張圖片讀取之後,利用(and)運算.把2進制轉換成16進制0000 0001(2)=0x01 .就可以完成作業了,這次作業 我也把程式碼重新解讀了一次,讓自己更了解當初不太懂的地方~ 重新做了一次,希望老師可以加點分~

HW04_new

利用"S=C*R^Gamma"所計算出的值來套用


這是這次Gamma value主要的程式碼:


float r = StrToFloat(Edit1->Text); c = 255/(pow(255,r));
for(i=0;iCanvas->Pixels[i][j]=(TColor)RGB(s_R,s_G,s_B); } }



當Gamma value=2
(稍微看的出後來的比原來的還要來的暗一點)


當Gamma value=4
(已經開始明顯的看出後來的圖比較暗了)


當Gamma value=6

(相對於當Gamma value=4 已經變的更暗了一些..)


當Gamma value=10
(當Gamma value 已經輸入到10時,已經比原來的明亮度降低了~)
結論:


Gamma value越大(>1)時,明亮度降低~
當Gamma value越小(<1)時,明亮度就相對提高
這次作業,我也重新修改並且讀懂了一次,利用轉換的時候套上公式就可以慢慢的做成了!!

HW03_new






1.GrayHistogram


以ARect為範圍統計直方圖的程式碼:

Byte *ptr; long GrayCount[256] = {0}, MaxGrayCount = 0; for(int row = 0; row < ptr =" (Byte">Picture->Bitmap->ScanLine[row];



用8bit灰階圖為方法的程式碼:

for(int col = 0; col <> MaxGrayCount) MaxGrayCount = GrayCount[ptr[col]]; } }


初始化直方圖的畫面得程式碼:

Image5->Canvas->Brush->Color = clWhite; Image5->Canvas->FillRect(TRect(0, 0, Image1->Width, Image1->Height));


畫出直方圖畫面的程式碼,利用for迴圈:

for(int index = 0; index <>Canvas->MoveTo(index, Image2->Height); Image5->Canvas->LineTo(index, Image2->Height * (1.0 - (double)GrayCount[index] / (double)MaxGrayCount)); }


2 . RGBHistogram


以下都跟畫出GrayHistogram的方法相同~


用8bit灰階圖為方法的程式碼:
for(int col = 0; col <> MaxGrayCount) MaxGrayCount = GrayCount[ptr[col]]; } }

初始化直方圖的畫面得程式碼:
Image5->Canvas->Brush->Color = clWhite; Image5->Canvas->FillRect(TRect(0, 0, Image1->Width, Image1->Height));

畫出直方圖畫面的程式碼,利用for迴圈:
for(int index = 0; index <>Canvas->MoveTo(index, Image2->Height); Image5->Canvas->LineTo(index, Image2->Height * (1.0 - (double)GrayCount[index] / (double)MaxGrayCount)); }


RGB呈現:利用FOR迴圈將RGB 顯現..


for (int i=0;iHeight;i++) { ptr=(Byte *)bmp->ScanLine[i]; index=0; for (int j=0;jWidth;j++) { b=ptr[index]; g=ptr[index+1]; r=ptr[index+2]; RGBhistogram[0][b]++; RGBhistogram[1][g]++; RGBhistogram[2][r]++; index+=3; if(RGBhistogram[0][b] > MaxBCount) MaxBCount = RGBhistogram[0][b]; if(RGBhistogram[1][g] > MaxGCount) MaxGCount = RGBhistogram[1][g]; if(RGBhistogram[2][r] > MaxRCount) MaxRCount = RGBhistogram[2][r]; } }



心得:


這是作業三~ 我也重新看過程式碼 並且加上註解,就像是我們知道value的範圍是0~255,可以直接宣告一個256的陣列來統計,最後在畫線條的時,再去取得它的出現次數除以它的百分比.這次作業,做起來顯的卡卡的,可能是我還不熟析的關係,我很認真的再去研究了一次程式碼,加上了注解,希望老師可以給我加點分數...謝謝

HW01_new






程式一開始要先有開圖片檔的程式碼:
OpenPictureDialog1->Execute();
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);






讀取得到圖片長寬的程式碼:


iImageHeight=Image1->Picture->Height;


iImageWidth=Image1->Picture->Width;




宣告RGB三元素的三個陣列的程式碼:


try
  {
   ucMR = new unsigned char *[iImageHeight];
   for (j=0;jucMR[j] = new unsigned char [iImageWidth];
  }
 catch (std::bad_alloc)
  {
    ShowMessage("Could not allocate memory...Bye");
    exit(-1);
  }


}




利用for 迴圈儲存RGB的值的程式碼:


for(i=0;iHeight;i++)
{
for(j=0;jWidth;j++)
{
ucMatrixR[i][j]=GetRValue(Image1->Canvas->Pixels[j][i]);
ucMatrixG[i][j]=GetGValue(Image1->Canvas->Pixels[j][i]);
ucMatrixB[i][j]=GetBValue(Image1->Canvas->Pixels[j][i]);
}
}


心得:
這次我把作業都重新看過讀懂了一次,利用BCB把所要的物件放上後,在用相關的程式碼對映上去,雖然說起來很簡單,其實卻不然,利用上課講解過的程式碼,以及同學們的教導,慢慢拼湊出來的,希望成果還可以! 老師可以給我加點分數

2010年1月16日 星期六

HW08

作業八~ 期末心得及檢討~

這學期時間真的過的好快~

一下子就已經半年過去了!!

這學期這門"影像處理"課,

真的讓我學到很多東西!!

以前我只學過用BCB打資料結構及演算法的程式,

這次老師教導我們來做有關影像方面得東西,

真的學習到很多!!

這學期像是作業七~梯度作業~

可能因為有之前的歷練吧!!

顯得比較得心應手許多~

把作業六的東西 大致上改一下~

就完成了作業七~

雖然其中一直有錯,

但是一步一步檢查,

慢慢的就打出來了。

到了學期末,做起作業來就比較輕鬆許多~

呵呵~ 謝謝老師這學期得教導~

這學期,因為天冷的關西,我常常不小心睡過頭了!!

導致很多細節都沒聽清楚,也沒注意到~

可是經由老師的投影片以及同學的教導~

慢慢的作業也都完成了!!

希望老師原諒我的小小賴床~

呵呵  ^^

老師這學期辛苦囉~~~~

HW07


這是第七次作業!!! 梯度計算 。

利用水平的遮罩,

-1 -2 -1
0 0 0
1 2 1

和垂直遮罩,

-1 0 1
-2 0 2
-1 0 1
將兩個矩陣套用進去

再用平方相加之後開根號

把值回傳給原點。

這是這次作業的作法~

可是實際操作就會有一些卡卡的問題~

再經由同學們的教導後~

有種 恍然大悟的感覺~

把程式碼打出來了!!

以上的圖~ 是這次我的結果~

感謝老師的教導喔!!!

^^

2010年1月8日 星期五

作業六 濾波器




濾波器原理: 先設定一個大小遮罩後,經過運算的到新的像素結果




這次我以3*3來做,這9個座標內的色彩值相加除以9,再把值傳回去。




數值會被周圍色彩值影響變化成較為平滑得樣子。




以下是我的實做圖唷~

因為這堂課時,我缺席了!!

所以詢問了同學們,經由他們都教導~ 終於做出來啦!!!

感謝他們的同學愛~~~^^


HW5

作業5 位元切平面


一張圖片有8BIT,所以會有8個不同的切面


我們為了要看8個不一樣的切面,


由像素質跟切面值相同的設為黑色,不同的就設為白色,來做分別,


把像素用ScanLine讀出和切面值做and運算.


以下是我做的實做圖:



第8位元平面圖



第7位元平面圖





第六位元平面圖



第5位元平面圖



第4位元平面圖



第3位元切面圖





第2位元切面圖








第1位元切面圖






HW4

這是第四次作業!!!



利用"S=C*R^Gamma"所計算出的值來套用



以下是我做的圖




當Gamma value=2


(稍微看的出後來的比原來的還要來的暗一點)
















當Gamma value=4


(已經開始明顯的看出後來的圖比較暗了)


當Gamma value=10
(當Gamma value 已經輸入到10時,已經比原來的明亮度降低很多很多~)



因此我們可以知道,當Gamma value越大(>0)時,明亮度降低~

當Gamma value越小(<0)時,明亮度就相對提高囉~!!


2009年12月17日 星期四

HW03


第三次作業~!!!! 有點比較得心應手了!!!! 哈哈
不過真的很感謝同學的教導~
一開始 我真不知道該如何下手 打程式~!!!
同學們及老師的一一提點~
讓我一步一步的慢慢打成現在得完成圖~
這次比起第二次作業的旋轉 難上了許多~!!!
但是做完了!! 真得很有成就感~ 哈哈
這次作業又讓我進步囉!!!!! ^^

HW02


這是第二次作業!!! 呵呵~ 拖了有點久~ 其實我真的很早以前就已經做好了!!!


一直忘記上傳~哈哈 ^^ SORRY~


希望老師見諒嘿~


第二次作業 做起來還是有點卡卡的!~@@


真的很感謝同學的互相教導~


讓我早點進入狀況~


把第二次作業完成了!!!


旋轉~~~~~~圖片~~~


真的很好玩~ 之前修電腦動畫時~ 有用BCB 做小遊戲~


這次用BCB 學有關影像方面的!!! 真的好好玩~


2009年10月6日 星期二

HW01


這學期 可以搶到影像處理 真的好幸運呢~^^
一開始的作業 使用的是 之前資料結構跟演算法用過的 BCB
所以 很多物件 和 程式打法 都很熟悉~
不過 學習有關影像處理~ 是第一次呢~
希望可以跟老師學習到 很多不一樣的程式
讓自己可以充時一點~
先謝謝老師囉~
這次作業真的讓我絞盡腦汁呢~
呵呵~~^^
不過寫出來了!!!好有成就感耶!!!!
YA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
之後我會繼續加油喔!!!