Skip to content

Collonville/ImageFeatureExtractor

Repository files navigation

Image Feature Extractor(IFE)

Coverage Status Build Status Codacy Badge PyPI version

What is this

IFE is a package to get an image feature more easily for Python. It contains many kinds of feature extract algorithms.

Insatall

For the latest version are available using pip install.

pip install ife

1. Features

Color Moment

  • Mean, Median, Variance, Skewness, Kurtosis of RGB, HSV, HSL, CMY

Colourfulness

  • Colourfulness measure of the image

2. Examples

Import the basic image reader of IFE.

from ife.io.io import ImageReader

2.1 Get Moment

Add a image file path to read_from_single_file(). This will return basic features class.

And now! You can get a RGB color moment feature from image!!

Sample

>>> features = ImageReader.read_from_single_file("ife/data/small_rgb.jpg")
>>> features.moment()
array([[ 0.57745098,  0.52156863,  0.55980392],
       [ 0.58823529,  0.48823529,  0.54901961],
       [ 0.15220588,  0.12136101,  0.12380911],
       [-0.01944425,  0.18416571,  0.04508015],
       [-1.94196824, -1.55209335, -1.75586748]])

Also, you can get an flatten vector, dictionary, or pandas

>>> features.moment(output_type="one_col")
array([ 0.57745098,  0.52156863,  0.55980392,  0.58823529,  0.48823529,
        0.54901961,  0.15220588,  0.12136101,  0.12380911, -0.01944425,
        0.18416571,  0.04508015, -1.94196824, -1.55209335, -1.75586748])

>>> features.moment(output_type="dict")
defaultdict(<class 'dict'>, {'mean': {'R': 0.57745098039215681, 'G': 0.52156862745098043, 'B': 0.55980392156862746}, 'median': {'R': 0.58823529411764708, 'G': 0.48823529411764705, 'B': 0.5490196078431373}, 'var': {'R': 0.15220588235294119, 'G': 0.12136101499423299, 'B': 0.12380911188004615}, 'skew': {'R': -0.019444250980856902, 'G': 0.18416570783012232, 'B': 0.045080152334687214}, 'kurtosis': {'R': -1.9419682406751135, 'G': -1.5520933544103905, 'B': -1.7558674751807395}})

>>> features.moment(output_type="pandas")
       mean    median       var      skew  kurtosis
R  0.577451  0.588235  0.152206 -0.019444 -1.941968
G  0.521569  0.488235  0.121361  0.184166 -1.552093
B  0.559804  0.549020  0.123809  0.045080 -1.755867

No! I want a HSV Color space feature :(

It can set another color space! Default will be RGB.

>>> features.moment(output_type="one_col", color_space="CMY")
array([ 0.42254902,  0.47843137,  0.44019608,  0.41176471,  0.51176471,
        0.45098039,  0.15220588,  0.12136101,  0.12380911,  0.01944425,
       -0.18416571, -0.04508015, -1.94196824, -1.55209335, -1.75586748])
       
>>> features.moment(output_type="dict", color_space="HSL")
defaultdict(<class 'dict'>, {'mean': {'H': 0.50798329143793874, 'S': 0.52775831413836383, 'L': 0.61421568627450984}, 'median': {'H': 0.51915637553935423, 'S': 0.62898601603182969, 'L': 0.52156862745098043}, 'var': {'H': 0.13290200013401141, 'S': 0.10239897927552907, 'L': 0.051550124951941563}, 'skew': {'H': -0.078898095002588917, 'S': -0.83203104238315984, 'L': 1.0202366337483093}, 'kurtosis': {'H': -1.2599104562470791, 'S': -0.87111810912637022, 'L': -0.7502836585891588}})

>>> features.moment(output_type="pandas", color_space="HSV")
       mean    median       var      skew  kurtosis
H  0.507983  0.519156  0.132902 -0.078898 -1.259910
S  0.595236  0.749543  0.122723 -1.028366 -0.768867
V  0.855882  0.864706  0.013867 -0.155656 -1.498179

2.2 Colourfulness

Reference

D. Hasler and S.E.Suesstrunk, ``Measuring colorfulness in natural images," Human Vision andElectronicImagingVIII, Proceedings of the SPIE, 5007:87-95, 2003.

Sample

>>> features = ImageReader.read_from_single_file("ife/data/strawberry.jpg")
>>> features.colourfulness()
0.18441700366624714

3. Future work

IO

  • Read from URL links
  • Read from Base64
  • Sliding window
  • Video files

Color space

  • CMYK
  • CIE Lab
  • XYZ

Features

  • Value normalize
  • Average Gradient
  • LBP
  • Histogram
  • Color harmony
  • Entropy
  • Brightness measure
  • Contrast measure
  • Saturation measure
  • Naturalness
  • Color fidelity metric
  • Saliency map
  • Fisher vector
  • VGG16, 19 layer feature
  • and more...

4. Author

@Collonville

5. Licence

BSD-3-Clause