1.Fisheye distortion? 魚眼鏡頭
解釋來自百度百科:魚眼鏡頭是一種焦距為16mm或更短的并且視角接近或等于180°。 它是一種極端的廣角鏡頭,“魚眼鏡頭”是它的俗稱。為使鏡頭達到最大的攝影視角,這種攝影鏡頭的前鏡片直徑很短且呈拋物狀向鏡頭前部凸出,與魚的眼睛頗為相似,“魚眼鏡頭”因此而得名。
關鍵代碼如下:
float2?fisheye(float2?uv)
{
float2??n_uv?=?(uv?-?0.5)?*?2.0;
float2?r_uv;
r_uv.x?=?(1?-?n_uv.y?*?n_uv.y)?*?_Intensity_y?*?(n_uv.x);
r_uv.y?=?(1?-?n_uv.x?*?n_uv.x)?*?_Intensity_x?*?(n_uv.y);
return(uv*?_scale?-?r_uv);
}
效果是這樣的:
2.Barrel Distortion? 桶形畸變
桶形畸變(Barrel Distortion),又稱桶形失真,是由鏡頭中透鏡物理性能以及鏡片組結構引起的成像畫面呈桶形膨脹狀的失真現象。我們在使用廣角鏡頭或使用變焦鏡頭的廣角端時,最容易察覺桶形失真現象。當畫面中有直線(尤其是靠近相框邊緣的直線)的時候,桶形失真最容易被察覺。普通消費級數碼相機的桶形失真率通常為1%。
關鍵代碼如下:
float2?barrel(float2?uv)
{
float2?h?=?uv.xy?-?float2(0.5,?0.5);
float?r2?=?h.x?*?h.x?+?h.y?*?h.y;
float?f?=?1.0?+?r2?*?(_distortion?+?_cubicDistortion?*?sqrt(r2));
return?f?*?_scale?*?h?+?0.5;
}
效果是這樣的:
3.Pincushion Distortion??枕形畸變
在正確的拍攝條件下,矩形物體的像仍應呈矩形。但有的鏡頭由于有缺陷,將矩形物體拍成四邊向內凹進形如枕頭的影像,稱鏡頭的這種像差為枕形畸變。相反如拍成四邊突出的影像即稱桶形畸變。
枕形畸變又稱正畸變,是由于視場邊緣部分的放大率高于中心部分放大率所引起,即傾斜角度大的光線的放大率比傾斜角度小的光線的放大率高。
把桶形畸變參數修改即為枕形畸變
效果是這樣的:
全部代碼已上傳至GitHub
------by wolf96 ?? http://blog.csdn.net/wolf96