首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Bradley-Roth自适应阈值算法-如何获得更好的性能?

Bradley-Roth自适应阈值算法-如何获得更好的性能?
EN

Stack Overflow用户
提问于 2015-10-13 07:23:51
回答 2查看 2.5K关注 0票数 6

我有以下图像阈值处理代码,使用Bradley-Roth图像阈值方法。

代码语言:javascript
复制
from PIL import Image
import copy
import time
def bradley_threshold(image, threshold=75, windowsize=5):
    ws = windowsize
    image2 = copy.copy(image).convert('L')
    w, h = image.size
    l = image.convert('L').load()
    l2 = image2.load()
    threshold /= 100.0
    for y in xrange(h):
        for x in xrange(w):
            #find neighboring pixels
            neighbors =[(x+x2,y+y2) for x2 in xrange(-ws,ws) for y2 in xrange(-ws, ws) if x+x2>0 and x+x2<w and y+y2>0 and y+y2<h]
            #mean of all neighboring pixels
            mean = sum([l[a,b] for a,b in neighbors])/len(neighbors)
            if l[x, y] < threshold*mean:
                l2[x,y] = 0
            else:
                l2[x,y] = 255
    return image2

i = Image.open('test.jpg')
windowsize = 5
bradley_threshold(i, 75, windowsize).show()

windowsize较小且图像较小时,此方法工作得很好。我一直在使用这张图片进行测试:

当使用窗口大小为5的时候,我遇到了大约5到6秒的处理时间,但是如果我将窗口大小增加到20,并且算法在每个方向上检查20个像素的平均值,我就会得到该图像的时间超过1分钟。

如果我使用一个大小为2592x1936的图像,而窗口大小仅为5,则需要近10分钟才能完成。

那么,我该如何改善这些时间呢?numpy数组会更快吗?im.getpixel是否比将图像加载到像素访问模式更快?有没有其他的提速小贴士?提前谢谢。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33091755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档