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

回复 34# Hadron74


    学渣,后面的计算过程看不懂。:sleepy: ,都不知道怎样用代码实现。

不过我想到一个验证的方法。

给这个算法输入一组数据A,得到一组输出数据B,再将数据B重新输入这个算法,得到输出数据C
如果B和C相同,则说明按照这个算法可以得到一个“最优解”。

这个验证方法是否科学我也不确定,由文件压缩想到的,一个文件被压缩以后,如果再被压缩,体积基本是不变的,例如:视频文件,再用7z,rar等软件压缩,体积跟视频文件本身的体积基本是一致的。

Hadron74 发表于 2014-08-01 17:25

回复 41# ssfjhh

其实是很简单的数学。第一步,

F(t,s)的构造,就是考虑到图片和面的比例的差异, 这个差异,这里用对数差的平方,其实就是s/t偏离1的程度来度量的。
之所以用它,是因为s/t>1,还有可能s/t<1. 对数差平方,可以很好描述两个比值的的偏离程度。

另外一个好处,就是这里,有关系z=x*y, 所以 ln z = ln x + lny; 使求解更容易。

理论推导用了简单的微积分,和解方程,你检查一下有没有错误,如果这步错了,后面的公式就不对了。我也再查查。

这个优化解根本不用写程序,就拿最后的那两个式子,就能求解x,y 的值,定出长方体。

如你的例子中,我算了一下,可是结果,很不理想;如下
>>> s=
>>> s


>>> lx = 0.25*(log(s)+log(s)) + 0.375*(log(s)+log(s))-0.125*(log(s)+log(s))
>>> from math import exp
>>> x = exp(lx)
>>> x
3.119198217143163
>>> ly = 0.25*(log(s)+log(s)) - 0.125*(log(s)+log(s))+0.375*(log(s)+log(s))
>>> exp(ly)
2.3033937315879887
>>> exp(lx+ly)
7.184741620947991
这个值,和原来的差异很大。原因可能是,你的数据中的长宽高,明显不满足z=xy;
我不知道实际这样的长方体效果如何?



   

Hadron74 发表于 2014-08-01 17:32

回复 41# ssfjhh


你说的验证方法,我觉得可行。试了一下,好像我的方法,有问题,结果越算越大。我正在找问题所在。

icymirror 发表于 2014-08-01 17:40

回复 40# ssfjhh
如果有扭曲出现的话,就不能只是单纯的缩放了,需要找出变形的曲线/区域,然后针对区域去把扭曲的程度反向计算出来去调节的。
类似于,把一个等腰梯形变换成矩形,是需要先确定一个基础长度,然后,上下边按照对应的情况进行反向的拉伸或者压缩。
这只是基本情况,当梯形的斜边是曲线时,要按照曲线反向计算。(简单点考虑可以按照像素在对应的位置进行拉伸或者压缩,不过如果没有对比的基线的话,调节之后也还是容易有变形的。)

Hadron74 发表于 2014-08-01 17:58

回复 41# ssfjhh

发现一个推导,解方程错误,已在原贴中改正。抱歉。

我重新计算了你例子:结果

x = 2.2454727111305153
y = 1.6581850229470443
z = 3.7234092190329156

把这三个值,用你的验证方法,>>> s=
>>> ly = 1./6*(log(s)+log(s)) - 1./6*(log(s)+log(s))+1./3*(log(s)+log(s))
>>> exp(ly)
1.6535637259737221
>>> lx = 1./6*(log(s)+log(s)) + 1./3*(log(s)+log(s))-1./6*(log(s)+log(s))
>>> exp(lx)
2.244838027988568结果看起来还不错。呵呵!
你也试试。

ssfjhh 发表于 2014-08-02 07:58

本帖最后由 ssfjhh 于 2014-08-02 08:03 编辑

回复 44# icymirror


    我在前边楼层有写明,图片的边缘可以超出一点也可以未将长方体的一个面完全填满,我的最终目的是“让人看起来尽可能的完美”,拍照拍出来的照片怎么可能是正投影?但现在的外观设计专利就要求尺寸要一致,没办法只能改图片的尺寸,现在靠人工改尺寸,但是我实在不想再做这个dirty的工作了,就想通过程序来实现。

扭曲图片虽然能够做到一致,但是考虑到外观专利的图片上可能有较多的细节,扭曲以后反倒容易看出不真实。

Hadron74 发表于 2014-08-18 18:32

回复 46# ssfjhh


楼主,这个问题有最新进展吗?

ssfjhh 发表于 2014-08-18 21:21

本帖最后由 ssfjhh 于 2014-08-19 16:50 编辑

回复 47# Hadron74


    最近工作比较忙,还没有进展,有进展一定告诉你。

stonemason 发表于 2014-08-19 16:36

这个问题有意思
如果每张照片的宽高比不能变的话,尺寸凑巧才能拼成长方体吧?
那么每张照片一个数组:(宽,高),那就不关照片啥事了,六个数组匹配...........
要进行数组匹配,正好的话不用调整比例
然后呢,考虑以哪个基准逐步调整各数组宽高比例

主要是这个算法不会收敛,要么一圈下来长方体越来越大,要么越来越小.............

ssfjhh 发表于 2014-08-19 16:53

回复 49# stonemason


    确实如你所说,正好的话,不用调整比例。

我自己也有一个很初级的算法,最终尺寸确实越来越大,这肯定不是我想要的。

Hadron74给出的算法,最近也没有空实现。
页: 1 2 3 4 [5] 6
查看完整版本: 六张照片如何贴在长方体的六个面上?