opencv图像处理代码优化

这人不靠谱 2013-12-25 04:35:47
求各位大神指导,开发环境是opencv,代码执行速度大概是0.7秒左右,这只是对于一帧图片的处理,我处理的是视频流,2秒钟3帧图片,根本就达不到实时性要求,求各位大神指导下,3层for循环的优化,谢谢!!

row = 480, col = 640, Histbin = 16
...全文
457 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
这人不靠谱 2013-12-30
  • 打赏
  • 举报
回复
引用 10 楼 baipv008 的回复:
我觉得这段代码用查表法,起码快100倍。图像处理一般不在内层循环做复杂数值运算
嗯,是呀!正在做查表法,应该快很多的,thank you
这人不靠谱 2013-12-30
  • 打赏
  • 举报
回复
引用 8 楼 vipcxj 的回复:
[quote=引用 7 楼 u011513563 的回复:] [quote=引用 5 楼 vipcxj 的回复:] 从并行上思考吧,这种东西让GPU来算,速度会提高成百上千倍
试过了并行思考,通过指令#pragma omp parallel for并行执行,可以使程序提高好几倍,[/quote] 其实还有HSFL之类的给GPU编程的语言,其实GPU的并行能力远强于CPU,你弄的图像处理程序,更是要时时和GPU打交道了[/quote] 其实之前对于这个GPU不太了解,因为接触时间也不是很长,多谢指点,又学到了点东西
这人不靠谱 2013-12-30
  • 打赏
  • 举报
回复
引用 9 楼 vipcxj 的回复:
[quote=引用 8 楼 vipcxj 的回复:] [quote=引用 7 楼 u011513563 的回复:] [quote=引用 5 楼 vipcxj 的回复:] 从并行上思考吧,这种东西让GPU来算,速度会提高成百上千倍
试过了并行思考,通过指令#pragma omp parallel for并行执行,可以使程序提高好几倍,[/quote] 其实还有HSFL之类的给GPU编程的语言,其实GPU的并行能力远强于CPU,你弄的图像处理程序,更是要时时和GPU打交道了[/quote] 其实你pow(A,2)直接用A*A我估计可以快好多倍,你平方都用pow真是闲得蛋疼啊~[/quote] 是啊!没注意
vipcxj 2013-12-29
  • 打赏
  • 举报
回复
引用 7 楼 u011513563 的回复:
[quote=引用 5 楼 vipcxj 的回复:] 从并行上思考吧,这种东西让GPU来算,速度会提高成百上千倍
试过了并行思考,通过指令#pragma omp parallel for并行执行,可以使程序提高好几倍,[/quote] 其实还有HSFL之类的给GPU编程的语言,其实GPU的并行能力远强于CPU,你弄的图像处理程序,更是要时时和GPU打交道了
千树之影 2013-12-29
  • 打赏
  • 举报
回复
我觉得这段代码用查表法,起码快100倍。图像处理一般不在内层循环做复杂数值运算
vipcxj 2013-12-29
  • 打赏
  • 举报
回复
引用 8 楼 vipcxj 的回复:
[quote=引用 7 楼 u011513563 的回复:] [quote=引用 5 楼 vipcxj 的回复:] 从并行上思考吧,这种东西让GPU来算,速度会提高成百上千倍
试过了并行思考,通过指令#pragma omp parallel for并行执行,可以使程序提高好几倍,[/quote] 其实还有HSFL之类的给GPU编程的语言,其实GPU的并行能力远强于CPU,你弄的图像处理程序,更是要时时和GPU打交道了[/quote] 其实你pow(A,2)直接用A*A我估计可以快好多倍,你平方都用pow真是闲得蛋疼啊~
gqjjqg 2013-12-28
  • 打赏
  • 举报
回复
引用 5 楼 vipcxj 的回复:
从并行上思考吧,这种东西让GPU来算,速度会提高成百上千倍
这个不错,图像可以分成上下两部分,起两个线程处理,分配到两个cpu。 速度再提升一倍应该问题不大。 分子部分的计算,完全可以移动到图像循环外部做预处理。 再加上 一些运算 * 和 / 再做一下简化,减少运算量。 再把汇编码 根据不同平台用一些快速的CPU指令优化一下会又有一些提升。 不过无论这种代码上优化的技巧有多高,最终仍然是比不上算法的改进提升的幅度大。 当然算法的改进是最难的。
这人不靠谱 2013-12-28
  • 打赏
  • 举报
回复
引用 5 楼 vipcxj 的回复:
从并行上思考吧,这种东西让GPU来算,速度会提高成百上千倍
试过了并行思考,通过指令#pragma omp parallel for并行执行,可以使程序提高好几倍,
vipcxj 2013-12-28
  • 打赏
  • 举报
回复
从并行上思考吧,这种东西让GPU来算,速度会提高成百上千倍
这人不靠谱 2013-12-27
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
搜"查表法"?
我也看了一些查表法的东西,的确可以提高速度很多,但是我这里好像不太适用,我利用指针对其进行处理,速度可以提高3、4倍,你也提供了一种很好的思路,多谢,
这人不靠谱 2013-12-27
  • 打赏
  • 举报
回复
引用 2 楼 gqjjqg 的回复:
[quote=引用 楼主 u011513563 的回复:] 求各位大神指导,开发环境是opencv,代码执行速度大概是0.7秒左右,这只是对于一帧图片的处理,我处理的是视频流,2秒钟3帧图片,根本就达不到实时性要求,求各位大神指导下,3层for循环的优化,谢谢!! row = 480, col = 640, Histbin = 16
不知道你是要做什么,光从代码上看,把最里面的那重循环优化一下应该就会好了吧。[/quote] 我是做图像处理的,内层函数是一个算法的实现表达式,我对立面的代码进行又花了下,利用指针对图像进行像素点提取,速度可以提高3、4倍以上,不过还是没有达到我的要求,不过我们思路一致,谢谢
gqjjqg 2013-12-26
  • 打赏
  • 举报
回复
引用 楼主 u011513563 的回复:
求各位大神指导,开发环境是opencv,代码执行速度大概是0.7秒左右,这只是对于一帧图片的处理,我处理的是视频流,2秒钟3帧图片,根本就达不到实时性要求,求各位大神指导下,3层for循环的优化,谢谢!! row = 480, col = 640, Histbin = 16
不知道你是要做什么,光从代码上看,把最里面的那重循环优化一下应该就会好了吧。
赵4老师 2013-12-25
  • 打赏
  • 举报
回复
搜"查表法"?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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