You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[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:
A depth image
A raw-depth image (Option)
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.
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.
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.
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: