Python中计算图像亮度

Python中计算图像亮度的方法

PS:转载+翻译(有侵权告诉我,立马删除),为了自己记录;

以下几个方法每个方法都返回一个相近值,但与其他方法不完全相同。另外,除了最后一个方法,所有方法的运行速度都差不多,最后一个方法的运行速度要慢得多,这取决于图像的大小
对200幅图像进行了模拟测试。发现方法2和方法4给出了几乎相同的结果。方法3和方法5也几乎相同。方法1紧随方法3和方法5之后(有一些例外)。

  1. 转换图像到灰度,返回平均像素亮度:
def brightness( im_file ):
   im = Image.open(im_file).convert('L')
   stat = ImageStat.Stat(im)
   return stat.mean[0]
  1. 转换图像到灰度,返回RMS像素亮度:
def brightness( im_file ):
   im = Image.open(im_file).convert('L')
   stat = ImageStat.Stat(im)
   return stat.rms[0]
  1. 平均像素,然后转换为“可感知的亮度”:
def brightness( im_file ):
   im = Image.open(im_file)
   stat = ImageStat.Stat(im)
   r,g,b = stat.mean
   return math.sqrt(0.241*(r**2) + 0.691*(g**2) + 0.068*(b**2))
  1. 像素的均方根,然后转换为“感知亮度”:
def brightness( im_file ):
   im = Image.open(im_file)
   stat = ImageStat.Stat(im)
   r,g,b = stat.rms
   return math.sqrt(0.241*(r**2) + 0.691*(g**2) + 0.068*(b**2))

5 计算像素的“感知亮度”,然后返回平均值:

def brightness( im_file ):
   im = Image.open(im_file)
   stat = ImageStat.Stat(im)
   gs = (math.sqrt(0.241*(r**2) + 0.691*(g**2) + 0.068*(b**2)) 
         for r,g,b in im.getdata())
   return sum(gs)/stat.count[0]

我叫谢琛,深度学习探索者一枚!(有意咨询xiec177)
tensorflow/pytorch交流群请加QQ:548368797
更多咨询咨询请关注!在这里插入图片描述

  • 15
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值