#!/usr/bin/python # -*- coding: utf-8 -*- # """ Calculate raw, central and Hu's set of image moments. Name: image_moments.py Author: Alessandro dos Santos Ferreira ( santosferreira.alessandro@gmail.com ) """ from skimage import measure from util.utils import ImageUtils from extractor import Extractor class ImageMoments(Extractor): def __init__(self): self._moments_order = [(0, 1), (1, 0), (1, 1), (0, 2), (2, 0)] def run(self, image): image_grayscale = ImageUtils.image_grayscale(image, bgr = True) m = measure.moments(image_grayscale) values_m = [m[p, q] for (p, q) in self._moments_order] labels_m = [M+str(p)+str(q) for M,(p,q) in zip(['M_'] * len(self._moments_order), self._moments_order)] row = m[0, 1] / m[0, 0] col = m[1, 0] / m[0, 0] mu = measure.moments_central(image_grayscale, row, col) values_mu = [mu[p, q] for (p, q) in self._moments_order] labels_mu = [M+str(p)+str(q) for M,(p,q) in zip(['Mu_'] * len(self._moments_order), self._moments_order)] nu = measure.moments_normalized(mu) hu = measure.moments_hu(nu) values_hu = list(hu) labels_hu = [m+n for m,n in zip(['Hu_'] * len(values_hu),map(str,range(0,len(values_hu))))] labels = labels_m + labels_mu + labels_hu types = [Extractor.NUMERIC] * len(labels) values = values_m + values_mu + values_hu return labels, types, values