[C#] 濾鏡筆記 – 動態模糊化、馬賽克 影像處理

2012-12-11

 

其實模糊化跟馬賽克效果其實原理很像…

他其實是取一定範圍內的 R , G , B 均值之後寫回原本的 Pixel

正所謂跑一定均值就代表,要跑小迴圈,所以時間都會比較長一點

不過這是學習筆記,看一下他 Pixel 的 R G B 變化


[C#] 透過WebClient Post Data

2012-12-10

 

Server 透過 WebClient 使用POST 傳送資料…

接收端:

接受 id 還有 age 兩個參數

Response.Write(Request.Form["id"]+","+Request.Form["age"]+".");


取得 id 還有 age 資料..

傳送端寫法:

string targetAddress = "http://localhost:1550/risiv.aspx";
string parameters = "id=許公蓋&age=12";
wc.Encoding = Encoding.UTF8;
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string result = wc.UploadString(targetAddress, parameters);
 
 
Response.Write(result);



targetAddress  為目標網址


parameter為參數值


因為在.net  世界都是 UTF8 編碼 但是你不能保證其他目標端是否是UTF8


最後參數故意戴許公蓋 這是職業病要測試一下此問題..


紀錄一下,最近跟其他公司合作很常用到這方法來做 proxy.


[C#] 濾鏡筆記 – LockBits影像處理 + 浮雕效果

2012-12-09

 

這幾天被斗哥一直碎念,為什麼不用 LockBits 處理

其實是不知道怎麼起筆..

簡單的說來當一張 Bitmap 被轉為   Format24bppRgb 一長串的數值..

轉成 16 進位大概會長這樣 …

2012-10-04_130923


[C#] 濾鏡筆記 – 高對比

2012-12-08

 

圖像高對比,是一個一連串的複雜處理。

其概念,就是偏高值拉高 偏低值拉更低,而不是僅僅在特定方向移動的像素,

必須增加或減少像素集之間的差異。

原本我想說針對 200=> 255 , 50 =>0

但是對比不明顯也不好看…

就在網路上面找到公式

(((( 顏色色值 / 255.0) - 0.5) * 影響度 0~4 之間 ) + 0.5) * 255.0


[C#] 濾鏡筆記 – 偵測人的皮膚

2012-12-07


其實人類的皮膚在一定的色域內,但是因為有光暗的明亮的關係

所以有許多演算法有加入邊界的運算等…

這邊參考了很多網站,我不是數學家,所以我把看到的幾個公式測過一次..

這邊記錄一下我測過的公式..

public static bool IsSkinColor(byte r, byte g, byte b)
{
 
   // 公式 1 : http://www.codeproject.com/Articles/38176/Image-Processing-Skin-Detection-Some-Filters-and-E
 
   //return ( (r > 95) && (g > 40) && (b < 20)) && ( (Math.Max(Math.Max(r, g), b)) - (Math.Min(Math.Min(r, g), b)) > 15) &&
   //       (Math.Abs(r - g) > 15) && (r > g) && (r > b) ||
   //       ( (r > 220) && (g > 210) && (b > 170) && (Math.Abs(r - g) == 15) && (r > b) && (g > b));
 
 
   // 公式 2 :http://www.codeproject.com/Articles/38176/Image-Processing-Skin-Detection-Some-Filters-and-E
   //if (r == 0 || b == 0 || g == 0) return false; 
 
   //return ((r/g) > 1.185) && (((r*b)/((r + g + b)*(r + g + b))) > 0.107) &&
   //       (((r*g)/((r + g + b)*(r + g + b))) > 0.112);
 
 
 
   // 公式 3 :http://www.codeproject.com/Articles/8127/Skin-Recognition-in-C
   //double I = (Math.Log(r) + Math.Log(b) + Math.Log(g)) / 3;
   //double Rg = Math.Log(r) - Math.Log(g);
   //double By = Math.Log(b) - (Math.Log(g) + Math.Log(r)) / 2;
   //double hue = Math.Atan2(Rg, By) * (180 / Math.PI);
 
 
   //if (I <= 5 && (hue >= 4 && hue <= 255))
   //{
   //    return true;
   //}
   //else
   //{
   //    return false;
   //}
 
 
   // 公式四 : http://w3.ualg.pt/~ftomaz/download/dicta2003.pdf
   var Cb = (0.148 * r) - (0.291 * g) + (0.439 * b) + 128;
   var Cr = (0.439 * r) - (0.368 * g) - (0.071 * b) + 128;
 
   if ((r > 95 && g > 40 && b > 20 && (Math.Max(Math.Max(r, g),
   b) - Math.Min(Math.Min(r, g), b) > 15) && (r - g) > 15 &&
   r > g && r > b) &&
   (Cr > 140 && Cr < 162 || Cb > 105 && Cb < 130))
   {
       return true; 
   }
   else
   {
       return false; 
   } 
 
 
}


[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


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