研读《Optimized Scale-and-Stretch for Image Resizing》的一些问题

273 views
Skip to first unread message

Roc Wang

unread,
Apr 11, 2012, 6:35:58 AM4/11/12
to perillar...@googlegroups.com
年前导师要我实现一篇08年王昱舜的retarget论文,这篇论文一年前就看过,但求解最优化的方法一直没搞懂。我一遇到困难的问题就放手不管了,做科研没有成果也没有动力。
现在也依旧不是很清楚,不过终于搞懂这是个二次规划的问题,没有多么难,就是自己一直都不肯花时间、花精力去做。没有付出就没有回报。

Roc Wang

unread,
Apr 11, 2012, 6:51:46 AM4/11/12
to perillar...@googlegroups.com
现在正在与能量函数作对,卡在推导具体表达式有两个月时间,现在有些眉目,又不知道该用什么方法求最小化。终于搞清楚是个二次规划问题,又不知道C++如何计算二次规划。在自己编程序求解二次规划问题与找现成的库之间纠结了很久。

找到一个C++下求解二次规划的程序库:QuadProg++
 
QuadProg++:http://sourceforge.net/projects/quadprog/

该程序库较简单,但可能不适合这篇论文。论文中系数矩阵是稀疏的,QuadProg++没有对解稀疏矩阵进行优化。说到这想起来,程序速度永远都不是第一位的,论文实现出来后再进行优化也不迟。

导师给我一个求解稀疏线性方程组的库:TAUCS

TAUCS:http://www.tau.ac.il/~stoledo/taucs/

这个解方程应该挺快的。 但我还没用。

这是关于C++的一些情况。



Roc Wang

unread,
Apr 11, 2012, 6:56:56 AM4/11/12
to perillar...@googlegroups.com
昨天想可以用Matlab求解二次规划问题的。

想先用Matlab实现一下,但今天一个下午却还只停留在外围,实现起来也没那么轻松。具体编程还是不熟练,能力不够,浪费时间太多。

用C++调用Matlab函数完成求解二次规划。

但现实时我必须得先实现一个出来,不管是Matlab还是C++,这样才好进行下一部工作,有了开头就好办多了,万事开头难。

不知道我完全用Matlab实现对不对,C++下可以用函数库求解地,不用考虑效率问题。Matlab与OpenCV的编程方式有很多不同,但还是matlab简单一些,不知道周五能不能实现出来。

Perilla

unread,
Apr 16, 2012, 9:34:19 AM4/16/12
to perillar...@googlegroups.com
今天,用Matlab写了一个循环,还是没做出来。

因我的不认真,出现各种各样的小错误,使用变量越多越容易出错,不易把握大局。

循环了200次还没达到最优结果,需要更多的循环。

Perilla

unread,
Apr 16, 2012, 9:40:26 AM4/16/12
to perillar...@googlegroups.com
Matlab的reshape,按列序重组矩阵。Matlab按列序存储数据,与OpenCV中按行序存储矩阵不同。我写的难看的for循环代码,就是按OpenCV行序写的,没有优化。

在 2012年4月16日星期一UTC+8下午9时34分19秒,Perilla写道:

Perilla

unread,
Apr 19, 2012, 5:17:04 AM4/19/12
to perillar...@googlegroups.com

失败的结果,之前公式整个写错了,修改后还是这样,多次迭代后的结果更加极端,吃饭后再来看怎么回事吧。



在 2012年4月11日星期三UTC+8下午6时35分58秒,Perilla写道:

Perilla

unread,
Apr 21, 2012, 9:26:24 AM4/21/12
to perillar...@googlegroups.com
更改之后的结果也不怎么地。每次迭代依旧不能达到要求,还是公式的问题。另外,显著图也有问题,总之,这一段时间又是白费了。时间不多,我该抓紧了。

在 2012年4月19日星期四UTC+8下午5时17分04秒,Perilla写道:

Perilla

unread,
Apr 21, 2012, 10:10:18 AM4/21/12
to perillar...@googlegroups.com

上图

在 2012年4月21日星期六UTC+8下午9时26分24秒,Perilla写道:

Perilla

unread,
Apr 30, 2012, 7:48:46 AM4/30/12
to perillar...@googlegroups.com
4月27日:

少了一个对s的优化条件,结果有一定的出入。

Perilla

unread,
Apr 30, 2012, 7:50:50 AM4/30/12
to perillar...@googlegroups.com

来张图片,尽管不太清晰



在 2012年4月30日星期一UTC+8下午7时48分46秒,Perilla写道:
4月27日:

少了一个对s的优化条件,结果有一定的出入。

Perilla

unread,
Jun 3, 2012, 10:50:31 PM6/3/12
to perillar...@googlegroups.com
4月30日遇到的问题,整个5月都没解决!我从来没意识到什么才是最重要的事情。过多的事情分散了我的时间,再加上遇到困难就退缩的毛病,科研停滞不前。6月了,我该慌了。

在 2012年4月11日星期三UTC+8下午6时35分58秒,Perilla写道:

Perilla

