2011年11月22日 星期二

相機使用基本功

1. 曝光:無論是白是黑,全區平均測光的結果就是全部是灰的

因此像舞台這樣背景全黑的情況,-1 EV 再微調,雪地全白的情況,+1 EV。

通常以主體曝光正確為準。在舞台上要避免主角臉色慘白過曝。
人物在陰影下,增加亮度讓人有正確的亮度而放棄周圍讓他們過曝。
(此時還要注意陰影跟陽光色溫的不同,忘記調整會讓膚色灰暗平板)

在主體本身明暗變化差異很大的時候,可以考慮打開內建的 HDR 取得平衡。


2. 白平衡:設定的比燈光低溫,偏藍,反之偏橘

除了運用色溫調整,預設的場景色溫通常也能調整色彩偏移,可以加減藍色和綠色。用白紙自訂白平衡雖然顏色很準,但是就少了環境光帶來的或冷冽或溫暖的色溫了。

在複雜光源下需要補光的時候,可以將閃光燈用色溫片調整到比較接近環境光的色溫,這樣可以拍出色彩過渡自然的照片。或是反其道而行,在現場光不夠有特色的時候,用色溫片和閃光燈做為主要照明,讓背景更藍或是更橘來製造相片的情調。

夜拍時自訂白平衡可以製造不同氛圍,自動白平衡在黑夜下通常表現不佳。


3. 對焦:你比他聰明
大光圈人像攝影的時候,因為景深太淺所以中央對焦再移動構圖的方式會導致稍微脫焦,應將對焦點移至慣用構圖上眼睛的位置。

如果是能調整對焦框大小的對比式對焦,應將對焦框範圍調整到適當大小來幫助準焦判斷。以眼睛為例,只有黑眼珠就不如整顆眼睛帶睫毛來的好。線條、格子等也都是對焦時的好幫手。


4. 色彩調控:善用內建模式
一般而言,相機都會內建標準、艷麗、風景、人像等多種色彩模式,應加以好好善用。在微調方面,一般都是調整銳利和對比。在主體佔據畫面絕大多數空間的時候,可以將銳利度拉高較多。如果是拍攝風景的話就不適合拉高太多,因為遠處的東西只會佔據幾個像素,銳利化之後會楚河漢界分的過於清楚。

拍攝紅色、紫色,等主體的時候,要小心顏色過於飽和。尤其拉高對比通常也會拉高些微飽和度,在拍攝這種主體的時候,要適當降低飽和度。


5. 快門:凝結或是流動
拍照的人要有意識的控制光圈和快門。要凝結表情則快門快於1/250 sec以上會較為保險,降低到1/60 sec 配合經驗抓取動作頓點也可以提高微光之下的成功機率。手持拍攝則要記得安全快門的計算,約略可以用焦距的倒數作為心中的那把尺。防手震雖然可以提高成功的機率,但是快門一旦慢於1/10 sec 防手震也不太有用了。

因此,長焦距鏡頭應配合單腳架使用,因為單腳架的機動性遠高於三腳架。


6. 光圈:淺景深 = 長焦距、大光圈、近距離
光圈控制景深,拍攝風景時宜縮小光圈。但過度縮小光圈會因為繞射而降低畫質,風景宜以不同光圈多拍幾張。適當的放大光圈有助於虛化背景,但是像微距攝影會因為距離太近而景深太淺,應縮光圈取得適當景深。以人像而言,我習慣用 55mm/f2.0。


7. ISO:找到能忍受的上限
高 ISO 不僅僅帶來顆粒,也使得色彩變得較不飽和、以及紅綠偽色雜訊出現在照片的暗部。
應找到 JPEG 直出能接受的最高ISO、以及用raw拍攝並運用專業軟體轉檔、降噪後能接受的最高ISO。拍攝時應適時切換JPEG或是RAW。

個人以為,ISO的順位低於光圈和快門。些微的顆粒和色彩雜訊並不會毀了一張照片。但是快門速度不足導致的動作模糊、光圈開到 f1.4造成的景深過淺,卻有可能會是一張讓人後悔的照片。


8. 閃光燈:手動計算 GN 值
對於前景和背景用固定快門速度測光,快門速度以不快於同步速度為準。兩者以亮者的光圈為基準 (結果較小的光圈)。GN=距離 X 光圈,估計距離後算出需要的GN值,再根據此ISO、焦距下閃燈的最大出力,來設定出力調整。

