python计算图像无参考的空间域特征(BRISQUE)_图像特征提取_图像质量评价

scient

scient一个用python实现科学计算相关算法的包,包括自然语言、图像、神经网络、优化算法、机器学习、图计算等模块。

scient源码和编译安装包可以在Python package index获取。

The source code and binary installers for the latest released version are available at the [Python package index].

https://pypi.org/project/scient

可以用pip安装scient

You can install scient like this:

pip install scient

也可以用setup.py安装。

Or in the scient directory, execute:

python setup.py install

scient.image

图像相关算法模块,包括边缘检测、图像相似度计算、图像质量评价、图像特征提取等。

scient.image.feature

图像特征提取模块,包括BRISQUE,基于累积概率的锐化因子(CPB),曝光度。

scient.image.feature.brisque(image)

Parameters

image : numpy.array 2D

Returns

tuple
(‘gdd_α’,‘gdd_σ’,
‘aggd_α1’,‘aggd_η1’,‘aggd_σl1’,‘aggd_σr1’,
‘aggd_α2’,‘aggd_η2’,‘aggd_σl2’,‘aggd_σr2’,
‘aggd_α3’,‘aggd_η3’,‘aggd_σl3’,‘aggd_σr3’,
‘aggd_α4’,‘aggd_η4’,‘aggd_σl4’,‘aggd_σr4’)

Algorithms

BRISQUE(Blind/Referenceless Image Spatial QUality Evaluator),是一种无参考的空间域图像质量评估算法。先计算Mean Subtracted Contrast Normalized Coefficients(MSCN系数),MSCN系数反映了由于失真的存在而改变的特征统计,可以用来作为图像失真的统计特征。再用MSCN系数估计Generalized Gaussian Distribution(GDD)的参数α、σ,以及Asymmetric Generalized Gaussian Distribution(AGGD)在Horizontal Neighbour, Vertical Neighbour, On Diagonal Neighbour, Off Diagonal Neighbour上的参数α、η、σl、σr,将GDD的两个参数和AGGD的16个参数作为输出的特征。

MSCN系数:

M S C N ( i , j ) = I ( i , j ) − μ ( i , j ) σ ( i , j ) + C μ ( i , j ) = ∑ k = − K K ∑ l = − L L w k , l I k , l ( i , j ) σ ( i , j ) = ∑ k = − K K ∑ l = − L L w k , l ( I k , l ( i , j ) − μ ( i , j ) ) 2 MSCN(i,j)=\frac { I(i,j)-μ(i,j) } { σ(i,j)+C } \\ μ(i,j)=\sum^{K}_{k=-K}{\sum^{L}_{l=-L}{w_{k,l}I_{k,l}(i,j)}} \\ σ(i,j)=\sqrt{\sum^{K}_{k=-K}{\sum^{L}_{l=-L}{w_{k,l}(I_{k,l}(i,j)-μ(i,j))^2}}} MSCN(i,j)=σ(i,j)+CI(i,j)μ(i,j)μ(i,j)=k=KKl=LLwk,lIk,l(i,j)σ(i,j)=k=KKl=LLwk,l(Ik,l(i,j)μ(i,j))2

其中 I ( i , j ) I(i,j) I(i,j)表示原始图像i行j列元素的值。

Generalized Gaussian Distribution:

f ( x ; α , σ 2 ) = α 2 β Γ ( 1 / α ) e − ( ∣ x ∣ β ) α β = σ Γ ( 1 / α ) Γ ( 3 / α ) Γ ( α ) = ∫ 0 ∞ t α − 1 e − t d t α > 0 f(x;α,σ^2)=\frac {α} {2βΓ(1/α)} e^{-(\frac {|x|}{β})^α} \\ β=σ\sqrt{\frac{Γ(1/α)}{Γ(3/α)}} \\ Γ(α)=\int^{\infty}_{0}{t^{α-1}e^{-t}dt} α>0 f(x;α,σ2)=2βΓ(1/α)αe(βx)αβ=σΓ(3/α)Γ(1/α) Γ(α)=0tα1etdtα>0

Neighbours:

