Hadron74 发表于 2014-07-31 13:58

回复 1# ssfjhh

这个问题很有意思,网上搜了搜,这个问题可能相似,也许对你有帮助:
http://stackoverflow.com/questions/10416366/how-to-determine-which-aspect-ratios-are-closest
   

ssfjhh 发表于 2014-07-31 15:37

回复 31# Hadron74


    有点像,但是那个问题却更简单,他的问题是,两张照片中找出一张照片,其形状和给定的矩形的形状更接近。

而我的问题是给定一张照片,形状与给定的矩形的形状不同,按怎样的比率缩放照片让人看起来最完美,如果是六张照片贴在长方体的六个面上呢?

Hadron74 发表于 2014-08-01 00:27

本帖最后由 Hadron74 于 2014-08-01 00:38 编辑

回复 32# ssfjhh

是,我再想想。
   

Hadron74 发表于 2014-08-01 11:56

本帖最后由 Hadron74 于 2014-08-01 23:29 编辑

回复 32# ssfjhh


    这个问题,我们是否可以,按以下描述:
1,        求一个按比例的长方体,其边为a>b>c; 对应边的比为
x=a/b, y=b/c,z=a/c.(显然z=x*y, z>x & z>y) 给定六个图片其长宽比分别
s1>s2>s3>s4>s5>s6>=1. 要求的长方体满足,每个面的比例和图片比例近可能一致。
2,        由于x,y,z不独立,只有两个自由度,不妨令x,y 为变量。
3,        由于长方体两个相对面,比例一定相等,显然,其对应的照片比例相似,则更符合解的要求。所以,我们不妨把六张照片,分成三组(s1,s2),(s3,s4),(s5,s6);
又由于z是三种可能面中长宽比最大的,可以肯定(s1,s2)对应z所在的面,由于x,y的对称性,对于x>y, 情况下,不妨设x对应(s3,s4), y对应(s5,s6);
      4,优化要求各面的比例近似一致,我们不妨构造一个函数
         F(t,s) = (ln t – ln s)^2,这里t=x,y,z,   s={x,y,z对应的图片长宽比}
            当这个函数取极小值的时候,满足该面比例最优。 对所有面求和,就是总体最优,如下:
注意到z=x*y;
G(x,y) = ∑F(t,s) = (ln S1 –ln x – ln y)^2 +(ln S2 –ln x – ln y)^2 +(ln S3 – lnx)^2 + (ln s4 –lnx)^2
                                  +(ln S5 – lny) ^2 + (ln s6 – lny)^2
求G(x,y)的极值解,由微积分的知识,可以取其∂G/∂x = 0 &∂G/∂y = 0, 即 有方程组
2*(-1/x){ (ln S1 –ln x – ln y) +(ln S2 –ln x – ln y)+(ln S3 – lnx) + (ln s4 –lnx) } =0         (1)
2*(-1/y){ (ln S1 –ln x – ln y) +(ln S2 –ln x – ln y)+(ln S5 – lny) + (ln s6 –lny) } =0         (2)
易解得
ln x = 1/6*(ln S1 + lnS2)+1/3*(ln S3 + ln S4) -1/6*(ln S5 + Ln S6)
ln y = 1/6*(ln S1 + lnS2)-1/6*(ln S3 + ln S4) +1/3*(ln S5 + Ln S6)
推论可得:
ln z = 1/3*(ln S1 + lnS2)+1/6*(ln S3 + ln S4) +1/6*(ln S5 + Ln S6)

这样我们就求得了,符合要求的长方体的比例。

注意这里假设了x>y, 还有一组解是,x<y; 根据最优函数性质,就是把上组解, x,y对调。所以,满足最优的长方体,在这个情况下,有两个。

5, 进一步,如果照片的重要性不同,可以加入权重因子W(s)。(五张照片情况,也类似,是某个权值为0),优化函数写为:
G(x,y) = ∑W(s)F(t,s),
其最优解,也可以类似得到,这里就不赘述了。

抛砖引玉,你看我的逻辑正确吗?推导也须验证。更需要实际数据的检验。

ssfjhh 发表于 2014-08-01 14:38

本帖最后由 ssfjhh 于 2014-08-01 14:47 编辑

@Hadron74首先非常感谢你花这么多时间在这个问题上。

不过,第一步的假设不对,你把这个问题想得过于复杂了,给定的每张图片分别表示什么面是已经知道的,不需要写程序来分辨。
例如我在一楼给出的这个表格

宽高厚
前视图13.6923.2
后视图12.7423.2
左视图19.875.57
右视图22.686.55
俯视图18.377.65
仰视图19.168.13


每张图片包括两个尺寸,宽w,高h;
长方体包括三个尺寸宽W,高H,厚T。
前视图的宽w:13.69和高H:23.2,表示的就是长方体的宽W和高H;
左视图的高h:19.87和宽w:5.57表示的就是长方体的高W和厚T;
俯视图的宽w:18.37和高H:7.65表示的就是长方体的宽W和厚T。

Hadron74 发表于 2014-08-01 14:57

回复 35# ssfjhh

oh, 明白你的意思了。 也就是说,不需要确定对应。

但这一点并不影响,后面的优化确定尺寸的算法。
你看那个优化函数是否可用?

你的意见呢?


   

icymirror 发表于 2014-08-01 15:01

如果表格中的宽、高是表示的长方体的尺寸的话,那么前、后视图中,它们的高一样,但是宽不一样,如果是正确拍摄出来的话,这就不是单纯缩放来解决的问题了,是有图形扭曲的情况出现嘛?

icymirror 发表于 2014-08-01 15:11

或者说:长方体不是标准长方体?

ssfjhh 发表于 2014-08-01 16:06

回复 38# icymirror


    理论上六面视图能够完美的拼成一个长方体,但是这六面视图是用相机拍出来的,有扭曲,所以不能完美的拼成一个长方体,我现在就是想计算每张图片的缩放比,让人看起来尽可能的完美。

ssfjhh 发表于 2014-08-01 16:07

回复 37# icymirror


    如果各视图的尺寸能够对应起来,我就不需要问这个问题了。

图片不能裁剪,不可改变宽高比,只可以缩放。
页: 1 2 3 [4] 5 6
查看完整版本: 六张照片如何贴在长方体的六个面上?