opencv源码 warpAffine 加速改造 (一)

2023-12-28 11:33:01

? ? ? ?最近在做dcm像素任意旋转的时候(没有dcm经验的人,可以理解是图像像素的任意旋转). 旋转是使用了使用 opencv的 Imgproc.warpAffine()方法,但是发现耗时很长,平均在3~4ms左右.作为一个bs产品,提升速度就相当重要了.

? ?代码层面的优化: 将图像512X512 放大至3000X3000,然后再旋转,这个耗时肯定要比先旋转在放大长.?

? 源码上的改造: 目前的opencv源码 4.5.1 版本 和 4.7.0版本;
?(强调 一下 项目是java的,编译的也是生成jar包,下面的测试结果也是调jar得出的结论)

?(测试的都是图片,图片转成Mat,然后旋转的,单位都是 ms)

?一.?4.5.1版本

? ?正常的编译? ----- 图片旋转(这个时候编出来的是不支持dcm的像素旋转的,缺gdcm模块)

? ? ? ? ?

正常?+ gdcm 模块? ----模块增加了,相应的速度会受到影响

正常 + gdcm + ipp模块 --- ipp是加速库,感兴趣的可以去看一下

正常 + gdcm + 改造 --- 改造后发现速度与加了ipp相差不多?

正常 + gdcm + ipp + 改造 ---- 速度提升很明显,等下在重点说一下改造方法

二.4.7.0版本

?这个版本加了很多3d的库和方法,造成整个模块比较重

正常 + gdcm + ipp ----发现速度比opencv4.5.1版本慢了很多了,这里就没有在比较了

三.weasis-opencv-core3.04?

因为现在项目是使用的dcm4che,其中用到的weasis-opencv-core3.04,这个jar就是调的 opencv模块

看了这个源码内部,调的opencv模块,换上上面编的,是不能直接用的, 猜想可能是内部对opencv进行加速改造(没有相关文档,而且源码调的时候,也是直接调的编好的opencv的dll,其具体细节不太好研究了.

四.?weasis-opencv-core4.55?

最新的引入了3d模块,如果技术没有用到新的,升级了可能会变慢(日常基本不咋升级那些第三方,是不是有这个意思呢)

?

下篇就是说具体改造了,可能涉及到代码,比较繁琐,感兴趣的继续下去

文章来源:https://blog.csdn.net/smallITperson/article/details/135237327
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。