众所周知,人眼睛看东西有近大远小的特点,相机镜头也是一样。而其原因在于,同样的物体,处在距人眼不同距离的情况下,其在人视网膜上形成的视角是不一样的;而反过来,大小差距很大的物体,由于其距离的差距,可能在人看来有相似的视角,当人眼无法分辨其距离时,看起来就认为有相似的大小,比如太阳和月亮。
而对于人像拍摄,大家都知道的一个较常见的拍长腿技巧就是:广角镜头,低机位拍摄。这一点实际就是透视畸变的运用。
如上图所示,假设人体的高度为h,我们将人体分成N个等份,每份高度为Δh=h/N,相机与人体的水平距离为d,假设相机们于地面上,将人体上从下往上数第n个Δh在相机看来的视角为θ=
。
当我们划分地足够细,即上述角度足够小时,对于某一个Δh片段,可以等效为下面的情形:
即可以认为相机视线与此片段垂直,此时,相机看到的此片段的长度等于相机到此片段的直线距离与2*tanθ/2的乘积。由此,当我们确实了被拍摄人体的身高和位置以及相机的位置,就可以算出人体各部位在相机中形成的视角,及相对长度,进而便可得到我们需要的信息,比较腿长占身高的比例等。
在此,我们假定人体身高为1.6m,拍摄距离从0.2m变化到1m,机位高度由0.016m到0.8m,分割份数为100,使用matlab计算,代码如下:
height=1.60;
%模特高度
distance=0.2:0.01:1;
%拍摄距离
cam_h=0:0.016:height/2;
%机位高度
n=100; %划分精度
num_distance=length(distance);
num_cam_h=length(cam_h);
total_aov=zeros(num_distance,num_cam_h);
%总视角
total_height=zeros(num_distance,num_cam_h);
%总相对高度
leg_rate=zeros(num_distance,num_cam_h);
%腿长所占比例
for
i=1:num_distance
for j=1:num_cam_h
centre=round(cam_h(j)/height*100); %机位对应小片
aov1=zeros(1,centre);
for
k=1:centre %机位以下
aov1(k)=atan((centre-k+1)*height/n/distance(i))-atan((centre-k)*height/n/distance(i));
end
aov2=zeros(1,n-centre); %机位以上
for
k=1:n-centre
aov2(k)=atan(k*height/n/distance(i))-atan((k-1)*height/n/distance(i));
end
total_aov(i,j)=sum(aov1)+sum(aov2);
total_height(i,j)=(sum(tan(aov1/2).*sqrt(distance(i)^2+((centre-1:-1:0)/100*height).^2))+...
sum(tan(aov2/2).*sqrt(distance(i)^2+((1:n-centre)/100*height).^2)))/...
(tan(aov2(length(aov2))/2)*sqrt(distance(i)^2+((n-centre)/100*height)^2))*height/n;
leg_rate(i,j)=(1+((sum(tan(aov1/2).*sqrt(distance(i)^2+((centre-1:-1:0)/100*height).^2))+...
sum(tan(aov2(1:n/2-centre)/2).*sqrt(distance(i)^2+((1:n/2-centre)/100*height).^2)))/...
sum(tan(aov2(n/2-centre+1:end)/2).*sqrt(distance(i)^2+((n/2-centre+1:n-
centre)/100*height).^2)))^(-1))^(-1);
end
end
[X,Y]=meshgrid(distance,cam_h);
mesh(X,Y,total_height');
xlabel('拍摄距离(m)');
ylabel('机位高度(m)');
zlabel('相对视觉身高(以最远点为基准)');
figure;
mesh(X,Y,leg_rate');
xlabel('拍摄距离(m)');
ylabel('机位高度(m)');
zlabel('腿长(正常为0.5)');
我们首先关心腿长在整个人体高度中所占的比例。这里我们假定正常情况下,腿长占比为0.5,通过上面的计算,得到下图:
![[原创]怎样拍出大长腿---人体全身像透视畸变的定量计算 [原创]怎样拍出大长腿---人体全身像透视畸变的定量计算](http://image109.360doc.com/DownloadImg/2019/05/1712/161357519_4_20190517122227847)
另外我们关心在照片中,整个人看起来的高度。需要知道,由于在照片中可能无法明确拍摄距离,所以所能看到的都是相对值,所以这里以离相机最远的一个片段(即头顶)为基准,即认为该片段的尺寸未发生变化。得到的结果如下:
![[原创]怎样拍出大长腿---人体全身像透视畸变的定量计算 [原创]怎样拍出大长腿---人体全身像透视畸变的定量计算](http://image109.360doc.com/DownloadImg/2019/05/1712/161357519_5_20190517122228488)
根据上面的结果我们很明显地看到,距离越低,机位越低,得到的结果是腿长占比越大,相对身高越高。然而,在能拍摄到全身的前提下,最低和最近拍摄距离通常限制于相机的视角,因此广角镜头在方面具有优势。另一方面可以看到,当拍摄距离过近或过低时,畸变会过于严重,这也将影响照片的效果。因此实际拍摄时还是要根据实际情况,灵活利用这个技巧。
ps:博主为摄影初学者,文中难免有谬误和考虑不周全的地方,还请大家指正。。![[原创]怎样拍出大长腿---人体全身像透视畸变的定量计算 [原创]怎样拍出大长腿---人体全身像透视畸变的定量计算](http://image109.360doc.com/DownloadImg/2019/05/1712/161357519_6_20190517122228816.gif)