顯示具有 96360210 黃彥羲 標籤的文章。 顯示所有文章
顯示具有 96360210 黃彥羲 標籤的文章。 顯示所有文章

2013年1月13日 星期日

96360210 黃彥羲 HW4

所選圖片
JPEG本身的Marker由"FFxx"表示,其中大部分後面接了2個byte表示總共長度,長度後面的內容各自有其意義,當一個Marker跑完時,可以發現緊鄰的下一個又是一個Marker。


FFD8+FFE0
FFD8 : SOI 圖像開始 ( Start of Image )

FFE0 : APP0 應用程式的保存數據
長度 : 0x0010 = 16 ; 因PSPad一行總共16,因此選取部分恰好一行。

FFDB
 
FFDB : DQT 定義量化表 ( Define Quantization Table )
長度 : 0x0043 =  67 = 2(長度) + 1(Pq+Dq) + 64(量化表內容) ;
可以發現共有兩個"FFDB",而其Dq各為0和1,對應請見"FFC2"。

根據 " FFDB "可以畫出以下 DQT :
DQT本身呈現Z字走法,因此第一張用小畫家示意。

DQT Dq=0;


DQT Dq=0
DQT Dq = 1;
0304050914141414
0404050D14141414
05050B1414141414
090D141414141414
1414141414141414
1414141414141414
1414141414141414
1414141414141414



FFC2
FFC2 : SOF2 Progressive DCT, Huffman coding
內容:
  1. 0011 : 長度17
  2. 08 : 樣本8bit
  3. 0177 : 長度375
  4. 01F4 : 寬度500
  5. 03 : YCbCr
  6. 01 22 00 : Y,HiVi=22,對應DQT Dq=0
  7. 02 11 01 : Cb,HiVi=11,對應DQT Dq=1
  8. 03 11 01 : Cr,HiVi=11,對應DQT Dq=1


FFC4

 FFC4 : DHT ( Define Huffman table )
長度 : 0x001C = 28 , 0x001A = 26 ;
00 : DC、Th = 0 ;
01 : DC、Th = 1 ;

根據 " FFC4 " 可以畫出以下Huffman table :

TcTh : 00 / DC 0 號表 :

序號長度值二進位權值
020002
121013
2341001
3351014
441211000
541311015
641411106
7530111107
86621111108

TcTh : 01 / DC 1 號表 :

序號長度值二進位權值
020001
121012
222103
3361104
441411100
5530111105
66621111106




FFDA

FFDA : SOS ( Start of scan )
內容 :
  1. 000C : 長度12
  2. 03 : YCbCr
  3. 01 00 : Y,DC用0,AC用0
  4. 02 10 : Cb,DC用1,AC用0
  5. 03 10 : Cr,DC用1,AC用0
FFD9 : EOI ( End of Image )

2013年1月11日 星期五

96360210 黃彥羲 HW3

光的三原色
廣告原料三原色
 
 
 
 


畫圓方法:判斷每一點到圓心的距離,若小於半徑,則給予RGB值。
-> if ( ( x - o1 ) * ( x - o1 ) + ( y - o2 ) * ( y - o2 ) <= r * r)

RGB值越接近255越濃,三原色分別代表(255,0,0)、(0,255,0)、(0,0,255),而其中(0,0,0)是黑色,(255,255,255)是白色。

當要畫光的三原色時要先給予RGB值各0,打黑色底。再判斷是否在各顏色圓心距離內,並給值255。
當要畫廣告原料三原色時要先給予RGB值各255,打白色底。再判斷是否在各顏色圓心距離內,並給值0,在這一方面比較像是拿掉顏色,例如拿掉了藍色就會變黃色。



RGBmodel
RGBmodel 調整後

設定一長寬0~255的正方形,則它的長與寬分別就是RGB的對應值(看是什麼模型)

 

例如: R = x , G = y ,B 則由bar決定。

可以發現不管哪種模型,越接近左下角、右上角,顏色越濃。當選擇值為0時,左上角都為黑色;當選擇值為255時,右下角都為白色。

2012年11月14日 星期三

96360210 黃彥羲 HW2


因為filtering必須要用到前一行的ScanLine,所以用另一個image來儲存,來避免計算時用到已修改的數值。但是當想對同一張圖多次Smooth時,必須Smooth->儲存->讀取->Smooth....重複動作,相當得很麻煩。若把計算結果暫存到一個陣列,等全圖都計算完畢後,一次更改記憶體內容,就可以解決這個問題,但是相對的處理速度會比較慢。以下為課本上的1/9算法。


原圖


Smooth 1次

Smooth 第2~10次
 事實上第2~10次的結果肉眼看不出差別,但卻比第一次更平滑。

在知道銳化公式後,Laplacian的算法根本就是把Smooth的各項更改係數而已(這裡計算8方向)。再把bPtrImage2[j*3+k] = bPtrImage[j*3+k]+c*iLaplacian。

