文号
t35836
阅读
21237
回复
12
收藏
7
头疼,两个大数组寻找近似值的问题,求助
2011/08/23
IP:澳大利亚
其实还是图片处理的问题,有两个图片,一个16000像素,一个9000像素,9000像素的图片里面大部分像素是来源于16000像素图片的一部分,不一定是完全相同,可能一些像素的rgb差会在20以内。
目的是在9000像素图片里把和16000像素里面任何一个像素近似的像素变成纯白色(255,255,255),我现在用的算法是最垃圾型,把两个图片的所有像素都变成数组,然后循环两个数组里面的每一个像素,通过函数判断是否近似,是的话就变白。
说白了就是:
9000像素图片=数组a
16000像素图片=数组b

用数组a的第一个像素和数组b的每一个像素对比近似值
用数组a的第二个像素和数组b的每一个像素对比近似值
.
.
.
一直到第9000个像素
总循环数9000*16000=144000000
处理时间……python下加了psyco加速器单线程用了4分多钟,cpu i7 920 3.8Ghz,内存6g DDR3 1448Mhz

这样虽说速度慢,但是效果很好,基本能把所有相同像素都去掉,我也想过用平均值的方法,但是效果不够好。求算法优化……最好能把时间缩到3秒以内,9000个循环基本用不到2秒。
AnthraX作者
15年4个月前IP:未同步
318005
1楼
现在去除了16000数组里面的相同值,剩下差不多10000个数据
引用
评论
AnthraX作者
15年4个月前IP:未同步
318110
4楼
引用第3楼我说要有光于2011-08-23 23:16发表的  :
并行的话用CUDA试试看?

主要问题是要优化算法……而且我用python= =哪来的cuda
引用
评论
AnthraX作者
15年4个月前IP:未同步
318671
8楼
搞定了,先把大图缩成60x20了,然后扩大像素近似值的搜索范围,然后加上8线程同时执行,0.5秒
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的