Python中文
首页
教程
问答
标签
搜索
登录
注册
关闭“查找”
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>最近我写了一个RGB图像量化的算法。每个像素由一个(R,G,B)矢量表示,量化码书是一对三维矢量。图像的每一个像素都需要映射到(例如,“替换为”)在欧几里得距离(更确切地说,平方欧几里德)方面最接近的码本像素。 我这样做了:</p> <pre><code>class EuclideanMetric(DistanceMetric): def __call__(self, x, y): d = x - y return sqrt(sum(d * d, -1)) class Quantizer(object): def __init__(self, codebook, distanceMetric = EuclideanMetric()): self._codebook = codebook self._distMetric = distanceMetric def quantize(self, imageArray): quantizedRaster = zeros(imageArray.shape) X = quantizedRaster.shape[0] Y = quantizedRaster.shape[1] for i in xrange(0, X): print i for j in xrange(0, Y): dist = self._distMetric(imageArray[i,j], self._codebook) code = argmin(dist) quantizedRaster[i,j] = self._codebook[code] return quantizedRaster </code></pre> <p>…而且它的工作非常出色,在我的奔腾酷睿2.2GHz、4Gig内存和2600*2700像素的图像上运行了将近800秒:(</p> <p>有没有什么方法可以稍微优化一下呢?可能是另一种算法或一些特定于Python的优化。在</p> <p><em>UPD</em>:我试着用欧几里得的平方,但还是得到了大量的时间。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您可以使用<a href="http://docs.scipy.org/doc/scipy/reference/cluster.vq.html#scipy.cluster.vq.vq" rel="nofollow noreferrer">^{<cd2>}</a>中的矢量量化函数<code>vq</code>。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
3 回答
如何在乒乓球游戏中阻止球
7 回答
如何在乘法和模中不乘空间?
7 回答
如何在乘法和除以2个不同的数字之间进行交换?
6 回答
如何在也是数据一部分的单个字符上拆分大字符串
6 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
2 回答
如何在事件wxWidgets中传递自定义数据
9 回答
如何在事件中使用lambda i=i?
10 回答
如何在事件中心只接收最近的数据
5 回答
如何在事件发生之前保持云函数运行?
10 回答
如何在事件发生后使页面重定向到同一页面
7 回答
如何在事件回调之间保持python生成器的状态
7 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
6 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
2 回答
如何在事件处理程序中访问外部对象?
6 回答
如何在事件循环中将协程打包为正常函数?
8 回答
如何在事件循环之外运行协同程序?
5 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
8 回答
如何在事件文件中只保留一份摘要?
9 回答
如何在事件模板中添加事件
10 回答