Skip to main content

Normalizes the mediapipe pose in 3d space based on body proportions and returns joint angles.

Project description

Mediapipe to Signal

module for processing mediapipe's holistic model for sign languages.

The module allows extracting pure movement features by:

  • It provides pose normalization in 3D space using body proportions
  • It rotates the pose toward the camera
  • Sign movement is presented in a series of signals (directional cosine angles per each joint)
  • Sign movement is easily stored, modified, processed, and generated
  • Sign movement can be processed as a signal or as an image
  • It has a "human-readable" representation for quick analysis and intuition.
  • Simplified data representation speeds up processing and reduces storage.

3D holistic normalization

Converting videos to a series of signals that are easy to read, store, and generate:

3D holistic normalization

Install

pip install mp2signal

Usage

importing the module:

import mp2signal.mp2s as mp2s

Using MediaPipe we process the video and save the normalized signal:

m = mp2s.Movement('path_to_your_signlanguage_video.mp4')

The joint signals can be plotted:

import matplotlib.pyplot as plt

human_redable_posegram = m.posegram(human=True)
print(human_redable_posegram.dtype, human_redable_posegram.shape)
plt.imshow(human_redable_posegram)
plt.show()

for processing, a two-dimensional version is available in uint8 and float:

machine_uint8_posegram = m.posegram(human=False,signal=False)
print(machine_uint8_posegram.dtype, machine_uint8_posegram.shape)
plt.imshow(machine_uint8_posegram,cmap='brg')
plt.show()

machine_float_posegram = m.posegram(human=False,signal=True)
print(machine_float_posegram.dtype, machine_float_posegram.shape)
plt.imshow(machine_float_posegram,cmap='brg')
plt.show()

Storing or Generating Movement Data

Sign Language movement is easy to store and generate in the signal form.

Movement() can be initialized with the stored or generated sample:

import numpy as np
np.save('mov_human.npy',human_redable_posegram)
np.save('mov_uin8.npy',machine_uint8_posegram)
np.save('mov_float.npy',machine_float_posegram)

human_redable = np.load('mov_human.npy')
machine_uint8 = np.load('mov_uin8.npy')
machine_float = np.load('mov_float.npy')

hum_restore = mp2s.Movement(human_redable)
hum_rest_gram = hum_restore.posegram(human=True)
print(hum_rest_gram.dtype)
plt.imshow(hum_rest_gram,cmap='brg')
plt.show()

uin8_restore = mp2s.Movement(machine_uint8)
uin8_rest_gram = uin8_restore.posegram(human=False,signal=False)
print(uin8_rest_gram.dtype)
plt.imshow(uin8_rest_gram,cmap='brg')
plt.show()

float_restore_float = mp2s.Movement(machine_float)
float_rest_gram = float_restore_float.posegram(human=False,signal=True)
print(float_rest_gram.dtype)
plt.imshow(float_rest_gram,cmap='brg')
plt.show()

Signals to Video

You can generate a video with your stored/generated movement signals:

video_out = uin8_restore.make_a_video('video_from_signal.mp4')

Usage with Camera

This script takes input from the web camera and shows rotated and normalized skeleton:

python examples/mp_live_rot_demo.py

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

mp2signal-0.0.2.tar.gz (920.3 kB view details)

Uploaded Source

Built Distribution

mp2signal-0.0.2-py3-none-any.whl (47.8 kB view details)

Uploaded Python 3

File details

Details for the file mp2signal-0.0.2.tar.gz.

File metadata

  • Download URL: mp2signal-0.0.2.tar.gz
  • Upload date:
  • Size: 920.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for mp2signal-0.0.2.tar.gz
Algorithm Hash digest
SHA256 a6141e712ae901afea6501e1c0ff9c8f3f4cc6195c0aab02a712d17cd9851f62
MD5 6634d2edbee26376549aae352a6dee7e
BLAKE2b-256 f024d321cd51d1f326616daf121590a9b67c402a19077e5d2e1c0a81a37bcfcb

See more details on using hashes here.

Provenance

File details

Details for the file mp2signal-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: mp2signal-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 47.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for mp2signal-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 60b03e76e475edde09ff850f4b52e031fa3490d7864268786a63c0dfcf5b431c
MD5 704540e2afb622bbc689b6cb52c38b91
BLAKE2b-256 433b785ac1a40fc979a656e351d69e92f3468c0dcca016b2d932055cc71e0fd3

See more details on using hashes here.

Provenance

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