Skip to main content

light-field-distance is a BSD-licensed package for calculating Light Field Distance from two Wavefront OBJ meshes using OpenGL

Project description

Original repo: link

Note

The code was converted to be able to use LFD metric (distance between two descriptors) that will compare visual appearance between ground truth mesh and retrieved mesh.

This fork

The original repository was adapted partially to run on Linux. Only LightField was changed so it can be used through docker without any dependency. Underneath, the container uses OSMesa for headless rendering.

Requirements

  • pip install trimesh

Installation

pip install light-field-distance

or

python setup.py install

No need to explicitly install anything.

Usage

from lfd import LightFieldDistance
import trimesh

# rest of code
mesh_1: trimesh.Trimesh = ...
mesh_2: trimesh.Trimesh = ...

lfd_value: float = LightFieldDistance(verbose=True).get_distance(
    mesh_1.vertices, mesh_1.faces,
    mesh_2.vertices, mesh_2.faces
)

The script will calculate light field distances [1] between two shapes. Example usage:

from lfd import LightFieldDistance
import trimesh

# rest of code
mesh_1: trimesh.Trimesh = trimesh.load("examples/cup1.obj")
mesh_2: trimesh.Trimesh = trimesh.load("examples/airplane.obj")

lfd_value: float = LightFieldDistance(verbose=True).get_distance(
    mesh_1.vertices, mesh_1.faces,
    mesh_2.vertices, mesh_2.faces
)

The lower the metric’s value, the more similar shapes are in terms of the visual appearance

How does it work

The lfd.py is a proxy for the container that install all the dependency necessary to run a C code. The code performs calculation of Zernike moments and other coefficients that are necessary to calculate the distance (3DAlignment program). Then, these coefficients are saved and run by the Distance program that calculated the Light Field Distance. It prints out the result and the stdout from the printing is handled by the python script.

If an image for the C code is not found, it builds one. The operation is performed once and it takes a while to finish it. After that, the script runs the necessary computations transparently.

Contribution

For anyone interested in having a contribution, these are things to be done. Due to the time constraints, I’m not able to do these on my own:

  • [ ] retrieve calculating coefficients from renders to be returned by a method

  • [ ] bind C code with pybind11 to allow direct computation from the python code

    without any Docker dependency

How am I sure that it works as supposed?

I checked descriptor artifacts from the original implementation and compared with results in the docker through md5sum

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

light-field-distance-0.0.9.tar.gz (354.6 kB view details)

Uploaded Source

Built Distribution

light_field_distance-0.0.9-py3-none-any.whl (535.0 kB view details)

Uploaded Python 3

File details

Details for the file light-field-distance-0.0.9.tar.gz.

File metadata

  • Download URL: light-field-distance-0.0.9.tar.gz
  • Upload date:
  • Size: 354.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.2.post20191201 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.3

File hashes

Hashes for light-field-distance-0.0.9.tar.gz
Algorithm Hash digest
SHA256 e552d62c6d96f95be6352cf30748597dcdbdc17dd5e45a17d90e899c40a45d90
MD5 23bcc1d4dd21a30adbb8f5676ebb3403
BLAKE2b-256 9bcc8c3cab08dea9320a29a9501f1a09d451a550e221b83487c7e4c36652da7a

See more details on using hashes here.

File details

Details for the file light_field_distance-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: light_field_distance-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 535.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.2.post20191201 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.3

File hashes

Hashes for light_field_distance-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 8ec3f4f086872a5ac2f4b1c1a8e6021fd823e69e1a0cf8feb8d146272759a7f5
MD5 e1d33c55754fa7f61b9c960abb5c93af
BLAKE2b-256 76ecbfc66203269b001b5bb42224c815135ad5f96aaf85add2ea31e85f1d358d

See more details on using hashes here.

Supported by

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