您的位置:首页 > 其它

GDI+、FFMPEG图像放大算法性能比较

2016-07-14 20:56 393 查看

GDI+、FFMPEG图像放大算法性能比较

最近在做link的时候要放大图片,使用了传说中gdi+最好的高质量双三次插值算法,然后在连续放大时就卡成幻灯片了。试了其他几个算法,发现卡顿情况有缓解,显示效果也没什么差别(也可能是我眼瘸,不过天天看mac的ios工程师看了也说没什么区别)。所以对GDI+中的9中插值算法做个性能比较。

测试方法:

使用的原图为1920*1080的24位jpg图片,分别用9中插值算法进行1.5、2、2.5、3、3.5、4、4.5、5、5.5、6倍的放大100次,比较时间(MS)。

机器配置:

intel i5-4440 3.1GHZ,只使用了一条线程进行运算。

结果如下:

\1.522.533.544.555.56
Invalid428169681043814671197342534432000392974731355922
Default425069381042114704197032535931985393594723456109
LowQuality425069381043814656196872542231954392814723456062
HighQuality110151656323344309843981349734607037282985750100250
Bilinear423569841050014672196872543731953392504740656265
Bicubic3953169500108234155141211031275125347859428765518937617344
NearestNeighbor2500384456097671101091301516266199542378128188
HighQualityBilinear11109163752262529657376104678256640673137901591828
HighQualityBicubic109851657823281310003968749813608287281385891100172
可以看到速度最快的是NearestNeighbor算法,平均下来基本上在3倍的时候一次放大就需要70ms,勉强还可以接受。最慢的是Bicubic算法,平均下来基本上在3倍的时候一次放大就需要1.5s,这已经完全无法接受了。

GDI+的性能让我大吃一惊,是微软实现的有问题呢,还是确实这么慢?所以我对ffmpeg中的11种算法做了同样条件下的测试。

结果如下:

\1.522.533.544.555.56
FAST_BILINEAR1625225031564250548468758531102811225014406
BILINEAR38435812865612234163122104726390323603890746000
BICUBIC80161279719531278594050049000618597636092406108875
X38285781867112188163602107826421323593895346047
POINT2609396958448140107971379717250210472526629812
AREA36255781870312219163592104726391323753890746015
BICUBLIN6015100461531221781293593807847953589697123484515
GAUSS78131273419516278443771949453615007590691688108859
SINC348285815690625128656178625229562288485350094420625509047
LANCZOS9984170782631237203541096556382313101265122344144844
SPLINE1543726516408125910977922101812127079158031190328100172
从BICUBIC和BILINEAR的结果看来微软的算法实现确实有些问题。如果非常追求性能的话可以考虑用ffmpeg转换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ffmpeg gdi