Use the delineated crowns to locate the maximum from the original CHM, not the kernel area.
Suggest that this be done by iterating over the crown raster and maintaining a dictionary of the maximum pixel value encountered with a given crown ID.
Optionally, use the crown raster to locate max heights in the point cloud itself. This provides a more precise location for the tree top.
Use the delineated crowns to locate the maximum from the original CHM, not the kernel area.