2014年6月6日 星期五

Assgnment 5-Color transformation and processing

作業內容:
主題: 顏色空間轉換

請撰寫一個程式,讀取一張 256 色 RGB 全彩人物全彩圖像(.bmp 或.jpg 圖像格式都可)。
(a) 將輸入圖轉換至 HIS 顏色空間,並以灰階將 H,S,I 各顏色通道繪出。
(b) 撰寫一個函數偵測圖像的膚色區域(將膚色與背景區域區分出以單色圖像輸出。)


(a)
RGB-->HSI 核心轉換公式 :



轉換之後的核心程式碼:

R = rgbData[y, x, 0];
G = rgbData[y, x, 1];
B = rgbData[y, x, 2];

r = (double)R / (R + G + B);
g = (double)G / (R + G + B);
b = (double)B / (R + G + B);

value1 = 0.5 * ((r - g) + (r - b));
value2 = Math.Pow((Math.Pow(r - g, 2) + (r - b) * (g - b)), 0.5);

radial = Math.Acos(value1 / value2);
theta = (int)(radial * 180.0 / Math.PI);

if (!double.IsNaN(theta))
    h = (b > g) ? (360 - theta) : theta;
else
    h = 0;

s = 1 - 3 * CompareRGB.Min(r, g, b);
if (double.IsNaN(s))
    s = 0;

i = (R + G + B) / 3.0;

成果顯現:

h s i
(b) 撰寫一個函數偵測圖像的膚色區域(將膚色與背景區域區分出以單色圖像輸出。) 偵測每個的RGB值,接近膚色的為白色,其他則為黑色 成果顯現:

沒有留言:

張貼留言