舉例而言,用1/125 sec 測光,背景 f2.0  前景 f5.6,目測前景距離兩公尺。因此需要的 GN = 11,以最大出力GN=58的閃燈,調整出力至 11/58 ~ 1/4。

拍攝時,光圈控制前景亮度、快門控制背景亮度,微調至滿意為止。

2011年11月11日 星期五

Compile nec2c with MinGW64

There are two problems.

1. There's no sys/times.h in MinGW32 or MinGW64. We have to write it ourselves.
2. The default fprintf() does not handle 80-bit long double.

I reference the article HERE to solve the first problem.
Instead of out of cygwin, I pulled out the structure definition from Ubuntu /usr/x86_64-linux-gnu/sys/times.h
-------------------------------------------------------------------------------------
/* put these lines in the header file. */


struct tms
  {
    clock_t tms_utime; /* User CPU time.  */
    clock_t tms_stime; /* System CPU time.  */

    clock_t tms_cutime; /* User CPU time of dead children.  */
    clock_t tms_cstime; /* System CPU time of dead children.  */
  };

clock_t  times( struct tms *buffer );


-------------------------------------------------------------------------------------
/* and put these in one .c file you like. I chose misc.c */

clock_t  times( struct tms *buffer )
{

buffer->tms_utime         = clock();
buffer->tms_stime         = clock();
buffer->tms_cutime = clock();
buffer->tms_cstime = clock();

return clock();
}

-------------------------------------------------------------------------------------


The second one is easier to solve, HERE are two solutions.
I used the easy one. Put the following line  before include anything.

#define  __USE_MINGW_ANSI_STDIO 1

There are some minor problems.
I simply comment line 80, line 131 to 146 and line 1996 to 2023 in main.c.

That's it.

2011年10月14日 星期五

mingw64 + OpenBLAS

GotoBLAS是一個在科學運算界非常出名的BLAS 實作品,可惜沒有繼續更新了。Xianyi基於GotoBLAS繼續最佳化,命名為OpenBLAS。win32我正常的build出來,所有test都pass。

先去mingw下載installer,全部package都裝起來。再去抓OpenBLAS,解壓縮之後執行裡面的
quickbuild.win32 就ok了。測試只要進去裡面的ctest目錄直接make就可以了。

接下來去mingw64下載 Personal Builds裡面sezro的版本,解壓縮之後把整個mingw64目錄搬到C:\mingw\下面。

要用64-compiler的時候需要設定環境變數,要記得讓64-bit compiler在32-bit的前面。
PATH=/C/MINGW/MINGW64/BIN:$PATH

根據這個討論串不要使用 quickbuild.win64  請用下面指令
make CC=gcc FC=gfortran BINARY=64

雖然dll 順利的build出來,但是ctest不行,
cdotc, cdotu fail, zdotc crash.

Keep trying.

2011年7月21日 星期四

淺景深

這兩天拜讀了冼鏡光老師的 寫給新手:景深概論

要有淺景深,簡單的講需要:

近距離、長焦距:這兩者是平方的效果
大光圈、大片幅:這兩者是線性的效果

所以「相同視角」的情況下,片幅越小、焦距越小。線性除以平方,所以小片幅的景深會比較深。

進一步的討論,同樣鏡頭、同樣光圈,物體成像大小相當的情況下(eg. 都佔片幅的一半),片幅越大則景深越淺。

冼鏡光老師是用有放大率的景深公式來解釋。

我的看法比較簡單,一樣鏡頭,在小片幅機器上的視角比較小所以需要把物體擺比較遠才有類似的成像大小。一樣的鏡頭光圈,所以焦距和光圈都是一樣的。小片幅相較於大片幅,片幅小、距離遠。兩者都會讓景深變深。


結論:景深跟散景是不同的東西。前者討論清楚的區域,後者討論焦外成像的品質。攝影者應該控制景深來達到希望呈現的效果,而不是越淺越好。

2011年7月14日 星期四

鏡頭 -- 視角

平常大家太習慣用35mm 底片機的焦距來表示視角,像是50mm視角47度,大約是一隻眼睛的視角,35mm視角63度,大約是兩隻眼睛的視角。

但是,焦距就是視角嗎?  答案是否定的,焦距只表示正向入射的平行光會匯集在光軸上哪個位置,並不表示其他方向的平行入射光到底會成像在哪裡。

借用這篇文章裡面的光路圖:

可以看到,左側入射光上面那三條平行光會聚焦在成像平面的最下緣。所以,這三條平行光和光軸的夾角,就是這顆鏡頭在這個片幅上視角的一半。