H o r i z o n t a l N e i g h b o u r ( i , j ) = M S C N ( i , j ) M S C N ( i , j + 1 ) V e r t i c a l N e i g h b o u r ( i , j ) = M S C N ( i , j ) M S C N ( i + 1 , j ) O n D i a g o n a l N e i g h b o u r ( i , j ) = M S C N ( i , j ) M S C N ( i + 1 , j + 1 ) O f f D i a g o n a l N e i g h b o u r ( i , j ) = M S C N ( i , j ) M S C N ( i + 1 , j − 1 ) HorizontalNeighbour(i,j)=MSCN(i,j)MSCN(i,j+1) \\ VerticalNeighbour(i,j)=MSCN(i,j)MSCN(i+1,j) \\ OnDiagonalNeighbour(i,j)=MSCN(i,j)MSCN(i+1,j+1) \\ OffDiagonalNeighbour(i,j)=MSCN(i,j)MSCN(i+1,j-1) HorizontalNeighbour(i,j)=MSCN(i,j)MSCN(i,j+1)VerticalNeighbour(i,j)=MSCN(i,j)MSCN(i+1,j)OnDiagonalNeighbour(i,j)=MSCN(i,j)MSCN(i+1,j+1)OffDiagonalNeighbour(i,j)=MSCN(i,j)MSCN(i+1,j1)

Asymmetric Generalized Gaussian Distribution:

f ( x ; α , σ l 2 , σ r 2 ) = α ( β l + β r ) Γ ( 1 / α ) e − ( − x β l ) α x < 0 α ( β l + β r ) Γ ( 1 / α ) e − ( x β r ) α x > = 0 β l = σ l Γ ( 1 / α ) Γ ( 3 / α ) β r = σ r Γ ( 1 / α ) Γ ( 3 / α ) f(x;α,σ_l^2,σ_r^2)= \frac {α}{(β_l+β_r)Γ(1/α)}e^{-(\frac {-x}{β_l})^α} x<0 \frac {α}{(β_l+β_r)Γ(1/α)}e^{-(\frac {x}{β_r})^α} x>=0 β_l=σ_l\sqrt{\frac{Γ(1/α)}{Γ(3/α)}} \\ β_r=σ_r\sqrt{\frac{Γ(1/α)}{Γ(3/α)}} f(x;α,σl2,σr2)=(βl+βr)Γ(1/α)αe(βlx)αx<0(βl+βr)Γ(1/α)αe(βrx)αx>=0βl=σlΓ(3/α)Γ(1/α) βr=σrΓ(3/α)Γ(1/α)

Examples

import os
from scient.image import feature
import numpy
from PIL import Image

images=['test/data/I10.BMP','test/data/i10_23_3.bmp','test/data/i10_23_4.bmp','test/data/i10_23_5.bmp','test/data/i10_24_5.bmp']

#读取图像文件
images=[Image.open(os.path.join(os.path.dirname(feature.__file__),'..',i)) for i in images]

#计算brisque
brisques=[]
for i in images:
    brisques.append(feature.brisque(numpy.array(i.convert('L'))))
print(brisques)

运行结果

[(2.8390000000000026, 0.5387382509471336, 0.8180000000000005, 0.1597336483186561, 0.19928197982139934, 0.4696747920784309, 0.8640000000000005, 0.17081167501931036, 0.1703080506100513, 0.440894038756712, 0.8610000000000007, -0.002437981115828319, 0.2983089768677447, 0.2943996123553127, 0.8670000000000007, 0.03657370089459203, 0.2641503963750437, 0.32229688865209727), (2.179000000000002, 0.3755805588864052, 0.6610000000000005, 0.2105638785869636, 0.06573065885425396, 0.3546433105372317, 0.7250000000000005, 0.2035633011201771, 0.04895566298941261, 0.2895746994148656, 0.7110000000000005, 0.09196294223642214, 0.10660221933416321, 0.22150476223116147, 0.7220000000000004, 0.10061626044729756, 0.09951649928883519, 0.22307536755643081), (1.489000000000001, 0.19567592119387475, 0.4370000000000002, 0.16656579278574843, 0.005144811587270607, 0.1595102390164801, 0.4400000000000002, 0.14819323960693676, 0.007946536338563829, 0.14400949152877282, 0.46900000000000025, 0.1304195444573072, 0.010840852166168865, 0.12285748598680354, 0.47300000000000025, 0.12785146234621667, 0.011051488263507676, 0.11939877242752284), (1.2570000000000008, 0.1189807661854071, 0.2940000000000001, 0.09858069094224381, 0.0033503171775502846, 0.1003980673321924, 0.2960000000000001, 0.09662228540309649, 0.0037953392707882772, 0.09854664422093222, 0.3160000000000001, 0.08840261656054116, 0.004225987220008733, 0.08029184471742051, 0.3180000000000001, 0.08631426420092875, 0.004399447310061135, 0.07751730107145516), (1.203000000000001, 0.14103130545847511, 0.3270000000000001, 0.10623288442963101, 0.008919473174326557, 0.12226537626029133, 0.3280000000000001, 0.06853644417080812, 0.02378947796849877, 0.10143999168472712, 0.33900000000000013, 0.05689116726400874, 0.02385946076111514, 0.08256978072093775, 0.33900000000000013, 0.05450324427873719, 0.02492368706293601, 0.0813272014967197)]
  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值