使用问题中提到的技术,我提出了几个不同的版本。
每个方法都返回一个close值,但与其他方法不完全相同。另外,除了最后一种方法外,所有方法都以相同的速度运行,这取决于图像大小,速度要慢得多。
将图像转换为灰度,返回平均像素亮度。
def brightness( im_file ):
im = Image.open(im_file).convert(‘L’)
stat = ImageStat.Stat(im)
return stat.mean[0]将图像转换为灰度,返回RMS像素亮度。
def brightness( im_file ):
im = Image.open(im_file).convert(‘L’)
stat = ImageStat.Stat(im)
return stat.rms[0]平均像素,然后转换为“感知的亮度”。
def brightness( im_file ):
im = Image.open(im_file)
stat = ImageStat.Stat(im)
r,g,b = stat.mean
return math.sqrt(0.241(r2) + 0.691(g2) + 0.068*(b2))像素的RMS,然后转换为“感知的亮度”。
def brightness( im_file ):
im = Image.open(im_file)
stat = ImageStat.Stat(im)
r,g,b = stat.rms
return math.sqrt(0.241(r2) + 0.691(g2) + 0.068*(b2))计算像素的“感知亮度”,然后返回平均值。
def brightness( im_file ):
im = Image.open(im_file)
stat = ImageStat.Stat(im)
gs = (math.sqrt(0.241(r2) + 0.691(g2) + 0.068*(b2))
for r,g,b in im.getdata())
return sum(gs)/stat.count[0]
更新测试结果
我对200张图像进行了仿真。我发现方法#2,#4给出几乎相同的结果。方法#3,#5也几乎相同。方法#1紧跟在方法#3,#5之后(有一些例外)。



