2014年1月3日 星期五

HW5

色彩模型程式實作

for(i=0;i<255;i++){
bPtrImNew[3*i]=j;
bPtrImNew[3*i+1]=i;
bPtrImNew[3*i+2]=RedC;
}


設定一個255*255的方格,
整面圖是由紅色的值有所改變,
下面拉霸是0~255的值,
藍色跟綠色值不變,
左上為藍色0到左下255,
左上為綠色0到右上255,
第一章圖是設定紅色為0,
最後一張圖是設定紅色為255。







HW03

空間濾波器程式實作

這次的作業是有關模糊化、均銳化、胡椒鹽化等等。

這是這次的原圖


均化後始得圖片更加的模糊,
模糊化就是將一個像素點跟周圍8個點加起來後平均,
感覺挺明顯得。


銳化後使得圖片更加銳利,
將中間的像素點*9-周圍的像素點,
圖挺銳利的。






HW05


這是最後一個實作作業,
其實滿有趣的,

主要是作出色彩模型圖,
真的滿漂亮的,

上面這張是以調整紅色值為例,
X軸為綠色值 Y軸為藍色值

藉由下面拉桿可以拉動整張圖的紅色值,
即可呈現所有色彩,

這份作業在課堂上就馬上做出來了,
超漂亮的,

而右邊那個小方格則是用滑鼠去點擊該點的顏色,
學會了常用的顏色滴管功能,
突然覺得以前用小畫家選色時覺得很酷的功能其實也沒甚麼~
三兩下就做出來了~~~

P.S這份作業也學會拉桿的功能,
以後作其他程式又更方便了。

HW02

  Histogram 與 PS Levels, Curve 程式實作


這是我選用的圖

 
                                                               長條圖該如何求出呢??
掃描圖片上所有的點,
將RGB三個顏色的色階量都加起來,
每個像素點等同於陣列中連續三個位置RGB三個顏色的數值,
存入的順序不是RGB而是BGR



還未輸入Input、Output、min、max的原始圖
線性的需要4個數值
中間是透過4個數值形成一條線


Input min100 max200,
Output min5 max255,
輸入後的改變
Inputmin所輸出的值,
Output<100,
Inputmax所輸出的值,
Output>200,
圖就會很暗的很暗,
很亮的就會很亮。





                               

HW04


這個作業是我最喜歡的一個作業,
因為自己做出一張3D照片從以前就很想學,
雖然不久前也了解3D影像的觀念,
但始終沒有實作過,
程式部分非常的簡單,
反倒是拍照的技術值得研究,

主要是要拍出兩張照片,
左眼以及右眼,
再利用程式分別取出顏色,
合成為一張影像,
最後利用3D眼睛看出效果,

但照片要是拍不好,
就完全看不出來,
還會頭暈,
雖然這次班上也有舉辦比賽,
但也沒甚麼時間認真去外面拍個照片,
以後有機會再好好去外面拍張厲害的 哈哈


不過在這個程式裡,
比較特別的是學會存圖檔,
之前都是讀圖檔,
這次為了要輸出檔案,
特別上網找了一下要怎麼寫存檔功能,
所以又多學會了一招~~ YA

HW05


R G B 色彩模型

我們設定一個 255 X 255 的方格,
並用一個迴圈讓我們可以改變下方拉霸的值,
因為一個值的改變而牽動另外其他兩個值,
這樣我們就能把所有的顏色都呈現出來。

這個能應用在很多地方就像在選油漆的顏色,我們可以透過下方的 0 ~ 255,
排列出所有可能的顏色。




HW03


第三次作業做的是空間濾波相關功能,
特別選用這張無尾熊,
因為後面功能看起來牠的毛會特別明顯。


主要就兩個功能,
一個是均化,
也可以稱作模糊化,
結果就會像上圖這樣,
概念用下面這張圖來想,
之所以叫做均化,
白話一點就是均勻化,
做法就是將像素九宮格做一個單位,
九塊相加之後,
把中間那塊設為1/9,
然後跑完整張圖後,
就可以達到這樣的效果。


這上面這張圖是銳化的效果,
也就是銳利化,
概念跟均化差不多,
也是從九宮格下手,
但是將九宮格中間那格乘以九,
在減掉周圍八個像素的值,
一樣跑完整張圖後就會有銳化的效果,


這份作業在程式方面也不難,
主要是學習兩大功能的概念,
真的滿特別的,
以前都只會用卻不了解到底是甚麼原因,
現在終於知道了。


HW03

均化

我們將一個像素點設為我們的主要像素點,
並將他周圍的另外八個像素點與自己相加並一起平均,
我們就能達到模糊的效果。

銳化

我們將除了主要像素點權重值設為 9,而周圍的八個像素點的權重值都設為 -1。



HW05

這次作業是三原色RGB(紅綠藍)的數值改變,從(0,0,0)黑色到(255,255,255)白色重複堆疊所用出的色彩模型。左中右個固定RGB各一個顏色,軸用來改變像素。




void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{ int R= TrackBar1->Position; Image13->Width=256; Image13->Height=256; Image13->Picture->Bitmap->Width=256; Image13->Picture->Bitmap->Height=256; Image13->Picture->Bitmap->PixelFormat=pf24bit; for (j=0;j<256;j++) { bPtrImageRow0 = (Byte *)Image13->Picture->Bitmap->ScanLine[j]; for (i=0; i<256; i++) { bPtrImageRow0[3*i+0] = i; bPtrImageRow0[3*i+1] = j; bPtrImageRow0[3*i+2] = R; } } Image13->Refresh(); }這是其中的一個色彩的程式。
這個做出來可以直接把照好的照片轉成bmp檔load進去,就可以把照片的底色像素可以改掉,很方便。
上課聽老師講得很簡單,5行左右就用出來,自己寫的時候有點不知道該如何下手,遇到了很多問題迴圈那裏也有些小錯誤。還好有請教同學,也一一慢慢地跟我講解,才做完這次作業。

00400455謝其曄





這些是這次作業的色彩模型,一開始在做的時候其實有點不知所措,尤其是控制項和設定控制向參數時更讓我慌亂,因為老師說得有點快而且說得很簡單,不過最後還是有順利的做出來,然後在觸發 MouseClick 讓 Panel 變色時出現了一個小插曲,當我完成第一個 Panel 時順利的變色了,而要做第二個時卻沒有照著我所預期的發展,Panel 閃爍了一下可是卻沒有變色,後來才發現要先把 Panel 的色彩先設定過一次才有辦法,當作玩 YUV 的色彩模型時發現跟網路上的有些許的不一樣(差了九十度),後來想想我做的是以電腦的座標來看,而網路上給的卻是以數學的座標來看