還可以注意一下中間有個區域,所有光束會交會,這應該就是光圈位置的所在。

所以,視角跟鏡組設計、片幅有關,跟焦距其實不是那麼有關。把上面這張圖縮放一下,就可以設計出不同鏡後距、不同片幅、不同實體焦距之下,但是視角一樣的鏡頭。


那轉接是怎麼一回事?

以上圖為例,如果我們再成像平面的中間放上一片比較小的感光元件,邊緣的光線就浪費掉了,「等效的視角」就變小了。這其實就像是把拍好的照片裁切中央區域下來一樣。

那畫質呢?

畫質其實必須在公平的情況下才能比,也就是大家都洗成一樣大的相片來比較。以數位來講,就是無論你原先畫素多少,大家都把圖縮放到一樣的畫素之後用100%檢視來比。縮放演算法當然會有一點影響,這裡就先不管了。

可以想見,裁切過的畫質通常是比較差的。

由此可知,鏡頭必須針對片幅最佳化。拿全幅鏡頭在APS-C機器上,畫質並不一定好。拿APS-C鏡頭在全幅機上,結果是一個成像圈,因為鏡頭根本不夠大,沒有邊緣光進來。


數位時代的另外一個問題是,CCD/CMOS對於入射光的角度很敏感,因此邊緣畫質衰退的很快。以往的4/3系統就是基於這樣的理念設計出來的,使用略小的片幅配上略大的鏡後距,來達成直射光。但是這樣的鏡組系統也不會比較容易設計。

這也是X100這麼讓人期待的原因,使用定焦鏡頭表示邊緣光入射到感光元件上的角度是一個固定的已知角度,這時候感光元件就能相對應的調整上面的micro lens來達成較好的畫質。

2011年3月3日 星期四

Tomioka 55mm F1.4


拜讀了M42高手詳盡的說明,我購入了兩顆Tomioka代工的55mm F1.4,一顆是Auto Sears,目測沒有多層膜。另外一顆相當晚期的Auto Chinon 藍色Multi-Coated版本。其實是先買到後面這顆,但是桶身搖晃所以又買了另外這顆Auto Sears,尷尬的是後面這顆最大光圈只能到1.7左右,而且大概有15公分的對焦行程不能用,會卡住。老鏡果然有各式各樣的小毛病。

後來從色影無忌上面讀到說,藍色多層膜這顆似乎是M42裡面數一數二好的鏡頭。

無聊比較一下兩顆的差異,就接上我的NX10,M模式,放在書桌上拍。
另外還有kit 18-55在55mm端的一張照片跟一張30mm F2.0拍的做比較。
對焦點都是在Upsha的U上。

下面就是各級光圈拍出來的情況。

Auto Chinon @ F1.4

Auto Chinon @ F2

Auto Chinon @ F2.8

Auto Chinon @ F4

Auto Chinon @ F5.6

NX 30mm F2.0 @ F2


 NX 18-55mm F3.5-5.6 @ 55mm F5.6

 Auto Sears @ F1.7

Auto Sears @ F2

Auto Sears @ F2.8

Auto Sears @ F4

Auto Sears @ F5.6


很久以前就從車友CD的blog讀到自動對焦外一章,今天終於讓我拍到類似的差異了。
NX 30mm F2.0 整個畫面都蠻銳利的,但是並沒有感受到"U"有比其他地方"跳"出來。
比較Auto Sears 和Auto Chinon,U的畫質明顯的比最後一個G來的好。

為了讓30mm F2.0可以比較,所以我是把他移到比較近的地方拍,所以景深、光線,其實都是不一樣的,嚴格講不太能做為比較的對象。

第二點,Auto Chinon的表現我覺得比Auto Sears好上一級光圈,也就是說Auto Chinon F2.0大概跟Auto Sears F2.8畫質相當。不過時間差那麼久又加上多層膜差異,我覺得這點可以接受。

不過老鏡的色散表現都比較差一點,注意銀色R的左側,可以發現明顯的紫邊。這方面而言,兩顆表現相當,都是縮到F2.8之後明顯改善。

NX18-55的表現最差,畫質比Auto Sears 在F2.0還差,果真只是個kit。

兩隻鏡頭在F4跟F5.6,注意瑞士刀的紅色就會發現色彩表現完全不一樣,不知道這跟CD說的調性有沒有關係,改天用不同光圈拍人也許就會知道了。