Matlab demonstration of an algorithm for interpolating distance-dependent (near-field) head-related transfer functions (HRTFs).
The interpolation is performed using barycentric weights of 4 HRTF measurements forming a tetrahedron that encloses the desired source position.
The main steps of the interpolation algorithm are:
1) Initialisation: organise HRTF measurement positions in tetrahedral mesh via Delaunay triangulation and generate an octree;
2) Source update: find a tetrahedron that encloses the desired source position (via brute-force search, or via adjacency walk with/without octree lookup);
3) Interpolation: calculate barycentric weights for linear interpolation of HRTF measurements at the vertices of the tetrahedron selected in 2)
Reference:
Gamper, H. (2013). "Head-related transfer function interpolation in azimuth, elevation, and distance", Journal of the Acoustical Society of America 134(6), JASA EL547-EL554. Available online: http://link.aip.org/link/?JAS/134/EL547/1
1.5.0.0 | fixed call to Delaunay to support earlier Matlab versions ( < 2009b) |
|
1.4.0.0 | removed tilde placeholders in function output calls for backward compatibility with Matlab versions earlier than 2009b |
|
1.3.0.0 | updated reference and link to JASA article |
|
1.2.0.0 | Tags, comments |
|
1.1.0.0 | Added comments and references. |
Inspired by: octree - partitioning 3D points into spatial subvolumes
Create scripts with code, output, and formatted text in a single executable document.
Jinkyu Lee (view profile)
Wen Qin (view profile)
farhan saari (view profile)
how to use this coding if i already have point cloud data set.?? for example sphere data set..
Archontis Politis (view profile)
Excellent demonstration of the algorithm!