Skip to main content

Histogram of Gradients in Python from scratch

Project description

HOG_python

Histogram of Gradients in Python from scratch

import sys
from skimage import color, data
import matplotlib.pyplot as plt

from hogpylib.hog import HistogramOfGradients

def main(args=None):
    from skimage.feature import hog

    PIXELS_PER_CELL = (8, 8)
    CELLS_PER_BLOCK = (2, 2)
    NUMBER_OF_BINS = ORIENTATIONS = 9  # NUMBER_OF_BINS
    VISUALISE = True

    orig_img = color.rgb2gray(data.astronaut())
    # orig_img = color.rgb2gray(skimage.io.imread("../data/people.jpg"))
    custom_hog = HistogramOfGradients(pixels_per_cell=PIXELS_PER_CELL,
                                      cells_per_block=CELLS_PER_BLOCK,
                                      num_of_bins=NUMBER_OF_BINS,
                                      visualise=VISUALISE)
    hog_features, hog_image = custom_hog.compute_features(orig_img)

    hog_features_check, hog_image_scikit = hog(orig_img,
                                               orientations=ORIENTATIONS,
                                               pixels_per_cell=PIXELS_PER_CELL,
                                               cells_per_block=CELLS_PER_BLOCK,
                                               block_norm='L2',
                                               visualize=VISUALISE)

    fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(12, 4))

    ax1.axis('off')
    ax2.axis('off')
    ax3.axis('off')

    ax1.imshow(orig_img, cmap=plt.get_cmap('gray'))
    ax1.set_title('Input Image')

    ax2.imshow(hog_image, cmap=plt.get_cmap('gray'))
    ax2.set_title('Custom HOG')

    ax3.imshow(hog_image_scikit, cmap=plt.get_cmap('gray'))
    ax3.set_title('Scikit HOG')
    plt.show()


if __name__ == "__main__":
    sys.exit(main())

Result

References

[1] http://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf

[2] HOG Image rendering

[3] HOG bin distribution

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hogpylib-1.0.2.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hogpylib-1.0.2-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

Details for the file hogpylib-1.0.2.tar.gz.

File metadata

  • Download URL: hogpylib-1.0.2.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for hogpylib-1.0.2.tar.gz
Algorithm Hash digest
SHA256 2cdf784fa44e9d76a6f30c2d20a5f7f26cb94d87cb0963244e7d8fb8f7b5a05d
MD5 ca194f9c28864d9e7a92000c3eb4887d
BLAKE2b-256 8edb44ddae918202811907b4ecfe6e25a5941ec56b8041a6be8083466073bc87

See more details on using hashes here.

File details

Details for the file hogpylib-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: hogpylib-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for hogpylib-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 09eaef6e513c7460e3d85603697e24512dd1d90ba055b894431594ea96dca2a0
MD5 5192e42a7b210470ece7b7f2f7d333da
BLAKE2b-256 e926d07ee79b77868f3fc15d050c40541220f825769e76d4b22f461a43f3d5ec

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page