对于2千万次的一个循环,如何提高计算速度?

ironjie 2012-07-26 06:54:15
我有一个程序,里面先拷屏,然后对拷屏图像做畸变处理并保存。程序中对图像1700*1700大小进行逐点遍历并计算,现在每个图像处理一遍要3秒左右,惠普z800的工作站,4核2.3ghz。但是任务要求在1秒以内完成1张,2秒以内连续处理2张图像。我感觉完成不了这个指标,求大神出主意?

算法没法优化。
...全文
403 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ironjie 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
这个计算量,怎么优化都比较悬,

对LZ的题目,我理解是同一个相机抓的图?也就是每次的图片处理,实际的畸变矫正计算是一样的?

如果这样,那就计算一次后,把映射矩阵保存下来,以后的每次处理只要查表就行了。

这么做能对1080p图像畸变矫正处理在900M DSP上达到8帧,实现实时。至于PC就更高了,每秒15帧没问题
[/Quote]

good idea。但是映射矩阵这个应该怎么做,不知道大神可否给demo让我学习下!
ironjie 2012-07-31
  • 打赏
  • 举报
回复
楼上几位大神的意见都非常好,很实用。目前我自己的解决方法是用多线程,因为技术能力不够,所以多核分块计算以及gpu编程都没实现。结贴!谢谢大家!
zju510 2012-07-28
  • 打赏
  • 举报
回复
这个计算量,怎么优化都比较悬,

对LZ的题目,我理解是同一个相机抓的图?也就是每次的图片处理,实际的畸变矫正计算是一样的?

如果这样,那就计算一次后,把映射矩阵保存下来,以后的每次处理只要查表就行了。

这么做能对1080p图像畸变矫正处理在900M DSP上达到8帧,实现实时。至于PC就更高了,每秒15帧没问题

artzers 2012-07-27
  • 打赏
  • 举报
回复
这个图片确实小了,像我现在要编写处理10G图像的数据压力大啊。正在考虑联机并行运算。
relaxisland 2012-07-27
  • 打赏
  • 举报
回复
用 simd 汇编吧

不懂汇编,可以采用intrinsic函数
kimiwa1 2012-07-27
  • 打赏
  • 举报
回复
算法优化下吧先
如果多核还不行的话,考虑gpgpu 如果有n卡考虑cuda,简直就是专为你的需求设计的
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
想到个不用编程的方法。
开4个程序,每个程序用任务管理器绑定一个核。

突发奇想,欢迎吐槽
[/Quote]
有些专业的程序是支持这么做的
我以前用过流体力学计算软件FLUENT就可以为算例指定用哪几个核运算
副组长 2012-07-26
  • 打赏
  • 举报
回复
① 1700*1700其实是一个很小的图像,看不见你循环内的代码不知道是不是还有优化的空间。
② 多核用OPenMP #pragma omp for 就是干这个用的。
应该没问题吧。
laviewpbt 2012-07-26
  • 打赏
  • 举报
回复
你怎么知道算法没法优化呢?
傻X 2012-07-26
  • 打赏
  • 举报
回复
想到个不用编程的方法。
开4个程序,每个程序用任务管理器绑定一个核。

突发奇想,欢迎吐槽
hztj2005 2012-07-26
  • 打赏
  • 举报
回复
omp是简单有效的多线程方法。

调试得合理,降低到1秒没问题。

很羡慕你这么好的工作站。
长尾巴的悟空 2012-07-26
  • 打赏
  • 举报
回复
一般也就是优化内外循环的效率。
zhouzhipen 2012-07-26
  • 打赏
  • 举报
回复
分块,然后用多个线程去计算。
然只有在计算代码中优化了。
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wsfxzxb 的回复:]
改用多线程处理,4核,应该速度有明显提高
[/Quote]
那这么说,可以开4个算例
不用特意编写多线程代码
梦之领域 2012-07-26
  • 打赏
  • 举报
回复
改用多线程处理,4核,应该速度有明显提高
  • 打赏
  • 举报
回复
图形是bmp的?
对图像处理不太了解
你先把目前处理的算法说一下吧
让大家看看有什么可以改进的

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