[C#] 濾鏡筆記 – 調整Gamma數值

2012-12-06

 

關於Gamma 網路上眾說紛紜,但是我看到一段比較讓人容易理解的解釋為

Gamme 是因應人類視覺特性而生的一種色彩處理方式。人類視覺特性之一 ,在微光的敏銳度大於強光中的敏銳度

也說在暗的環境下面,人眼所能區分的亮暗層次會比較多,簡單的說人類對於光的感受度是成對數而非線性分布

但是數位相機感應光線方式跟人類眼睛不同,他單純是紀錄感應到的光亮,對光線感受是呈現線性,一班的對比調整都是偏線性

移動調整,和人的感感受不同,於是Gamma曲線調整 使數位影像逼近人類看到的影像

參考文件:

http://www.photosharp.com.tw/blog20/article.aspx?m=didadida&id=5800

http://www.google.com.tw/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=1&cad=rja&ved=0CF0QFjAA&url=http%3A%2F%2Fwww.thco.com.tw%2Fezfiles%2Fthco1%2Fimg%2Fimg%2F68759%2FVol27ImageMechanism.pdf&ei=8BMxUNeyLMffmAXw4oGoCw&usg=AFQjCNFHgdE-HPoEbpIflrDdf5ZPnCyMFw&sig2=BRG4AQQonC3F8AI_EQ_Qeg


[C#] 濾鏡筆記 – 銳利化

2012-12-05

 

銳利化開始有點複雜要導入矩陣的觀念,因為他跟之前模糊化一樣

必須和周圍的點一起套入公式進行處理

可以參考這篇:

http://stackoverflow.com/questions/903632/sharpen-on-a-bitmap-using-c-sharp

http://blog.csdn.net/jiangxinyu/article/details/6222322

關於拉普拉絲的矩陣是長這樣

// 建立3x3 矩陣 拉普拉斯
//  -1  -1  -1    (0,0) | (1,0) | (2,0) 
//  -1  +9  -1    (0,1) | (1,1) | (2,1)
//  -1  +1  -1    (0,2) | (1,2) | (2,2)


中心點加上9 周圍八點-1 後取相加平均…


[C#] 濾鏡筆記 – 漣漪效果

2012-12-04

 

最近一些需求我要用到漣漪效果,讓文字變得讓機器人看不懂..

就是要歪七扭八,也就是要將圖片給液態化..

其中會用到比較多的數學跟演算方法

關於相關數學範例可以參考:

http://marlongrech.wordpress.com/2009/08/27/playing-with-shaders-creating-a-water-effect/

http://www.codeproject.com/Articles/2812/A-C-water-effect-picture-control

http://www.aforgenet.com/framework/docs/html/6f6ba0e1-cc41-0277-c856-598089b4ed02.htm

http://www.codeproject.com/Articles/3419/Image-Processing-for-Dummies-with-C-and-GDI-Part-5

整理過上述網站的Code 寫成一隻function 給有需要的人..


[C#] 濾鏡筆記 – 色調濾鏡

2012-12-03

 

這幾天寫到幾篇文章,其實發現都是在設定R G B 的變化..

其實帶色調濾鏡 就是將一個值拉高 將其他值降低來達到的效果..

譬如純紅濾鏡..

/// <summary>
/// 純紅濾鏡
/// </summary>
/// <param name="bitmap">Bitmap</param>
/// <param name="threshold">門檻值 -255~255</param>
/// <returns></returns>
public System.Drawing.Bitmap AdjustToRed(System.Drawing.Bitmap bitmap, int threshold)
{
    for (int y = 0; y < bitmap.Height; y++)
    {
        for (int x = 0; x < bitmap.Width; x++)
        {
            // 取得每一個 pixel
            var pixel = bitmap.GetPixel(x, y);
            var pR = pixel.R + threshold;
            pR = Math.Max(pR, 0);
            pR = Math.Min(255, pR);
            // 將改過的 RGB 寫回
            // 只寫入紅色的值 , G B 都放零
            System.Drawing.Color newColor = System.Drawing.Color.FromArgb(pixel.A, pR, 0, 0);
            bitmap.SetPixel(x, y, newColor);
        }
    }
    // 回傳結果
    return bitmap;
}



其中比較特別的 就是我加入了門檻值 所以會提高紅色的深度


[C#] 透過 JSON.net 使用 BSON 格式

2012-12-02

 

最近在研究NoSQL 的技術,看到一個很有趣的名詞,叫做BSON

2012-10-10_164541


[C#] Regex筆記- 找出所有的超連結+轉換相對路徑成絕對路徑

2012-12-01

 

之前發過一篇文章有關於透過Regular Expression 來抓取網頁中超連結的部分 參考網頁

但是會於遇到這樣的情形..

2012-08-27_211035_thumb


當麻許的超技八 2014 | Donma Hsu Design.