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=−K∑Kl=−L∑Lwk,lIk,l(i,j)σ(i,j)=k=−K∑Kl=−L∑Lwk,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/α)Γ(α)=∫0∞tα−1e−tdtα>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,j−1)
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−(βl−x)α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)]