unread,
Jun 4, 2012, 8:50:49 AM6/4/12
to perillar...@googlegroups.com
上周五和今天两天的成果。每次编完程序后运行,都十分期待,而后极其失望。最终,还是我写的程序不理想,结果差了许多。一看就知道,左边我做的结果和右边论文程序跑出来的差距太大了。



在 2012年6月4日星期一UTC+8上午10时50分31秒,Perilla写道:
Message has been deleted

Perilla

unread,
Jun 8, 2012, 4:49:24 AM6/8/12
to perillar...@googlegroups.com
这周又停留在周一做的工作上。周二浪费一天去公司,周三搞了一天网页,周四看了一天opencv,今天上午看数字图像处理。闲话少说,书归正传。

两种可能出现锯齿效果:网格求错(我确实少了一个优化步骤,也没试一下其它的图片),或是图像warp过程中的插值问题(线性插值这步骤大有说到)。

先用其他图片试一下效果再说。

Perilla

unread,
Jun 11, 2012, 3:47:55 AM6/11/12
to perillar...@googlegroups.com
七天后,再次觉得自己应该做出点儿东西,就实验了一张图片,程序也没写好,没改成c++的,matlab的效果有问题。这样下去可不行,必须加进了。看那本书看不进去,或许可以不看了,直接去看代码?我不知道该怎样做,反正得做点儿什么。scanline技术是不是该去查一下,看看是怎么回事,说不定对最后的结果没什么影响,现在的结果我怎么看怎么像是优化网格顶点没做好,但不至于全体边缘都不好吧,看不明白了。

总之,先看看书,然后找找论文,再看看代码,今天做了这些后,再看效果有没有改变。今天能完成这些么?有点悬。

在 2012年6月8日星期五UTC+8下午4时49分24秒,Perilla写道:

Perilla

unread,
Jun 13, 2012, 2:11:10 AM6/13/12
to perillar...@googlegroups.com
不试不知道,一试吓一跳。用另外一个图片跑程序,立马就看出问题来了,网格顶点求得一点儿都不对,肯定是中间哪个步骤有问题。这下抓瞎了,该怎么搞呢?

在 2012年6月4日星期一UTC+8下午8时50分49秒,Perilla写道:

QQ

unread,
Aug 1, 2012, 10:25:12 AM8/1/12
to perillar...@googlegroups.com
你好我最近也在實作這篇paper
以下是我遇到的幾個問題還請您幫我解答一下,我也是卡在不知道用什麼方法來求最小化,
在paper的第3.2節Mesh-based image resizing之中的Total energy and boundary conditions項裡的第(7)式後面有提到"These constraints are simply substituted into the linear system during the optimization."
        意思是說利用第(6)(7)式的constraints可以得到一個線性系統,並透過解出此線性系統可以得到每個vertices最佳的位置

        我的問題是如何用第(6).(7)式的constraints來得到一個線性系統?以下是我的一些想法有錯的話還請您更正
        我本來的想法是利用第(5)式這個energy function來得到,因為第(5)式有V ' 項和V項(其中V ' 項為改變之後的頂點位置,V項為改變之前的頂點位置),然後我就令第(5)式為0(因為要minimize  第(5)式,又因為第(5)式不可能為負,所以我假設 第(5)式 的最佳解為0),因此會得到

D=Du+Dl=0  
 
又因為Du項跟Dl項裡有V ' 項和V項,所以將V '像放一邊V項放在另外一邊,因此可以得到

AV' =V

然後將constraints((6)(7)式)帶入上式
最後

V' =A' V(其中A ' 為A的Inverse)

不知道我的想法有沒有錯,因為我的想法會出現一個問題,那就是沒辦法把V ' 項和V項分成兩邊,因為Du和Dl項裡都的有做一個平方的動作,所以V ' 項和V項會乘在一起分不開,所以可能是哪裡想錯了,還請您多多指教

 ( 另外我還有一個問題是關於程式方面的,因為paper上有提到他是用"iterative solver"來處理此線性系統,因為我對此工具還蠻陌生的,不知道您有沒有知道什麼關於此工具的教學網站,或是您那邊還有別的方法來處理此線性系統,萬分感謝! ) 



芷了

unread,
Apr 28, 2014, 3:58:52 AM4/28/14
to perillar...@googlegroups.com
你好,我是一名大四的学生,最近我也在弄他的论文的东西,但我在方面是个新手,很多东西还都不懂,你能把你的代码发给我参考一下吗?承诺只用作研究!非常感谢。

在 2012年4月11日星期三UTC+8下午6时35分58秒,Perilla写道:

芷了

unread,
Apr 28, 2014, 3:59:25 AM4/28/14
to perillar...@googlegroups.com
你好,我是一名大四的学生,最近我也在弄他的论文的东西,但我在方面是个新手,很多东西还都不懂,你能把你的代码发给我参考一下吗?承诺只用作研究!非常感谢。

在 2012年4月11日星期三UTC+8下午6时35分58秒,Perilla写道:
年前导师要我实现一篇08年王昱舜的retarget论文,这篇论文一年前就看过,但求解最优化的方法一直没搞懂。我一遇到困难的问题就放手不管了,做科研没有成果也没有动力。
Reply all
Reply to author
Forward
0 new messages