Hydraulic tortuosity is an important parameter in characterizing fluid-flow heterogeneity in porous media. The most basic definition of tortuosity is the ratio of the average flow path length to the sample length. Although this definition seems straightforward, the lack of understanding and the lack of proper ways to measure tortuosity make it one of the most abused parameters in rock physics. Hydraulic tortuosity is often treated merely as a fitting factor, or worse, it is neglected by being combined with a geometric factor in the Kozeny-Carman (KC) equation. Often, the tortuosity is obtained from laboratory measurements of porosity, permeability, and specific surface area by inverting the KC equation. This approach has a major pitfall because it treats tortuosity as a fitting factor, and the inverted tortuosity is often unphysically high. In contrast, we obtained the tortuosity from 3D segmented binary images of porous media using streamlines extracted from a local flux, the output from the lattice Boltzmann method (LBM) flow simulation. After obtaining streamlines from each sample, we calculated the distribution of tortuosities and flux-weighted average tortuosity. With the tortuosity measurement from streamlines, every parameter in the KC equation can be measured accurately from 3D segmented binary images. We found, however, that the KC equation is still missing some important geometric information needed to predict permeability. With known parameters and without a fitting factor, the KC equation predicts permeability higher by one to two orders of magnitude than that predicted by the LBM. We searched for a missing parameter by exploring various concepts such as connected pore space and pore throat distribution. We found that the connected pore space does not contribute to the difference between the KC permeability and LBM permeability, whereas, as we learn with sinusoidal pipe examples, the pore throat distribution captures what is missing from the KC equation.