只是當計算的該點與其周圍八點落差嚴重時,Laplacian會變的很大,很容易超過0~255,會變得像下圖所示。根據常數c=1或-1,圖會有些不同。


銳化 c=1


銳化 c=-1
因此需要將超出範圍的設為極值,圖片才會變得正常。

c=1

c=-1


中值濾波器比前兩個稍微麻煩點。因為只要中值,所以就不排序,直接找5次最大值。
前面連續4次,每次找到最大值就改為0,即下一次該值不會再是最大值,而第5次的最大值就是中值。



一次胡椒

一次胡椒過濾

二次胡椒

二次胡椒過濾
可以看的出來,因為是中值過濾的關係,當胡椒越密集時,越難清除乾淨。


2012年10月19日 星期五

96360210 黃彥羲


原圖

均化







一開始的時候真的有被困擾,必須要把OpenPictureDialog1->Execute外面加上if變成if(OpenPictureDialog1->Execute()),否則當你沒選擇檔案的時候,就會跳出該警告。(Save也是)




 

 
 


 
大致寫法是照著範例去更改,比較麻煩是把三張合而為一。
打勾以後取消該色直方圖,一開始是透過把該顏色畫筆改為白色重畫一遍,後來想到乾脆直接用FillRect白色填滿整張圖比較快。
三張圖合體後多了一些小麻煩,例如:MouseMove的事件是共用的,如果透過鼠標的X座標去抓資訊,例如顏色用X%3,會把沒有打勾的顏色資訊也顯示出來,還要多判斷該顏色是不是有勾選。後來看到老師範例裡的做法,如果多色同時勾選,只會顯示一個顏色的資訊(優先R>G>B),其他顏色會被忽略,算是設計上的缺陷吧!



 

Cumulative方面則是多宣告一個跟iHistogram[3][256]很像的CPCount[3][256],256是因為ColorLevel是從0~255,CPCount用來累計在該ColorLevel以前的所有Count。再把範例中iHR = int(( float(iHistogram[k][i]) * fHistogramScalar ) + 0.5)裡改成CPCount[k][i] * fHistogramScalar
,結果就出來了。

做到這邊可以發現,畫直方圖這段程式不斷的被重複,因此我一開始想到了method(function),可是BCB裡的function是不能使用到form裡面物件的。後來想到可以把重複的程式放到一個物件裡,然後給他一個事件(假設物件ABC,事件Click),之後就可以利用ABCClick(Sender);來呼叫這個事件。



均化


有了cumulative的資訊後,均化後的對應值=Cumulative/PixelCount*255,最後把每個點改為對應值即可。均化是照著面積比例去平均分配,因此Level較集中時,效果會比較明顯。我用的圖最大值不超過200,當均化以後,圖就會變亮。



2012年10月4日 星期四

96360210 黃彥羲


這本書提到了,一般人在拍照時比較不會去注意到的構圖、測光與曝光。

自拍因為手機的流行而跟著普偏,不過大部分的人都只考慮到了角度。某些角度可以讓"事業"清楚,或是有些人永遠只露左(右)臉。而像我這種就是追求亂槍打鳥,拍個幾十張總會中一張吧?

三分法


透過三分法將畫面分成九宮格,可以用來呈現人物與背景不同的效果。


全景-顯示全身
中景-顯示腰部以上








看到這裡可以發現一般人很愛使用中景來拍照!一方面是自拍很難拍到腿,另一方面可以避免顯示不滿意的腿。另外還有很多不同種的呈現方式。


曝光度的不同
另外就是比較不被注意的曝光了。根據曝光度的不同,同一張照片能夠有不同的呈現。曝光一般人的技術比較難在拍照時去控制,現在都是照完以後再調整會比較方便。

一般內建軟體就可以更改曝光



2011年1月13日 星期四

HW02

原圖
均化

原RGB



均化RGB
這個作業卡關了很久,均化後顏色會變得過於灰暗,經過別人的協助才好不容易更改了過來,顏色變的正常一點了。


2011年1月10日 星期一

HW04

原圖

平滑

要把每一點的值先給紀錄在陣列,再透過九宮格的概念,把中間的點與鄰近的其他八點相加後平均,這樣一來原本圖上顏色相差較多的邊界就會被模糊掉。
銳化

與平滑不同的是,把該點乘上九倍後再減去其他八點,圖上的邊界將會被強調出來。

胡椒鹽

去胡椒鹽
上課老師有提到過,利用中位數的方式,找出九宮格裡的中間值。不過寫的途中發現,如果程式碼沒弄好的話,圖片反而會變的模糊。





HW03

左眼照片
右眼照片

3D照片
這次最大的問題是拍照的技術,左眼跟右眼照片如果距離差太多的話,合成出來的照片效果會很差。試過兩種方法來調整照片的差距,一種是多拍幾張照片,找出最合適的兩張;另一種是直接透過修圖的方式,把畫面整個平移。這次使用的是紅/青的顏色,不知道跟紅/藍是否會有差。