撰寫一個程式,讀取一張圖像(.bmp 或.jpg 圖像格式)
(1)使用下列內插演算法實作影像大小縮放調整程式。
(a) Nearest Neighbor Interpolation
(b) Bilinear Interpolation
(c) Bicubic Interpolation (加分題)
(2)撰寫圖像旋轉程式。
(a) Nearest Neighbor Interpolation
| Parameters: |
|
|---|
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;
成果顯現:
(b)
撰寫一個函數偵測圖像的膚色區域(將膚色與背景區域區分出以單色圖像輸出。)
偵測每個的RGB值,接近膚色的為白色,其他則為黑色
成果顯現:
![]() |
| Histogram Equalization 1. 首先將一影像的每一灰階統計圖計算出來(共256階), 並且以頻率的方式來表示每一灰階在影像中所出現的頻率 2. 以累計的方式算出每一灰階新的頻率值 此新的頻率值即為每一灰階等化後所應佔有的出現頻率 |
![]() |
| Equalized Histogram Sobel operator: Hx,Hy分別代表經橫向及縱向邊緣檢測的圖像,其公式如下: ![]()
圖像的每一個像素的橫向及縱向梯度近似值可用以下的公式結合,來計算梯度的大小。
然後可用以下公式計算梯度方向。
在以上例子中,如果以上的角度
等於零,即代表圖像該處擁有縱向邊緣,右方較暗,若為PI,則左方較暗。 |