All Projects → charlesCXK → Depth2HHA-python

charlesCXK / Depth2HHA-python

Licence: MIT license
Use python3 to convert depth image into hha image

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Depth2HHA-python

OpenCVB
OpenCV .Net application supporting several RGBD cameras - Kinect, Intel RealSense, Luxonis Oak-D, Mynt Eye D 1000, and StereoLabs ZED 2
Stars: ✭ 60 (-51.61%)
Mutual labels:  depth-image
deep learning
Deep-learning approaches to object recognition from 3D data
Stars: ✭ 19 (-84.68%)
Mutual labels:  depth-image
OMG Depth Fusion
Probabilistic depth fusion based on Optimal Mixture of Gaussians for depth cameras
Stars: ✭ 52 (-58.06%)
Mutual labels:  depth-image
arkit-depth-renderer
Displays the depth values received by the front-facing camera.
Stars: ✭ 48 (-61.29%)
Mutual labels:  depth-image

Depth2HHA-python

News

  • [July 20 2021] We have optimized the code and the running speed is much faster. Thank hongfz16 for his useful suggestions.

Introduction

This repo implements HHA-encoding algorithm in python3. HHA image is an encoding algorithm to make better use of depth images, which was proposed by s-gupta in this paper: Learning Rich Features from RGB-D Images for Object Detection and Segmentation. This algorithm was implemented in MATLAB initially, and I organized a MATLAB version of the code: Depth2HHA-MATLAB. In this repo, I use python3 to get exactly the same result as what MATLAB code does.


All we need is:

  1. A depth image
  2. A raw-depth image (Option)
  3. Camera matrix

If you are confused about depth images or you don't have depth images, please refer to NYU Depth V2 dataset.


Usage

I already provide an interface in getHHA.py. The function is named getHHA(C, D, RD). To be detailed, it needs a camera matrix C, a depth image D and a raw depth image RD. RD is used to generate a mask to mark missing information, so it is ok to use getHHA(C, D, D) if you don't have a raw depth image or you just want to do so.

D = cv2.imread(os.path.join(root, '0.png'), cv2.COLOR_BGR2GRAY)/10000
RD = cv2.imread(os.path.join(root, '0_raw.png'), cv2.COLOR_BGR2GRAY)/10000
camera_matrix = getCameraParam('color')
hha = getHHA(camera_matrix, D, RD)

Tips

  1. I recommend you to use cv2.COLOR_BGR2GRAY instead of cv2.IMREAD_GRAYSCALE to read in the gray image D. If you use cv2.COLOR_BGR2GRAY, you will get exactly the same gray values as MATLAB's imread function does. If you use cv2.IMREAD_GRAYSCALE, you won't.
  2. The depth image array passed to function getHHA should in 'meter'. So in my demo code, I divide it with 10000 to modify the unit.
  3. Camera matrix C is a 3*3 matrix.

Results

Pictures below are visualizations of:

D:

RD:

HHA from MATLAB:

HHA using D and RD:

HHA using D and D:


Citation

If you find this project useful in your research, please consider cite:

@misc{Depth2HHA-python,
    title={{Depth2HHA-python}: Converting depth maps to HHA encodings},
    author={Xiaokang Chen},
    howpublished = {\url{https://github.com/charlesCXK/Depth2HHA-python}},
    year={2018}
}

TODO

  • Parallel processing
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].